{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./source/assets/icons/FT_calendar.svg","webpack:///./source/assets/icons/FT_twitter.svg","webpack:///./source/assets/icons/FT_arrows_carousel_left.svg","webpack:///./source/assets/icons/FT_arrow_pag_left.svg","webpack:///./source/assets/icons/FT_walk.svg","webpack:///./source/assets/icons/FT_Checkmark.svg","webpack:///./source/assets/icons/FT_arrow_small_up.svg","webpack:///./source/utils/image-loader.js","webpack:///./source/components/travel-planner/constants.js","webpack:///./source/utils/misc.js","webpack:///./source/assets/icons/chat-icon.svg","webpack:///./source/assets/icons/FT_arrow_change_month_left.svg","webpack:///./source/assets/icons/FT_arrow_change_month_right.svg","webpack:///./source/assets/icons/collapse-icon.svg","webpack:///./source/assets/icons/FT_download.svg","webpack:///./source/assets/icons/arrow-icon.svg","webpack:///./source/assets/icons/FT_close_mob.svg","webpack:///./source/assets/icons/FT_hamburger_icon.svg","webpack:///./source/assets/icons/search.svg","webpack:///./source/assets/icons/FT_quotemark.svg","webpack:///./source/assets/icons/FT_arrows_switch.svg","webpack:///./source/assets/icons/checkmark_orange.svg","webpack:///./source/app.components.js-exposed","webpack:///./source/components/react-datepicker/date_input.js","webpack:///./source/components/react-datepicker/calendar.js","webpack:///./source/components/react-datepicker/year_dropdown.js","webpack:///./source/components/react-datepicker/year_dropdown_options.js","webpack:///./source/components/react-datepicker/month_dropdown.js","webpack:///./source/components/react-datepicker/month_dropdown_options.js","webpack:///./source/components/react-datepicker/month.js","webpack:///./source/components/react-datepicker/week.js","webpack:///./source/components/react-datepicker/day.js","webpack:///./source/components/react-datepicker/week_number.js","webpack:///./source/components/react-datepicker/tether_component.js","webpack:///./source/hooks/use-event.js","webpack:///./source/components/link/link.jsx","webpack:///./source/utils/url-utils.js","webpack:///./source/components/breadcrumbs/breadcrumbs.jsx","webpack:///./source/components/menu-link/menu-link.jsx","webpack:///./source/components/buy-tickets-link/buy-tickets-link.jsx","webpack:///./source/components/cart-total-amount/cart-total-amount.jsx","webpack:///./source/components/chat-button/chat-button.jsx","webpack:///./source/components/contact-block/contact-block.jsx","webpack:///./source/components/content-area/content-area.jsx","webpack:///./source/components/react-datepicker/react-datepicker.jsx","webpack:///./source/components/date-picker-wrapper/date-picker-wrapper.jsx","webpack:///./source/components/emergency-block/emergency-block.jsx","webpack:///./source/components/error-block/error-block.jsx","webpack:///./source/components/fact-block/fact-block.jsx","webpack:///./source/constants/image-type.js","webpack:///./source/components/image/image.jsx","webpack:///./source/constants/block-type.js","webpack:///./source/components/feature-block/feature-block.jsx","webpack:///./source/components/file-list-block/file-list-block.jsx","webpack:///./source/components/footer-link-list/footer-link-list.jsx","webpack:///./source/components/footer-text-block/footer-text-block.jsx","webpack:///./source/components/footer-block/footer-block.jsx","webpack:///./source/components/gridded-block/gridded-block.jsx","webpack:///./source/components/highlight-block/highlight-block.jsx","webpack:///./source/components/highlight-blocks/highlight-blocks.jsx","webpack:///./source/components/icon/icon.jsx","webpack:///./source/components/image-gallery-block/image-gallery-block.jsx","webpack:///./source/components/image-list-block/image-list-block.jsx","webpack:///./source/components/language-selector/language-selector.jsx","webpack:///./source/components/list-block/list-block.jsx","webpack:///./source/components/list-block-container/list-block-container.jsx","webpack:///./source/js/image-resizer.js","webpack:///./source/js/dom-image-utils.js","webpack:///./source/components/responsive-image/responsive-image.jsx","webpack:///./source/components/logo/logo.jsx","webpack:///./source/components/menu-item/menu-item.jsx","webpack:///./source/components/menu-section/menu-section.jsx","webpack:///./source/components/modal/modal.jsx","webpack:///./source/components/toggle-menu-button/toggle-menu-button.jsx","webpack:///./source/components/quick-search/quick-search.jsx","webpack:///./source/components/page-header/menu-item-active.jsx","webpack:///./source/components/page-header/page-header.jsx","webpack:///./source/hooks/use-escape.js","webpack:///./source/components/payment-spinner-animation/payment-spinner-animation.jsx","webpack:///./source/components/payment-spinner/payment-spinner.jsx","webpack:///./source/components/picture-block/picture-block.jsx","webpack:///./source/components/price-overview-block/price-overview-block.jsx","webpack:///./source/components/promo-block/promo-block.jsx","webpack:///./source/components/quote-block/quote-block.jsx","webpack:///./source/components/radio-toggle/radio-toggle.jsx","webpack:///./source/components/react-component/react-component.jsx","webpack:///./source/components/rich-text-block/rich-text-block.jsx","webpack:///./source/components/service-disruptions-list/service-disruptions-list.jsx","webpack:///./source/components/shop-info/shop-info.jsx","webpack:///./source/components/travel-planner/models.js","webpack:///./source/components/travel-input/travel-input.jsx","webpack:///./source/components/stepper-row/stepper-row.jsx","webpack:///./source/components/shopping-product-list/shopping-product-list.jsx","webpack:///./source/utils/tracking.js","webpack:///./source/components/shopping-cart-form/shopping-cart-form.jsx","webpack:///./source/components/modal/entry-modal.jsx","webpack:///./source/components/modal/carrency-modal.jsx","webpack:///./source/components/travel-planner/page-query-helper.js","webpack:///./source/components/travel-planner/travel-planner-store.js","webpack:///./source/components/shopping-cart/shopping-cart.jsx","webpack:///./source/components/shopping-cart-response/shopping-cart-response.jsx","webpack:///./source/components/skip-to-main/skip-to-main.jsx","webpack:///./source/components/spinner/spinner.jsx","webpack:///./source/components/super-mega-heading-block/super-mega-heading-block.jsx","webpack:///./source/components/travel-planner-images/travel-planner-images.jsx","webpack:///./source/components/travel-results/bottom-bar.jsx","webpack:///./source/components/travel-planner/timeHelper.js","webpack:///./source/components/travel-result/travel-result.jsx","webpack:///./source/components/travel-result-details/travel-result-details.jsx","webpack:///./source/utils/no-data-error.js","webpack:///./source/components/travel-results/fetch-trips.js","webpack:///./source/components/travel-results/parse-trip.js","webpack:///./source/components/travel-results/travel-results.jsx","webpack:///./source/components/travel-results/compute-display-date.js","webpack:///./source/utils/parse-mouse-wheel-event.js","webpack:///./source/components/travel-planner/stop-location.js","webpack:///./source/components/travel-planner/travel-planner.jsx","webpack:///./source/app.components.js","webpack:///./source/js/wow-init.js","webpack:///./source/js/moment-init.js","webpack:///./source/js/fluid-image-loader.js","webpack:///./source/js/polyfills/class-list.js","webpack:///./source/js/input-detection.js","webpack:///./source/js/input-detection-loader.js","webpack:///./source/components/react-datepicker/date_utils.js","webpack:///./source/assets/icons/close-icon.svg","webpack:///./source/assets/icons/FT__kal_small.svg","webpack:///./source/assets/icons/FT_airplane.svg"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","React","FTCalendar","props","createElement","defaultProps","default","FTTwitter","FTArrowsCarouselLeft","FTArrowPagLeft","FTWalk","FTCheckmark","FTArrowSmallUp","loadAppropriateImage","imageNode","preWidth","getAttribute","parentNode","parentWidth","offsetWidth","parseInt","actualWidth","devicePixelRatio","actualWidthRounded","Math","ceil","imageUrl","setAttribute","className","indexOf","style","backgroundImage","load","container","document","Array","from","querySelectorAll","forEach","activate","isRunningOnClient","setTimeout","addEventListener","debounce","documentIsDefined","windowIsDefined","isLocalHost","location","host","fullDate","dateFormat","timeFormat","shortDateFormat","shortDateFormatEn","timeZone","Direction","TO","FROM","TravelInputChangeType","FromUpdated","ToUpdated","DirectionChanged","View","Single","List","Details","generateUniqueId","random","toString","substring","func","wait","immediate","timeout","context","this","args","arguments","later","callNow","clearTimeout","ChatIcon","FTArrowChangeMonthLeft","FTArrowChangeMonthRight","CollapseIcon","FTDownload","ArrowIcon","FTCloseMob","FTHamburgerIcon","Search","FTQuotemark","FTArrowsSwitch","CheckmarkOrange","_extends","assign","target","source","_moment2","_interopRequireDefault","require","_react2","_date_utils","obj","DateInput","safeDateFormat","newProps","isSameDay","date","locale","setState","event","onChange","defaultPrevented","handleChangeDate","onChangeDate","isValid","isDayDisabled","clone","format","isArray","onBlur","refs","input","focus","_props","customInput","rest","keys","_objectWithoutProperties","cloneElement","ref","state","handleBlur","handleChange","type","Component","PropTypes","oneOfType","string","array","_find2","_year_dropdown2","_month_dropdown2","_month2","DROPDOWN_FOCUS_CLASSNAMES","Calendar","selected","openToDate","utcOffset","minDate","getEffectiveMinDate","maxDate","getEffectiveMaxDate","current","utc","isBetween","isAfter","isBefore","localizeMoment","getDateInView","selectingDate","_this","add","handleMonthChange","_this2","subtract","day","onSelect","onMonthChange","dateCheck","allDaysDisabledAfter","year","set","month","_this3","undefined","startOfWeek","startOf","dayNames","showWeekNumbers","concat","map","offset","localeData","weekdaysMin","allDaysDisabledBefore","forceShowMonthNavigation","extraClass","onKeyDown","e","code","which","decreaseMonth","tabIndex","onClick","navigationPrevMonthContent","increaseMonth","navigationNextMonthContent","classes","showYearDropdown","showMonthDropdown","join","renderPreviousMonthButton","renderNextMonthButton","overrideHide","dropdownMode","changeYear","scrollableYearDropdown","changeMonth","_this4","todayButton","monthList","monthsShown","monthDate","monthKey","renderCurrentMonth","onFocus","handleDropdownFocus","renderMonthDropdown","renderYearDropdown","header","onDayClick","handleDayClick","onDayMouseEnter","handleDayMouseEnter","onMouseLeave","handleMonthMouseLeave","excludeDates","highlightDates","includeDates","fixedHeight","filterDate","selectsStart","selectsEnd","startDate","endDate","peekNextMonth","nextProps","onClickOutside","element","classNames","split","testClassname","isDropdownSelect","onDropdownFocus","renderMonths","renderTodayButton","isRequired","oneOf","bool","number","_year_dropdown_options2","WrappedYearDropdownOptions","YearDropdown","dropdownVisible","minYear","maxYear","options","onSelectChange","renderSelectOptions","visible","visibility","toggleDropdown","onCancel","renderReadView","unshift","renderDropdown","renderedDropdown","renderScrollMode","renderSelectMode","_classnames2","generateYears","noOfYear","list","YearDropdownOptions","yearsList","selectedYear","incrementYears","decrementYears","amount","years","shiftYears","dropdownClass","renderOptions","_month_dropdown_options2","_reactOnclickoutside2","_range2","WrappedMonthDropdownOptions","MonthDropdown","monthNames","M","months","_react","MonthDropdownOptions","selectedMonth","arrayOf","_week2","Month","endOfWeek","isSame","weeks","isFixedHeight","currentWeekStart","breakAfterNextPush","showWeekNumber","isFixedAndFinalWeek","isNonFixedAndOutOfMonth","isWeekInMonth","getClassNames","handleMouseLeave","role","renderWeeks","_day2","_week_number2","Week","_isDisabled","setDisabledState","days","weekNumber","child","onMouseEnter","renderDays","todayDate","moment","Day","isDisabled","other","some","testDay","_props2","isDayInRange","_props3","isSameOrBefore","isSameOrAfter","isInSelectingRange","_props4","_props5","_props6","_props7","weekday","isHighlighted","isRangeStart","isRangeEnd","isInRange","isSelectingRangeStart","isSelectingRangeEnd","isWeekend","isOutsideMonth","handleClick","handleMouseEnter","WeekNumber","_reactDom2","_tether2","TetherComponent","_targetNode","findDOMNode","_update","_destroy","_tether","disable","enable","position","_elementParentNode","unmountComponentAtNode","removeChild","destroy","children","renderElementTag","renderElementTo","elementComponent","body","appendChild","unstable_renderSubtreeIntoContainer","_updateTether","tetherOptions","setOptions","firstChild","Children","index","_ref","componentName","childCount","count","Error","useEvent","eventName","eventHandler","dependencies","useEffect","removeEventListener","Link","url","text","openInNewTab","href","cn","propTypes","propTypesMeta","getPageHash","hash","getPageUrlWithoutQueryAndHash","pathname","Breadcrumbs","lang","dapatureDetails","breadcrumbsLabel","links","inContentContainer","useState","breadcrumbsLinks","setBreadcrumbsLinks","renderBreadcrumbs","updateBreadcrumbs","pageUrl","hashedBreadcrumbsMap","pageHash","hashedBreadcrumsMap","Map","departures","has","hashedLinks","breadcrumbsList","id","aria-labelledby","breadcrumb","shape","exact","MenuLink","isActive","isSecondary","isSecondLevel","stickyPolyfill","BuyTicketsLink","loadStateFromLocalStorage","token","PubSub","subscribe","msg","saveStateToLocalStorage","addOne","publish","unsubscribe","localStorage","setItem","getItem","startsWith","el","CartTotalAmount","waitingForApiResponse","estimatedTotalPriceText","discount","currencyCode","openModal","translations","showMoneySaved","youSave","amountToPay","changeCurrency","ChatButton","label","ContactBlock","title","department","phoneNumber","email","comment","isInEditMode","isDepartmentAndPositionSet","data-epi-property-name","contactType","ContentArea","blocks","place","block","Block","Components","console","error","_date_input2","_calendar2","_defer2","_tether_component2","_classnames3","_defineProperty","configurable","writable","outsideClickIgnoreClass","WrappedCalendar","DatePicker","open","preventFocus","setOpen","inputFocusTimeout","cancelFocusInput","setFocus","deferFocusInput","setSelected","changedDate","hour","minute","second","disabled","copy","preventDefault","inline","dateFormatCalendar","handleSelect","handleCalendarClickOutside","autoFocus","handleFocus","onInputClick","onInputKeyDown","placeholder","placeholderText","autoComplete","readOnly","required","isClearable","onClearClick","calendar","renderCalendar","classPrefix","attachment","popoverAttachment","targetAttachment","popoverTargetAttachment","targetOffset","popoverTargetOffset","renderCalendarTo","constraints","tetherConstraints","renderDateInput","renderClearButton","any","to","DatePickerWrapper","datePickerIsShowingLastMonth","currentDate","onDatePickerUpdate","hideDatePicker","datePickerOpen","prevProps","datepicker","querySelector","dom","zIndex","onKeyDownDatepicker","ReactDOM","focusable","aria-label","prevMonth","nextMonth","noMoreRoutes","velocity","EMERGENCY_TYPE","YELLOW","RED","GRAY","EMERGENCY_TYPE_VALUES","EmergencyBlock","isExpanded","hasAnimated","isVisible","toggleExpand","animationEnter","animationLeave","removeEmergencyBlock","existingCookie","Cookie","JSON","parse","node","complete","stop","done","ok","self","display","duration","easing","handleAnimationEnd","delay","anim","enter","leave","removeMessageText","readLessText","readMoreText","shortMessage","longMessage","emergencyType","emergencyClass","toggleClass","toggleText","aria-expanded","aria-controls","Animate","component","animation","dangerouslySetInnerHTML","__html","WARNING","ERROR","ErrorBlock","message","FactBlock","IMAGE_SIZE","IMAGE_QUERY","small","large","transform","IMAGE_WIDTH","Image","imageSmall","imageX","imageY","imageAlt","useImageSize","epiPropertyName","fluidImageStyle","backgroundPosition","imageSrc","imageWidth","src","alt","data-image-width","data-small","BLOCK_TYPE","BLOCK_TYPE_VALUES","FEATURE_BLOCK_TYPE","FEATURE_BLOCK_POSITION","FeatureBlock","blockType","linkUrl","linkText","setImage","featureBlockClassNames","FEATURE_TYPE_VALUES","isLeft","imageContainerClassName","textContainerClassName","hasImage","imageEl","imageLarge","textEls","FEATURE_TYPE","FileListBlock","fileListBlockEls","fileListBlock","aria-role","fileUrl","fileType","size","FooterLinkList","FooterTextBlock","FooterBlock","width","GriddedBlock","blocksEl","animateDelay","data-wow-delay","altText","HighlightBlock","blockClassName","useImage","HighlightBlocks","highlightBlocksClassName","Icon","path","ImageGalleryBlock","intervalId","activeItem","imageSize","changeImage","prev","next","handleKeyDown","imageLoader","imageContainerEl","clearInterval","keyCode","previousAriaLabel","nextAriaLabel","photographerLabel","blocksLength","imageEls","imagePhotographer","fluidStyling","image","aria-hidden","data-large","imageContainer","ImageListBlock","downloadImageText","imageListBlockEls","imageListBlock","imageTitle","LanguageSelector","languages","language","ListBlockContainer","currentPage","handlePaginationChange","scrollTo","containerEl","getBoundingClientRect","top","listBlocks","pageSize","pages","listBlockEls","listBlock","previousLabel","nextLabel","breakLabel","breakClassName","pageCount","marginPagesDisplayed","pageRangeDisplayed","pageLinkClassName","onPageChange","containerClassName","subContainerClassName","activeClassName","ListBlock","transforms","downFit","downFill","skipForResizeExtensions","queryParameters","height","center","checkImageCanBeResized","extension","pop","trim","toLowerCase","item","serializeCenter","x","y","buildResizeUrl","centerX","centerY","replaceQueryParameters","calcImageWidth","containerWidth","resolution","calcImageHeight","containerHeight","Transforms","createHtmlImage","ResponsiveImage","imageResizer","constructor","fill","canBeResized","autoTransform","defaultSrc","ratio","containerOffsetWidth","containerOffsetHeight","offsetHeight","fit","autoCalcWidthOnly","autoCalcHeightOnly","skipByWidth","skipByHeight","resolutionByWidth","widthResolution","heightResolution","newWidth","newHeight","newRatio","previousState","newSrc","focusPoint","firstPreloadImage","firstLoadWidth","firstLoadHeight","firstLoadSrc","preloadImage","handleResize","offsetParent","checkElementIsHidden","parent","parentElement","isHidden","debouncedHandleResize","onload","onFirstSrcPreloaded","onSrcPreloaded","observer","MutationObserver","onObservedChange","observe","getHiddenRoot","attributes","componentDidMount","disconnect","Fragment","fluid","values","Logo","imageClass","MenuItem","childItems","forceUpdateIndex","isOpen","setIsOpen","hasActiveChild","setHasActiveChild","activeItems","filter","showChildIfActive","toggle","MenuSection","items","itemClassName","Modal","closing","modalRef","noAnim","onClose","show","stopPropagation","ToggleMenuButton","QuickSearch","searchInputLabel","searchPageUrl","searchButtonText","action","method","SupportedHashesMap","MenuItemActive","defaultActiveItem","currntActiveItem","linksList","currentActiveItem","hasChanges","mappedHashes","newActiveItem","findItem","onActiveItemChanged","findActiveItem","setActiveItem","onHashChange","PageHeader","logo","toggleMenuButton","languageSelector","quickSearch","frontLink","departuresLink","buyTicketsLink","mainMenu","secondaryMenu","setForceUpdateIndex","panelIsShown","setPanelIsShown","getSectionLinks","menuSection","menuLinks","callback","PaymentSpinnerAnimation","circles","_","circleNumber","PaymentSpinner","aria-live","PictureBlock","hideContext","PriceOverviewBlock","priceItems","content","firstColumnHeading","secondColumnHeading","thirdColumnHeading","priceItemsEl","priceItem","station","adultPrice","otherPrice","PromoBlock","promoTitle","imageAriaLabel","gradientAriaLabel","promoImageStyle","triangleAriaLabel","QUOTE_BLOCK_TYPE","QUOTE_BLOCK_TYPE_VALUE","QuoteBlock","quote","RadioToggle","active","checked","numberOrString","ReactComponent","RichTextBlock","ServiceDisruptionsList","isExpandedId","expandListItem","uniqueId","disruptionHeaderTitle","disruptionHeaderFromTime","disruptionHeaderToTime","disruptions","disruptionsEls","noDeviationsText","disruption","dateTime","affectedStartTimeUTC","affectedStartTime","affectedEndTimeUTC","affectedEndTime","ShopInfo","Lang","track","collapse","expand","swap","today","tomorrow","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","arrival","departure","back","loadMore","minutes","retry","addToCalendar","cancelled","walk","minutesShort","showInMap","showStops","hideStops","changeTransport","buyTicket","TravelInput","airportStation","towardsAirport","buildStateFromProps","direction","classList","remove","fromLocation","changeDirection","toLocation","toField","focusOption","stops","fromField","prevState","checkStatePropsChanged","changeType","stationId","find","isLoading","autosize","clearable","searchable","scrollMenuIntoView","valueRenderer","onOpen","onOpenDropdown","onCloseDropdown","onChangeLocationFrom","arrowRenderer","optionRenderer","onChangeDirection","onKeyDownDirection","onChangeLocationTo","Step","StepperRow","isSelectable","notSelectableText","productName","productPrice","quantity","actualPrice","onUpdateAmount","maxTickets","sumTickets","discountActive","discounted","perItemPriceIndicator","ShoppingProductList","setTabIndex","products","product","tab","showAllFares","changingSize","listElement","scrollHeight","expandProducts","toggleList","discountText","fareTypesUrl","lessTickets","moreTickets","readMoreAboutOurFareTypes","maxTicketsWarning","errorMessage","discountMessage","productList","getProducts","moreProducts","getHeight","rel","doNotTrack","external","msTrackingProtectionEnabled","navigator","msDoNotTrack","trackStateWithGoogle","category","event_category","event_action","event_label","dataLayer","ErrorMessage","expandedStyle","countryCodes","ShoppingCartForm","errorStates","updateCartAndCallback","submitForm","storableState","formData","FormData","form","validateMobile","trackState","validateEmail","formJson","ga","submit","fromStationCode","toStationCode","includeReturn","toUpperCase","brand","price","dimension1","dimension2","ecommerce","checkout","actionField","step","eventCallback","isNaN","parseFloat","isFinite","test","validate","newErrorStates","valid","mobilePhone","checkbox","updateForm","customerId","termsAndConditionUrl","privacyPolicyUrl","antiForgeryToken","countryCode","acceptTermsLinkPrefixText","acceptTermsLinkText","privacyPolicyLinkPrefixText","privacyPolicyLinkText","privacyPolicyLinkSuffixText","placeholderMobile","placeholderEmail","cardOptions","validateMobilePhone","validateCheckbox","noTicketsMessage","mobileRegisterText","pickCountryCodeMessage","emailRegisterText","noTicketsError","countryCodeError","mobileError","emailError","checkboxError","selectedCode","codes","onSubmit","noSubmit","handleError","validateSelect","onChangeCheckbox","purchaseTickets","continueToCheckout","fullName","entryModal","listTitle","buttonText","currencyModal","changeCurrencyModal","dropdownAction","currentValue","currencies","currency","setParameters","params","urlParams","URLSearchParams","search","delete","queryString","history","replaceState","getParameter","decodeURIComponent","setParameter","getData","defaultLocation","defaultDirection","storedLocation","storedDirection","pageQueryHelper","queryDirection","sessionDirection","sessionStorage","setData","skipQueryUpdate","removeItem","stationPropType","ShoppingCart","toStation","stations","travelInput","selectedCurrencyCode","dropdownCurrency","cart","getClientSideCart","updateCartUrl","setLoading","fetch","headers","Accept","stringify","then","res","json","updateClientCart","newUrl","updateQueryStringParameter","fromStationId","toStationId","stopLoading","catch","totalPrice","saveableState","modalOpen","modalClosing","updateCart","travelPlannerStore","currentTarget","newProducts","max","updateCartApiDebounced","currentModal","hide","closeModal","rootUrl","referrer","match","modalValue","defaultFromStation","defaultToStation","fromStationValue","toStationValue","root","returnError","loadAfterError","uri","re","RegExp","separator","replace","checkoutPostUrl","maxNoOfTickets","entryModalContent","returnText","return","single","validTicketsDuration","validTicketsDurationForCampaign","checkoutUrl","modal","updateCurrency","setCurrencyDropdownValue","reduce","accumulator","fromStation","onInputChange","onChangeType","translationDefaults","bookingConfirmation","ticketsSentTo","tickets","ticketText","ticketLinkText","validFrom","validTo","orderNumber","anyProblems","contactUs","ShoppingCartResponse","ticketUrl","SkipToMain","themes","light","dark","Spinner","theme","SuperMegaHeadingBlock","TravelPlannerImages","airportImage","trainImage","viewMode","switch","BottomBar","disabledText","onEnterPress","loading","parseMoment","time","TravelResult","timeDeparture","maxCountdown","secondsLeft","diff","diffTime","minutesLeft","timeArrival","timeState","timeHelper","trackArrival","alternative","date-fulldate","getDepartureTime","getArrivalTime","details","TravelResultDetails","btn","contains","nextSibling","isOSL","inPast","legs","timeType","getTimeType","origin","rtTrack","destination","svg","prevStopCancelled","nextStopCancelled","first","last","getCategory","leg","templateStop","_svgStart","_svgEnd","prevLeg","nextLeg","prevType","nextType","types","switchTransport","sameStation","differentTransport","validTransports","originTime","destinationTime","template","_showOrigin","_showDestination","showOrigin","showDestination","section","description","switchDescription","switchText","mapUrl","lat","lon","toggleStops","currentTime","parseLegs","parseStops","invalid","NoDataError","stack","originId","destId","currentTrips","shouldMerge","fetchUrl","response","TypeError","log","newTrips","trips","trip","firstLeg","arrivalTime","arrivalDateTime","tripId","parseTrip","tripExists","sort","a","b","TravelResults","prevTripsLoaded","todaysTripsPresented","pastTripsAllowed","fetchTrips","serverTime","now","clientTime","setViewingMode","clear","sameDate","newState","isLoadingPastResults","getLanguage","fetchTripsAsyncMarker","getNewTripsState","parseTime","lastSearch","Date","unix","displayDate","isTomorrow","getWeekday","k","getDateWithSuffix","computeDisplayDate","view","onListScroll","resultsView","lastScrollTop","st","scrollTop","getTrips","resultsViewContainer","sX","sY","pX","pY","normalized","nativeEvent","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","min","onScroll","goToView","showDatePicker","tick","exception","onResize","timer","setInterval","scrollToX","activeElement","offsetTop","isLoadingForReal","bottomBar","onBottomBarInteract","showTrip","getNextTrip","tripsGroupedByDay","accum","onResultsScroll","onWheel","handleResultsWheel","entries","getDateLabel","onClickList","selectTrip","onClickSingle","modifyStopLocationData","extId","TravelPlanner","getModeFromHash","setBodyClass","OSL","shopLink","query","querystring","link","alert","fetchDataError","warning","isLoadingStops","fetchWarning","fetchMaxDate","currentLocationId","locationResult","osloAirportId","osl","storedData","hashChange","interval","publishShopLink","getShopLink","hideFetchDataError","responce","statusText","showFetchDataError","nextState","getFromId","getToId","outsideClick","onSomeClickOrKeyUp","onKeyUp","setDate","data-hj-ignore-attributes","WOW","live","init","mobile","tz","setDefault","documentElement","HTMLElement","update","fn","ret","touchEndHappened","classListPolyfill","keyCodeWhiteList","before","after","excludeDate","includeDate","unit","_ref2","dateBefore","every","_ref3","dateAfter","_ref4","_ref5","_moment","moment1","moment2","CloseIcon","FTKalSmall","FTAirplane"],"mappings":"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","file":"client.e60a892e01808ef42937.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([690,3]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var React = require('react');\n\nfunction FTCalendar (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",null,[React.createElement(\"path\",{\"d\":\"M24.5,2H22V0h-2v4h2h2.5C25.3,4,26,4.7,26,5.5V8H2V5.5C2,4.7,2.7,4,3.5,4H6h2V2V0H6v2H3.5C1.6,2,0,3.6,0,5.5V8v2h28V8V5.5\\r\\n\\t\\tC28,3.6,26.4,2,24.5,2z\",\"key\":0}),React.createElement(\"polygon\",{\"points\":\"26,26 2,26 2,12 0,12 0,28 28,28 28,12 26,12 \\t\",\"key\":1}),React.createElement(\"rect\",{\"x\":\"10\",\"y\":\"2\",\"width\":\"8\",\"height\":\"2\",\"key\":2}),React.createElement(\"polygon\",{\"points\":\"19.2,13.3 13.9,19.5 10.7,16.3 9.3,17.7 14.1,22.5 20.8,14.7 \\t\",\"key\":3})]));\n}\n\nFTCalendar.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 28 28\",\"enableBackground\":\"new 0 0 28 28\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTCalendar;\n\nFTCalendar.default = FTCalendar;\n","var React = require('react');\n\nfunction FTTwitter (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",null,React.createElement(\"g\",{\"transform\":\"translate(-281.000000, -3054.000000)\"},React.createElement(\"path\",{\"fill\":\"#1A1818\",\"d\":\"M310,3060c-1.1,0.5-2.2,0.8-3.4,0.9c1.2-0.7,2.2-1.9,2.6-3.3c-1.1,0.7-2.4,1.2-3.8,1.4\\r\\n\\t\\t\\tc-1.1-1.2-2.6-1.9-4.3-1.9c-3.8,0-6.7,3.6-5.8,7.3c-4.9-0.2-9.3-2.6-12.3-6.2c-1.6,2.7-0.8,6.2,1.8,7.9c-1,0-1.9-0.3-2.7-0.7\\r\\n\\t\\t\\tc-0.1,2.8,1.9,5.3,4.8,5.9c-0.8,0.2-1.8,0.3-2.7,0.1c0.8,2.4,3,4.1,5.6,4.1c-2.5,2-5.7,2.8-8.8,2.5c2.6,1.7,5.8,2.7,9.1,2.7\\r\\n\\t\\t\\tc11,0,17.3-9.3,16.9-17.7C308.2,3062.2,309.2,3061.2,310,3060\"}))));\n}\n\nFTTwitter.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 29 30\",\"enableBackground\":\"new 0 0 29 30\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTTwitter;\n\nFTTwitter.default = FTTwitter;\n","var React = require('react');\n\nfunction FTArrowsCarouselLeft (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"65.1,120.5 0.6,60 65.1,-0.5 67.9,2.5 6.4,60 67.9,117.5 \"}));\n}\n\nFTArrowsCarouselLeft.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 68 120\",\"enableBackground\":\"new 0 0 68 120\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowsCarouselLeft;\n\nFTArrowsCarouselLeft.default = FTArrowsCarouselLeft;\n","var React = require('react');\n\nfunction FTArrowPagLeft (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"41.3,63.8 0.3,32 41.3,0.2 42.7,1.8 3.7,32 42.7,62.2 \"}));\n}\n\nFTArrowPagLeft.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 43 64\",\"enableBackground\":\"new 0 0 43 64\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowPagLeft;\n\nFTArrowPagLeft.default = FTArrowPagLeft;\n","var React = require('react');\n\nfunction FTWalk (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"defs\",{\"key\":0},[React.createElement(\"clipPath\",{\"id\":\"58cfba5f-b1f4-4d6a-a65e-a1cadef3429b\",\"transform\":\"translate(5 5)\",\"key\":0},React.createElement(\"rect\",{\"width\":\"10\",\"height\":\"17\",\"fill\":\"none\"})),React.createElement(\"clipPath\",{\"id\":\"c9e38a26-b228-49ea-9384-8560eae30438\",\"transform\":\"translate(5 5)\",\"key\":1},React.createElement(\"rect\",{\"x\":\"-108\",\"y\":\"-245\",\"width\":\"375\",\"height\":\"1030\",\"fill\":\"none\"})),React.createElement(\"clipPath\",{\"id\":\"d60c8eef-e296-4265-819c-bef354dad8db\",\"transform\":\"translate(5 5)\",\"key\":2},React.createElement(\"rect\",{\"x\":\"-1\",\"y\":\"-1\",\"width\":\"12\",\"height\":\"18\",\"fill\":\"none\"})),React.createElement(\"clipPath\",{\"id\":\"a4e3e733-95f7-4feb-aa8a-a530d70cce59\",\"transform\":\"translate(5 5)\",\"key\":3},React.createElement(\"path\",{\"d\":\"M9.73,8.36l-2-1.23a.91.91,0,0,1-.33-.44L6.76,4.45a.52.52,0,0,0-.07-.15A.53.53,0,0,0,6.22,4l-2.67.12a.51.51,0,0,0-.31.13l-.06,0L1.37,5.76a.86.86,0,0,0-.27.79l.72,3.26a.61.61,0,0,0,.58.47h.05l.27,0A.47.47,0,0,0,3.07,10a.52.52,0,0,0,.09-.42L2.65,7.11a.47.47,0,0,1,.14-.41l.32-.27.17,4h0l-.74,1.73a1.89,1.89,0,0,1-.51.65L.3,14.17a.86.86,0,0,0-.24,1l.24.53A.53.53,0,0,0,.79,16a.59.59,0,0,0,.35-.12l2.28-1.79a2.89,2.89,0,0,0,.64-.79L5.19,11l0-.05H5.3l1.86,5.42A.93.93,0,0,0,8,17a.86.86,0,0,0,.28,0l.11,0a.89.89,0,0,0,.52-.47,1,1,0,0,0,0-.71L7,10,7,10,6.92,8.43,9.08,9.61a.52.52,0,0,0,.73-.23l.12-.25A.59.59,0,0,0,9.73,8.36Z\",\"fill\":\"none\",\"clipRule\":\"evenodd\"})),React.createElement(\"clipPath\",{\"id\":\"7e7fe5c4-086c-4e00-b09a-4d033a4f8478\",\"transform\":\"translate(5 5)\",\"key\":4},React.createElement(\"path\",{\"d\":\"M5,4h.09a2,2,0,0,0,1.38-.65A2,2,0,0,0,7,1.91,2,2,0,0,0,3.53.65,2,2,0,0,0,3,2.09,2,2,0,0,0,5,4Z\",\"fill\":\"none\",\"clipRule\":\"evenodd\"}))]),React.createElement(\"title\",{\"key\":1},\"FT_walk\"),React.createElement(\"g\",{\"clipPath\":\"url(#58cfba5f-b1f4-4d6a-a65e-a1cadef3429b)\",\"key\":2},React.createElement(\"g\",{\"clipPath\":\"url(#c9e38a26-b228-49ea-9384-8560eae30438)\"},React.createElement(\"g\",{\"style\":{\"isolation\":\"isolate\"}},React.createElement(\"g\",{\"clipPath\":\"url(#d60c8eef-e296-4265-819c-bef354dad8db)\"},[React.createElement(\"g\",{\"clipPath\":\"url(#a4e3e733-95f7-4feb-aa8a-a530d70cce59)\",\"key\":0},React.createElement(\"g\",{\"clipPath\":\"url(#58cfba5f-b1f4-4d6a-a65e-a1cadef3429b)\"},React.createElement(\"rect\",{\"y\":\"4\",\"width\":\"20\",\"height\":\"23\",\"fill\":\"#2b3c46\"}))),React.createElement(\"g\",{\"clipPath\":\"url(#7e7fe5c4-086c-4e00-b09a-4d033a4f8478)\",\"key\":1},React.createElement(\"g\",{\"clipPath\":\"url(#58cfba5f-b1f4-4d6a-a65e-a1cadef3429b)\"},React.createElement(\"rect\",{\"x\":\"3\",\"width\":\"14\",\"height\":\"14\",\"fill\":\"#2b3c46\"})))]))))]);\n}\n\nFTWalk.defaultProps = {\"viewBox\":\"0 0 20 27\"};\n\nmodule.exports = FTWalk;\n\nFTWalk.default = FTWalk;\n","var React = require('react');\n\nfunction FTCheckmark (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"7,11.5 0.5,4.9 1.9,3.5 7,8.5 14.3,0.3 15.7,1.7 \"}));\n}\n\nFTCheckmark.defaultProps = {\"title\":\"checkmark\",\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 16 12\",\"enableBackground\":\"new 0 0 16 12\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTCheckmark;\n\nFTCheckmark.default = FTCheckmark;\n","var React = require('react');\n\nfunction FTArrowSmallUp (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"16.3,11.7 9,3.5 1.7,11.7 0.3,10.3 9,0.5 17.7,10.3 \"}));\n}\n\nFTArrowSmallUp.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 18 12\",\"enableBackground\":\"new 0 0 18 12\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowSmallUp;\n\nFTArrowSmallUp.default = FTArrowSmallUp;\n","import { debounce, isRunningOnClient } from 'utils/misc';\r\n\r\nfunction loadAppropriateImage(imageNode) {\r\n if (!imageNode) {\r\n return;\r\n }\r\n\r\n const preWidth = imageNode.getAttribute('data-image-width');\r\n const parentNode = imageNode.parentNode;\r\n const parentWidth = parentNode.offsetWidth;\r\n\r\n // Only set new image if we need a bigger image.\r\n if (\r\n preWidth.length === 0 ||\r\n (preWidth.length > 0 && parseInt(preWidth, 10) < parentWidth)\r\n ) {\r\n const actualWidth = parseInt(\r\n parentWidth * (window.devicePixelRatio || 1),\r\n 10\r\n );\r\n const actualWidthRounded = Math.ceil(actualWidth / 100) * 100;\r\n const imageUrl = `${imageNode.getAttribute(\r\n 'data-small'\r\n )}?width=${actualWidthRounded}&transform=DownFit`;\r\n\r\n imageNode.setAttribute('data-image-width', parentWidth);\r\n imageNode.setAttribute('src', imageUrl);\r\n if (parentNode.className.indexOf('fluid-image') !== -1) {\r\n parentNode.style.backgroundImage = `url(${imageUrl})`;\r\n }\r\n }\r\n}\r\n\r\nfunction load(container = document) {\r\n Array.from(\r\n container.querySelectorAll('[data-image-width][data-small]')\r\n ).forEach(imageNode => loadAppropriateImage(imageNode));\r\n}\r\n\r\nfunction activate() {\r\n if (isRunningOnClient) {\r\n setTimeout(load, 100);\r\n window.addEventListener('resize', debounce(load.bind(null, document), 250));\r\n }\r\n}\r\n\r\nexport default {\r\n activate,\r\n loadAppropriateImage,\r\n load\r\n};\r\n","export const documentIsDefined = typeof document !== 'undefined';\r\nexport const windowIsDefined = typeof window !== 'undefined';\r\n\r\nexport const isLocalHost =\r\n windowIsDefined &&\r\n window.location.host.indexOf('localhost') >= 0 &&\r\n window.location.host.indexOf('localhost:52130') < 0; // BE localhost.\r\n\r\nexport const fullDate = 'YYYY-MM-DD_HH-mm';\r\nexport const dateFormat = 'YYYY-MM-DD';\r\nexport const timeFormat = 'HH:mm';\r\nexport const parseTimeFormat = 'H:m:s';\r\nexport const shortDateFormat = 'Do MMMM';\r\nexport const shortDateFormatEn = 'MMMM Do';\r\nexport const timeZone = 'Europe/Oslo';\r\n\r\nexport const Direction = { TO: 1, FROM: 2 };\r\nexport const TravelInputChangeType = {\r\n FromUpdated: 1,\r\n ToUpdated: 2,\r\n DirectionChanged: 3\r\n};\r\nexport const View = { Single: 0, List: 1, Details: 2 };\r\n","export function generateUniqueId() {\r\n return (Math.random() + 1).toString(36).substring(2, 7);\r\n}\r\n\r\n// recursively gets the offsetTop of an element\r\nexport const getOffsetTop = el => {\r\n let top = el.offsetTop || 0;\r\n // console.log(el, top);\r\n if (el.parentNode && top === 0) {\r\n top += this.getOffsetTop(el.parentNode);\r\n }\r\n return top;\r\n};\r\n\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n\r\n var later = function() {\r\n timeout = null;\r\n\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n}\r\n\r\nexport const isRunningOnClient =\r\n typeof window !== 'undefined' && window.document ? true : false;\r\n","var React = require('react');\n\nfunction ChatIcon (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"defs\",{\"key\":0},React.createElement(\"style\",null,\".a{fill:none;stroke:#fff;stroke-width:2px;}\")),React.createElement(\"g\",{\"transform\":\"translate(-306.05 -397.553)\",\"key\":1},React.createElement(\"path\",{\"className\":\"a\",\"d\":\"M312.644,416.372v7.7l10.632-11.2h11.164V400.968a2.414,2.414,0,0,0-2.415-2.415H307.05v14.32h6.778\"}))]);\n}\n\nChatIcon.defaultProps = {\"width\":\"29.389\",\"height\":\"29.021\",\"viewBox\":\"0 0 29.389 29.021\"};\n\nmodule.exports = ChatIcon;\n\nChatIcon.default = ChatIcon;\n","var React = require('react');\n\nfunction FTArrowChangeMonthLeft (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"11.3,19.7 0.5,10 11.3,0.3 12.7,1.7 3.5,10 12.7,18.3 \"}));\n}\n\nFTArrowChangeMonthLeft.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 13 20\",\"enableBackground\":\"new 0 0 13 20\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowChangeMonthLeft;\n\nFTArrowChangeMonthLeft.default = FTArrowChangeMonthLeft;\n","var React = require('react');\n\nfunction FTArrowChangeMonthRight (props) {\n return React.createElement(\"svg\",props,React.createElement(\"polygon\",{\"points\":\"1.7,19.7 0.3,18.3 9.5,10 0.3,1.7 1.7,0.3 12.5,10 \"}));\n}\n\nFTArrowChangeMonthRight.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 13 20\",\"enableBackground\":\"new 0 0 13 20\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowChangeMonthRight;\n\nFTArrowChangeMonthRight.default = FTArrowChangeMonthRight;\n","var React = require('react');\n\nfunction CollapseIcon (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"data-name\":\"Path 10\",\"d\":\"M1.41,1.5l8.4,9.41L18.3,1.5\",\"transform\":\"translate(-0.41 -0.5)\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"2\"}));\n}\n\nCollapseIcon.defaultProps = {\"data-name\":\"Layer 1\",\"width\":\"18.89\",\"height\":\"11.91\",\"viewBox\":\"0 0 18.89 11.91\"};\n\nmodule.exports = CollapseIcon;\n\nCollapseIcon.default = CollapseIcon;\n","var React = require('react');\n\nfunction FTDownload (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"title\",{\"key\":0},\"Page 1\"),React.createElement(\"desc\",{\"key\":1},\"Created with Sketch.\"),React.createElement(\"defs\",{\"key\":2}),React.createElement(\"g\",{\"stroke\":\"none\",\"strokeWidth\":\"1\",\"fill\":\"none\",\"fillRule\":\"evenodd\",\"key\":3},React.createElement(\"g\",{\"transform\":\"translate(-262.000000, -632.000000)\",\"fill\":\"#FFFFFF\"},React.createElement(\"g\",{\"transform\":\"translate(262.000000, 632.000000)\"},[React.createElement(\"polygon\",{\"id\":\"Fill-1\",\"points\":\"5.0004 -0.0002 5.0004 8.3698 1.8584 4.8358 0.3634 6.1638 6.0004 12.5048 11.6364 6.1638 10.1404 4.8358 7.0004 8.3698 7.0004 -0.0002\",\"key\":0}),React.createElement(\"polygon\",{\"id\":\"Fill-2\",\"points\":\"0 16 12 16 12 14 0 14\",\"key\":1})])))]);\n}\n\nFTDownload.defaultProps = {\"id\":\"ft_download\",\"width\":\"12px\",\"height\":\"16px\",\"viewBox\":\"0 0 12 16\",\"version\":\"1.1\"};\n\nmodule.exports = FTDownload;\n\nFTDownload.default = FTDownload;\n","var React = require('react');\n\nfunction ArrowIcon (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"defs\",{\"key\":0},React.createElement(\"clipPath\",{\"transform\":\"translate(0.25 0.25)\"},React.createElement(\"rect\",{\"width\":\"19.69\",\"height\":\"11.06\",\"fill\":\"none\"}))),React.createElement(\"g\",{\"clipPath\":\"url(#clip-path)\",\"key\":1},React.createElement(\"path\",{\"d\":\"M.75.75,9.82,10l6.09-6.2L19,.75\",\"transform\":\"translate(0.25 0.25)\",\"fill\":\"none\",\"stroke\":\"#fff\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"2\"}))]);\n}\n\nArrowIcon.defaultProps = {\"data-name\":\"Layer 1\",\"width\":\"20.2\",\"height\":\"11.72\",\"viewBox\":\"0 0 20.2 11.72\"};\n\nmodule.exports = ArrowIcon;\n\nArrowIcon.default = ArrowIcon;\n","var React = require('react');\n\nfunction FTCloseMob (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"g\",{\"key\":0},[React.createElement(\"defs\",{\"key\":0},React.createElement(\"path\",{\"id\":\"SVGID_1_\",\"d\":\"M-674,973.9h-3v4h3v12h5v-12h3.6l0.4-4h-4v-1.7c0-1,0.2-1.3,1.1-1.3h2.9v-5h-3.8c-3.6,0-5.2,1.6-5.2,4.6\\r\\n\\t\\t\\tV973.9z\"})),React.createElement(\"clipPath\",{\"id\":\"SVGID_2_\",\"key\":1},React.createElement(\"use\",{\"xlinkHref\":\"#SVGID_1_\",\"overflow\":\"visible\"})),React.createElement(\"g\",{\"clipPath\":\"url(#SVGID_2_)\",\"key\":2},[React.createElement(\"defs\",{\"key\":0},React.createElement(\"rect\",{\"id\":\"SVGID_3_\",\"x\":\"-894\",\"y\":\"-2086.1\",\"width\":\"1443\",\"height\":\"4196\"})),React.createElement(\"clipPath\",{\"id\":\"SVGID_4_\",\"key\":1},React.createElement(\"use\",{\"xlinkHref\":\"#SVGID_3_\",\"overflow\":\"visible\"}))])]),React.createElement(\"g\",{\"key\":1},[React.createElement(\"rect\",{\"x\":\"8.2\",\"y\":\"10.2\",\"transform\":\"matrix(-0.7071 -0.7071 0.7071 -0.7071 11.2 27.0392)\",\"fill\":\"#1A1818\",\"width\":\"5.9\",\"height\":\"2\",\"key\":0}),React.createElement(\"polygon\",{\"fill\":\"#1A1818\",\"points\":\"12.6,0 7,5.6 1.4,0 0,1.4 5.6,7 0,12.6 1.4,14 14,1.4 \\t\",\"key\":1})])]);\n}\n\nFTCloseMob.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 14 14\",\"enableBackground\":\"new 0 0 14 14\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTCloseMob;\n\nFTCloseMob.default = FTCloseMob;\n","var React = require('react');\n\nfunction FTHamburgerIcon (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"rect\",{\"width\":\"18\",\"height\":\"2\",\"key\":0}),React.createElement(\"rect\",{\"y\":\"6\",\"width\":\"18\",\"height\":\"2\",\"key\":1}),React.createElement(\"rect\",{\"y\":\"12\",\"width\":\"18\",\"height\":\"2\",\"key\":2})]);\n}\n\nFTHamburgerIcon.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 18 14\",\"enableBackground\":\"new 0 0 18 14\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTHamburgerIcon;\n\nFTHamburgerIcon.default = FTHamburgerIcon;\n","var React = require('react');\n\nfunction Search (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"defs\",{\"key\":0},React.createElement(\"style\",null,\".a,.b,.d{fill:none;}.a,.b{stroke:#fff;stroke-width:3px;}.b{stroke-linecap:round;}.c{stroke:none;}\")),React.createElement(\"g\",{\"transform\":\"translate(2.12)\",\"key\":1},[React.createElement(\"g\",{\"className\":\"a\",\"transform\":\"translate(6.013)\",\"key\":0},[React.createElement(\"circle\",{\"className\":\"c\",\"cx\":\"10.5\",\"cy\":\"10.5\",\"r\":\"10.5\",\"key\":0}),React.createElement(\"circle\",{\"className\":\"d\",\"cx\":\"10.5\",\"cy\":\"10.5\",\"r\":\"9\",\"key\":1})]),React.createElement(\"path\",{\"className\":\"b\",\"d\":\"M12.556,0,3.043,9.006\",\"transform\":\"translate(-3.043 17.5)\",\"key\":1})])]);\n}\n\nSearch.defaultProps = {\"width\":\"29.133\",\"height\":\"28.626\",\"viewBox\":\"0 0 29.133 28.626\"};\n\nmodule.exports = Search;\n\nSearch.default = Search;\n","var React = require('react');\n\nfunction FTQuotemark (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",null,React.createElement(\"path\",{\"d\":\"M11.5,2.3C10.3,3,9.3,3.6,8.5,4.1C7.8,4.6,7,5.3,6.2,6.1C5.5,6.9,5,7.7,4.6,8.5c-0.4,0.9-0.7,1.9-0.8,3.3h1.9\\r\\n\\t\\tc1.6,0,2.9,0.4,3.8,1.2c0.9,0.8,1.4,1.9,1.4,3.5c0,1.1-0.4,2.1-1.2,3c-0.8,0.9-1.9,1.4-3.4,1.4c-2.2,0-3.8-0.7-4.8-2.2\\r\\n\\t\\tC0.5,17.3,0,15.4,0,13c0-1.7,0.4-3.2,1.1-4.6C1.8,7,2.7,5.8,3.7,4.7c1.1-1.1,2.2-2.1,3.4-2.8c1.2-0.8,2.2-1.4,3-1.9L11.5,2.3z\\r\\n\\t\\t M25.8,2.3c-1.2,0.7-2.2,1.3-2.9,1.8c-0.8,0.5-1.5,1.2-2.3,2c-0.8,0.8-1.3,1.6-1.7,2.5c-0.4,0.8-0.6,1.9-0.8,3.3H20\\r\\n\\t\\tc1.6,0,2.9,0.4,3.8,1.2c0.9,0.8,1.4,1.9,1.4,3.5c0,1.1-0.4,2.1-1.2,3c-0.8,0.9-1.9,1.4-3.4,1.4c-2.2,0-3.8-0.7-4.8-2.2\\r\\n\\t\\tc-1-1.5-1.4-3.4-1.4-5.8c0-1.7,0.4-3.2,1.1-4.6C16.2,7,17,5.8,18.1,4.7c1.1-1.1,2.2-2.1,3.4-2.8c1.2-0.8,2.2-1.4,3-1.9L25.8,2.3z\"})));\n}\n\nFTQuotemark.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 26 21\",\"enableBackground\":\"new 0 0 26 21\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTQuotemark;\n\nFTQuotemark.default = FTQuotemark;\n","var React = require('react');\n\nfunction FTArrowsSwitch (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",null,[React.createElement(\"polygon\",{\"points\":\"19,7 19,5 4.6,5 8.2,1.9 6.8,0.4 0.5,6 6.8,11.6 8.2,10.1 4.6,7 \\t\",\"key\":0}),React.createElement(\"polygon\",{\"points\":\"27.2,8.4 25.8,9.9 29.4,13 15,13 15,15 29.4,15 25.8,18.1 27.2,19.6 33.5,14 \\t\",\"key\":1})]));\n}\n\nFTArrowsSwitch.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 34 20\",\"enableBackground\":\"new 0 0 34 20\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTArrowsSwitch;\n\nFTArrowsSwitch.default = FTArrowsSwitch;\n","var React = require('react');\n\nfunction CheckmarkOrange (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"defs\",{\"key\":0},[React.createElement(\"style\",{\"key\":0},\".cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#d55a39;}\"),React.createElement(\"clipPath\",{\"transform\":\"translate(0 0)\",\"key\":1},React.createElement(\"rect\",{\"className\":\"cls-1\",\"width\":\"24\",\"height\":\"19\"}))]),React.createElement(\"title\",{\"key\":1},\"Asset 1\"),React.createElement(\"g\",{\"key\":2},React.createElement(\"g\",null,React.createElement(\"g\",null,React.createElement(\"g\",{\"className\":\"cls-2\"},React.createElement(\"polygon\",{\"className\":\"cls-3\",\"points\":\"20.29 0 9 11.57 3.71 6.56 0 10.27 9 19 24 3.71 20.29 0\"})))))]);\n}\n\nCheckmarkOrange.defaultProps = {\"viewBox\":\"0 0 24 19\"};\n\nmodule.exports = CheckmarkOrange;\n\nCheckmarkOrange.default = CheckmarkOrange;\n","module.exports = global[\"Components\"] = require(\"-!D:\\\\a\\\\1\\\\s\\\\Flytoget.Web.Site\\\\Frontend\\\\node_modules\\\\babel-loader\\\\lib\\\\index.js!D:\\\\a\\\\1\\\\s\\\\Flytoget.Web.Site\\\\Frontend\\\\node_modules\\\\eslint-loader\\\\dist\\\\cjs.js!.\\\\app.components.js\");","/* eslint-disable react/prop-types */\r\n'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _extends =\r\n Object.assign ||\r\n function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n return target;\r\n };\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _date_utils = require('./date_utils');\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction _objectWithoutProperties(obj, keys) {\r\n var target = {};\r\n for (var i in obj) {\r\n if (keys.indexOf(i) >= 0) continue;\r\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\r\n target[i] = obj[i];\r\n }\r\n return target;\r\n}\r\n\r\nclass DateInput extends React.Component {\r\n static propTypes = {\r\n date: PropTypes.object,\r\n dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n locale: PropTypes.string,\r\n onBlur: PropTypes.func,\r\n onChange: PropTypes.func,\r\n onChangeDate: PropTypes.func\r\n };\r\n\r\n static defaultProps = {\r\n dateFormat: 'L'\r\n };\r\n\r\n state = { value: this.safeDateFormat(this.props) };\r\n\r\n componentWillReceiveProps(newProps) {\r\n if (\r\n !(0, _date_utils.isSameDay)(newProps.date, this.props.date) ||\r\n newProps.locale !== this.props.locale ||\r\n newProps.dateFormat !== this.props.dateFormat\r\n ) {\r\n this.setState({\r\n value: this.safeDateFormat(newProps)\r\n });\r\n }\r\n }\r\n\r\n handleChange(event) {\r\n if (this.props.onChange) {\r\n this.props.onChange(event);\r\n }\r\n if (!event.defaultPrevented) {\r\n this.handleChangeDate(event.target.value);\r\n }\r\n }\r\n\r\n handleChangeDate(value) {\r\n if (this.props.onChangeDate) {\r\n var date = (0, _moment2.default)(\r\n value,\r\n this.props.dateFormat,\r\n this.props.locale || _moment2.default.locale(),\r\n true\r\n );\r\n if (date.isValid() && !(0, _date_utils.isDayDisabled)(date, this.props)) {\r\n this.props.onChangeDate(date);\r\n } else if (value === '') {\r\n this.props.onChangeDate(null);\r\n }\r\n }\r\n this.setState({ value: value });\r\n }\r\n\r\n safeDateFormat(props) {\r\n return (\r\n (props.date &&\r\n props.date\r\n .clone()\r\n .locale(props.locale || _moment2.default.locale())\r\n .format(\r\n Array.isArray(props.dateFormat)\r\n ? props.dateFormat[0]\r\n : props.dateFormat\r\n )) ||\r\n ''\r\n );\r\n }\r\n\r\n handleBlur(event) {\r\n this.setState({\r\n value: this.safeDateFormat(this.props)\r\n });\r\n if (this.props.onBlur) {\r\n this.props.onBlur(event);\r\n }\r\n }\r\n\r\n focus() {\r\n this.refs.input.focus();\r\n }\r\n\r\n render() {\r\n var _props = this.props,\r\n customInput = _props.customInput,\r\n rest = _objectWithoutProperties(_props, [\r\n 'customInput',\r\n 'date',\r\n 'locale',\r\n 'minDate',\r\n 'maxDate',\r\n 'excludeDates',\r\n 'includeDates',\r\n 'filterDate',\r\n 'dateFormat',\r\n 'onChangeDate'\r\n ]); // eslint-disable-line no-unused-vars\r\n\r\n if (customInput) {\r\n return _react2.default.cloneElement(\r\n customInput,\r\n _extends({}, rest, {\r\n ref: 'input',\r\n value: this.state.value,\r\n onBlur: this.handleBlur,\r\n onChange: this.handleChange\r\n })\r\n );\r\n }\r\n\r\n return _react2.default.createElement(\r\n 'input',\r\n _extends(\r\n {\r\n ref: 'input',\r\n type: 'text'\r\n },\r\n rest,\r\n {\r\n value: this.state.value,\r\n onBlur: this.handleBlur,\r\n onChange: this.handleChange\r\n }\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport default DateInput;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nvar _find = require('lodash/find');\r\n\r\nvar _find2 = _interopRequireDefault(_find);\r\n\r\nvar _year_dropdown = require('./year_dropdown');\r\n\r\nvar _year_dropdown2 = _interopRequireDefault(_year_dropdown);\r\n\r\nvar _month_dropdown = require('./month_dropdown');\r\n\r\nvar _month_dropdown2 = _interopRequireDefault(_month_dropdown);\r\n\r\nvar _month = require('./month');\r\n\r\nvar _month2 = _interopRequireDefault(_month);\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _date_utils = require('./date_utils');\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar DROPDOWN_FOCUS_CLASSNAMES = [\r\n 'react-datepicker__year-select',\r\n 'react-datepicker__month-select'\r\n];\r\n\r\nvar isDropdownSelect = function isDropdownSelect() {\r\n var element =\r\n arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n var classNames = (element.className || '').split(/\\s+/);\r\n return !!(0, _find2.default)(DROPDOWN_FOCUS_CLASSNAMES, function(\r\n testClassname\r\n ) {\r\n return classNames.indexOf(testClassname) >= 0;\r\n });\r\n};\r\n\r\nclass Calendar extends React.Component {\r\n static propTypes = {\r\n dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\r\n .isRequired,\r\n dropdownMode: PropTypes.oneOf(['scroll', 'select']).isRequired,\r\n endDate: PropTypes.object,\r\n excludeDates: PropTypes.array,\r\n filterDate: PropTypes.func,\r\n fixedHeight: PropTypes.bool,\r\n highlightDates: PropTypes.array,\r\n includeDates: PropTypes.array,\r\n locale: PropTypes.string,\r\n maxDate: PropTypes.object,\r\n minDate: PropTypes.object,\r\n monthsShown: PropTypes.number,\r\n onClickOutside: PropTypes.func.isRequired,\r\n onMonthChange: PropTypes.func,\r\n forceShowMonthNavigation: PropTypes.bool,\r\n onDropdownFocus: PropTypes.func,\r\n onSelect: PropTypes.func.isRequired,\r\n openToDate: PropTypes.object,\r\n peekNextMonth: PropTypes.bool,\r\n scrollableYearDropdown: PropTypes.bool,\r\n selected: PropTypes.object,\r\n selectsEnd: PropTypes.bool,\r\n selectsStart: PropTypes.bool,\r\n showMonthDropdown: PropTypes.bool,\r\n showWeekNumbers: PropTypes.bool,\r\n showYearDropdown: PropTypes.bool,\r\n startDate: PropTypes.object,\r\n todayButton: PropTypes.string,\r\n utcOffset: PropTypes.number,\r\n navigationNextMonthContent: PropTypes.element,\r\n navigationPrevMonthContent: PropTypes.element\r\n };\r\n\r\n static defaultProps = {\r\n onDropdownFocus: function onDropdownFocus() {},\r\n utcOffset: _moment2.default.utc().utcOffset(),\r\n monthsShown: 1,\r\n forceShowMonthNavigation: false\r\n };\r\n\r\n getDateInView = () => {\r\n var _props = this.props,\r\n selected = _props.selected,\r\n openToDate = _props.openToDate,\r\n utcOffset = _props.utcOffset;\r\n\r\n var minDate = (0, _date_utils.getEffectiveMinDate)(this.props);\r\n var maxDate = (0, _date_utils.getEffectiveMaxDate)(this.props);\r\n var current = _moment2.default.utc().utcOffset(utcOffset);\r\n if (selected) {\r\n return selected;\r\n } else if (\r\n minDate &&\r\n maxDate &&\r\n openToDate &&\r\n openToDate.isBetween(minDate, maxDate)\r\n ) {\r\n return openToDate;\r\n } else if (minDate && openToDate && openToDate.isAfter(minDate)) {\r\n return openToDate;\r\n } else if (minDate && minDate.isAfter(current)) {\r\n return minDate;\r\n } else if (maxDate && openToDate && openToDate.isBefore(maxDate)) {\r\n return openToDate;\r\n } else if (maxDate && maxDate.isBefore(current)) {\r\n return maxDate;\r\n } else if (openToDate) {\r\n return openToDate;\r\n } else {\r\n return current;\r\n }\r\n };\r\n\r\n state = {\r\n date: this.localizeMoment(this.getDateInView()),\r\n selectingDate: null\r\n };\r\n\r\n componentDidMount() {\r\n this.handleMonthChange(this.props.selected);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (\r\n nextProps.selected &&\r\n !(0, _date_utils.isSameDay)(nextProps.selected, this.props.selected)\r\n ) {\r\n let date = this.localizeMoment(nextProps.selected);\r\n this.setState({\r\n date: date\r\n });\r\n } else if (\r\n nextProps.openToDate &&\r\n !(0, _date_utils.isSameDay)(nextProps.openToDate, this.props.openToDate)\r\n ) {\r\n let date = this.localizeMoment(nextProps.openToDate);\r\n this.setState({\r\n date: date\r\n });\r\n }\r\n }\r\n\r\n handleClickOutside(event) {\r\n this.props.onClickOutside(event);\r\n }\r\n\r\n handleDropdownFocus(event) {\r\n if (isDropdownSelect(event.target)) {\r\n this.props.onDropdownFocus();\r\n }\r\n }\r\n\r\n localizeMoment(date) {\r\n return date.clone().locale(this.props.locale || _moment2.default.locale());\r\n }\r\n\r\n increaseMonth = () => {\r\n var _this = this;\r\n\r\n this.setState(\r\n {\r\n date: this.state.date.clone().add(1, 'month')\r\n },\r\n () => {\r\n return _this.handleMonthChange(_this.state.date);\r\n }\r\n );\r\n };\r\n\r\n decreaseMonth = () => {\r\n var _this2 = this;\r\n\r\n this.setState(\r\n {\r\n date: this.state.date.clone().subtract(1, 'month')\r\n },\r\n () => {\r\n return _this2.handleMonthChange(_this2.state.date);\r\n }\r\n );\r\n };\r\n\r\n handleDayClick = (day, event) => {\r\n this.props.onSelect(day, event);\r\n };\r\n\r\n handleDayMouseEnter = day => {\r\n this.setState({ selectingDate: day });\r\n };\r\n\r\n handleMonthMouseLeave = () => {\r\n this.setState({ selectingDate: null });\r\n };\r\n\r\n handleMonthChange = date => {\r\n if (this.props.onMonthChange) {\r\n var dateCheck = (0, _date_utils.allDaysDisabledAfter)(\r\n date,\r\n 'month',\r\n this.props\r\n );\r\n this.props.onMonthChange(date, dateCheck);\r\n }\r\n };\r\n\r\n changeYear = year => {\r\n this.setState({\r\n date: this.state.date.clone().set('year', year)\r\n });\r\n };\r\n\r\n changeMonth = month => {\r\n var _this3 = this;\r\n\r\n this.setState(\r\n {\r\n date: this.state.date.clone().set('month', month)\r\n },\r\n () => {\r\n return _this3.handleMonthChange(_this3.state.date);\r\n }\r\n );\r\n };\r\n\r\n header = function() {\r\n var date =\r\n arguments.length > 0 && arguments[0] !== undefined\r\n ? arguments[0]\r\n : this.state.date;\r\n\r\n var startOfWeek = date.clone().startOf('week');\r\n var dayNames = [];\r\n if (this.props.showWeekNumbers) {\r\n dayNames.push(\r\n _react2.default.createElement(\r\n 'div',\r\n { key: 'W', className: 'react-datepicker__day-name' },\r\n '#'\r\n )\r\n );\r\n }\r\n return dayNames.concat(\r\n [0, 1, 2, 3, 4, 5, 6].map(function(offset) {\r\n var day = startOfWeek.clone().add(offset, 'days');\r\n return _react2.default.createElement(\r\n 'div',\r\n { key: offset, className: 'react-datepicker__day-name' },\r\n day.localeData().weekdaysMin(day)\r\n );\r\n })\r\n );\r\n };\r\n\r\n renderPreviousMonthButton = () => {\r\n var dateCheck = (0, _date_utils.allDaysDisabledBefore)(\r\n this.state.date,\r\n 'month',\r\n this.props\r\n );\r\n if (!this.props.forceShowMonthNavigation && dateCheck) {\r\n return;\r\n }\r\n var extraClass =\r\n this.props.forceShowMonthNavigation && dateCheck\r\n ? ' react-datepicker__navigation--disabled'\r\n : '';\r\n return _react2.default.createElement(\r\n 'a',\r\n {\r\n className:\r\n 'react-datepicker__navigation react-datepicker__navigation--previous' +\r\n extraClass,\r\n onKeyDown: e => {\r\n var code = e.which;\r\n // 13 = Return, 32 = Space\r\n if (code === 13 || code === 32) {\r\n if (this.props.forceShowMonthNavigation && !dateCheck)\r\n this.decreaseMonth();\r\n }\r\n },\r\n tabIndex: 0,\r\n onClick:\r\n this.props.forceShowMonthNavigation && !dateCheck\r\n ? this.decreaseMonth\r\n : () => {}\r\n },\r\n this.props.navigationPrevMonthContent\r\n );\r\n };\r\n\r\n renderNextMonthButton = () => {\r\n var dateCheck = (0, _date_utils.allDaysDisabledAfter)(\r\n this.state.date,\r\n 'month',\r\n this.props\r\n );\r\n if (!this.props.forceShowMonthNavigation && dateCheck) {\r\n return;\r\n }\r\n var extraClass =\r\n this.props.forceShowMonthNavigation && dateCheck\r\n ? ' react-datepicker__navigation--disabled'\r\n : '';\r\n return _react2.default.createElement(\r\n 'a',\r\n {\r\n className:\r\n 'react-datepicker__navigation react-datepicker__navigation--next' +\r\n extraClass,\r\n onKeyDown: e => {\r\n var code = e.which;\r\n // 13 = Return, 32 = Space\r\n if (code === 13 || code === 32) {\r\n if (this.props.forceShowMonthNavigation && !dateCheck)\r\n this.increaseMonth();\r\n }\r\n },\r\n tabIndex: 0,\r\n\r\n onClick:\r\n this.props.forceShowMonthNavigation && !dateCheck\r\n ? this.increaseMonth\r\n : () => {}\r\n },\r\n this.props.navigationNextMonthContent\r\n );\r\n };\r\n\r\n renderCurrentMonth = function() {\r\n var date =\r\n arguments.length > 0 && arguments[0] !== undefined\r\n ? arguments[0]\r\n : this.state.date;\r\n\r\n var classes = ['react-datepicker__current-month'];\r\n if (this.props.showYearDropdown) {\r\n classes.push('react-datepicker__current-month--hasYearDropdown');\r\n }\r\n if (this.props.showMonthDropdown) {\r\n classes.push('react-datepicker__current-month--hasMonthDropdown');\r\n }\r\n return _react2.default.createElement(\r\n 'div',\r\n { className: classes.join(' ') },\r\n this.renderPreviousMonthButton(),\r\n _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker__current-month--value' },\r\n date.format(this.props.dateFormat)\r\n ),\r\n this.renderNextMonthButton()\r\n );\r\n };\r\n\r\n renderYearDropdown = function() {\r\n var overrideHide =\r\n arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\r\n\r\n if (!this.props.showYearDropdown || overrideHide) {\r\n return;\r\n }\r\n return _react2.default.createElement(_year_dropdown2.default, {\r\n dropdownMode: this.props.dropdownMode,\r\n onChange: this.changeYear,\r\n minDate: this.props.minDate,\r\n maxDate: this.props.maxDate,\r\n year: this.state.date.year(),\r\n scrollableYearDropdown: this.props.scrollableYearDropdown\r\n });\r\n };\r\n\r\n renderMonthDropdown = function() {\r\n if (!this.props.showMonthDropdown) {\r\n return;\r\n }\r\n return _react2.default.createElement(_month_dropdown2.default, {\r\n dropdownMode: this.props.dropdownMode,\r\n locale: this.props.locale,\r\n onChange: this.changeMonth,\r\n month: this.state.date.month()\r\n });\r\n };\r\n\r\n renderTodayButton = () => {\r\n var _this4 = this;\r\n\r\n if (!this.props.todayButton) {\r\n return;\r\n }\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__today-button',\r\n onClick: function onClick(event) {\r\n return _this4.props.onSelect(\r\n _moment2.default\r\n .utc()\r\n .utcOffset(_this4.props.utcOffset)\r\n .startOf('date'),\r\n event\r\n );\r\n }\r\n },\r\n this.props.todayButton\r\n );\r\n };\r\n\r\n renderMonths = () => {\r\n var monthList = [];\r\n for (var i = 0; i < this.props.monthsShown; ++i) {\r\n var monthDate = this.state.date.clone().add(i, 'M');\r\n var monthKey = 'month-' + i;\r\n monthList.push(\r\n _react2.default.createElement(\r\n 'div',\r\n { key: monthKey, className: 'react-datepicker__month-container' },\r\n _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker__header' },\r\n this.renderCurrentMonth(monthDate),\r\n _react2.default.createElement(\r\n 'div',\r\n {\r\n className:\r\n 'react-datepicker__header__dropdown react-datepicker__header__dropdown--' +\r\n this.props.dropdownMode,\r\n onFocus: this.handleDropdownFocus\r\n },\r\n this.renderMonthDropdown(i !== 0),\r\n this.renderYearDropdown(i !== 0)\r\n ),\r\n _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker__day-names' },\r\n this.header(monthDate)\r\n )\r\n ),\r\n _react2.default.createElement(_month2.default, {\r\n day: monthDate,\r\n onDayClick: this.handleDayClick,\r\n onDayMouseEnter: this.handleDayMouseEnter,\r\n onMouseLeave: this.handleMonthMouseLeave,\r\n minDate: this.props.minDate,\r\n maxDate: this.props.maxDate,\r\n excludeDates: this.props.excludeDates,\r\n highlightDates: this.props.highlightDates,\r\n selectingDate: this.state.selectingDate,\r\n includeDates: this.props.includeDates,\r\n fixedHeight: this.props.fixedHeight,\r\n filterDate: this.props.filterDate,\r\n selected: this.props.selected,\r\n selectsStart: this.props.selectsStart,\r\n selectsEnd: this.props.selectsEnd,\r\n showWeekNumbers: this.props.showWeekNumbers,\r\n startDate: this.props.startDate,\r\n endDate: this.props.endDate,\r\n peekNextMonth: this.props.peekNextMonth,\r\n utcOffset: this.props.utcOffset\r\n })\r\n )\r\n );\r\n }\r\n return monthList;\r\n };\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker' },\r\n _react2.default.createElement('div', {\r\n className: 'react-datepicker__triangle'\r\n }),\r\n this.renderMonths(),\r\n this.renderTodayButton()\r\n );\r\n }\r\n}\r\n\r\nexport default Calendar;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _year_dropdown_options = require('./year_dropdown_options');\r\n\r\nvar _year_dropdown_options2 = _interopRequireDefault(_year_dropdown_options);\r\n\r\nvar _reactOnclickoutside = require('react-onclickoutside');\r\n\r\nvar _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar WrappedYearDropdownOptions = (0, _reactOnclickoutside2.default)(\r\n _year_dropdown_options2.default\r\n);\r\n\r\nclass YearDropdown extends React.Component {\r\n static propTypes = {\r\n dropdownMode: PropTypes.oneOf(['scroll', 'select']).isRequired,\r\n maxDate: PropTypes.object,\r\n minDate: PropTypes.object,\r\n onChange: PropTypes.func.isRequired,\r\n scrollableYearDropdown: PropTypes.bool,\r\n year: PropTypes.number.isRequired\r\n };\r\n\r\n state = {\r\n dropdownVisible: false\r\n };\r\n\r\n renderSelectOptions() {\r\n var minYear = this.props.minDate ? this.props.minDate.year() : 1900;\r\n var maxYear = this.props.maxDate ? this.props.maxDate.year() : 2100;\r\n\r\n var options = [];\r\n for (var i = minYear; i <= maxYear; i++) {\r\n options.push(\r\n _react2.default.createElement('option', { key: i, value: i }, i)\r\n );\r\n }\r\n return options;\r\n }\r\n\r\n onSelectChange(e) {\r\n this.onChange(e.target.value);\r\n }\r\n\r\n renderSelectMode() {\r\n return _react2.default.createElement(\r\n 'select',\r\n {\r\n value: this.props.year,\r\n className: 'react-datepicker__year-select',\r\n onChange: this.onSelectChange\r\n },\r\n this.renderSelectOptions()\r\n );\r\n }\r\n\r\n renderReadView(visible) {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n key: 'read',\r\n style: { visibility: visible ? 'visible' : 'hidden' },\r\n className: 'react-datepicker__year-read-view',\r\n onClick: this.toggleDropdown\r\n },\r\n _react2.default.createElement('span', {\r\n className: 'react-datepicker__year-read-view--down-arrow'\r\n }),\r\n _react2.default.createElement(\r\n 'span',\r\n { className: 'react-datepicker__year-read-view--selected-year' },\r\n this.props.year\r\n )\r\n );\r\n }\r\n\r\n renderDropdown() {\r\n return _react2.default.createElement(WrappedYearDropdownOptions, {\r\n key: 'dropdown',\r\n ref: 'options',\r\n year: this.props.year,\r\n onChange: this.onChange,\r\n onCancel: this.toggleDropdown,\r\n scrollableYearDropdown: this.props.scrollableYearDropdown\r\n });\r\n }\r\n\r\n renderScrollMode() {\r\n var dropdownVisible = this.state.dropdownVisible;\r\n\r\n var result = [this.renderReadView(!dropdownVisible)];\r\n if (dropdownVisible) {\r\n result.unshift(this.renderDropdown());\r\n }\r\n return result;\r\n }\r\n\r\n onChange(year) {\r\n this.toggleDropdown();\r\n if (year === this.props.year) return;\r\n this.props.onChange(year);\r\n }\r\n\r\n toggleDropdown() {\r\n this.setState({\r\n dropdownVisible: !this.state.dropdownVisible\r\n });\r\n }\r\n\r\n render() {\r\n var renderedDropdown = void 0;\r\n switch (this.props.dropdownMode) {\r\n case 'scroll':\r\n renderedDropdown = this.renderScrollMode();\r\n break;\r\n case 'select':\r\n renderedDropdown = this.renderSelectMode();\r\n break;\r\n }\r\n\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className:\r\n 'react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--' +\r\n this.props.dropdownMode\r\n },\r\n renderedDropdown\r\n );\r\n }\r\n}\r\n\r\nexport default YearDropdown;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _classnames = require('classnames');\r\n\r\nvar _classnames2 = _interopRequireDefault(_classnames);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction generateYears(year, noOfYear) {\r\n var list = [];\r\n for (var i = 0; i < noOfYear; i++) {\r\n list.push(year - i);\r\n }\r\n return list;\r\n}\r\n\r\nclass YearDropdownOptions extends React.Component {\r\n static propTypes = {\r\n onCancel: PropTypes.func.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n scrollableYearDropdown: PropTypes.bool,\r\n year: PropTypes.number.isRequired\r\n };\r\n\r\n state = {\r\n yearsList: this.props.scrollableYearDropdown\r\n ? generateYears(this.props.year, 50)\r\n : generateYears(this.props.year, 5)\r\n };\r\n\r\n renderOptions() {\r\n var _this = this;\r\n\r\n var selectedYear = this.props.year;\r\n var options = this.state.yearsList.map(function(year) {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__year-option',\r\n key: year,\r\n ref: year,\r\n onClick: _this.onChange.bind(_this, year)\r\n },\r\n selectedYear === year\r\n ? _react2.default.createElement(\r\n 'span',\r\n { className: 'react-datepicker__year-option--selected' },\r\n '\\u2713'\r\n )\r\n : '',\r\n year\r\n );\r\n });\r\n\r\n options.unshift(\r\n _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__year-option',\r\n ref: 'upcoming',\r\n key: 'upcoming',\r\n onClick: this.incrementYears\r\n },\r\n _react2.default.createElement('a', {\r\n className:\r\n 'react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming'\r\n })\r\n )\r\n );\r\n options.push(\r\n _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__year-option',\r\n ref: 'previous',\r\n key: 'previous',\r\n onClick: this.decrementYears\r\n },\r\n _react2.default.createElement('a', {\r\n className:\r\n 'react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous'\r\n })\r\n )\r\n );\r\n return options;\r\n }\r\n\r\n onChange(year) {\r\n this.props.onChange(year);\r\n }\r\n\r\n handleClickOutside() {\r\n this.props.onCancel();\r\n }\r\n\r\n shiftYears(amount) {\r\n var years = this.state.yearsList.map(function(year) {\r\n return year + amount;\r\n });\r\n\r\n this.setState({\r\n yearsList: years\r\n });\r\n }\r\n\r\n incrementYears() {\r\n return this.shiftYears(1);\r\n }\r\n\r\n decrementYears() {\r\n return this.shiftYears(-1);\r\n }\r\n\r\n render() {\r\n var dropdownClass = (0, _classnames2.default)({\r\n 'react-datepicker__year-dropdown': true,\r\n 'react-datepicker__year-dropdown--scrollable': this.props\r\n .scrollableYearDropdown\r\n });\r\n\r\n return _react2.default.createElement(\r\n 'div',\r\n { className: dropdownClass },\r\n this.renderOptions()\r\n );\r\n }\r\n}\r\n\r\nexport default YearDropdownOptions;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _month_dropdown_options = require('./month_dropdown_options');\r\n\r\nvar _month_dropdown_options2 = _interopRequireDefault(_month_dropdown_options);\r\n\r\nvar _reactOnclickoutside = require('react-onclickoutside');\r\n\r\nvar _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nvar _range = require('lodash/range');\r\n\r\nvar _range2 = _interopRequireDefault(_range);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar WrappedMonthDropdownOptions = (0, _reactOnclickoutside2.default)(\r\n _month_dropdown_options2.default\r\n);\r\n\r\nclass MonthDropdown extends React.Component {\r\n static propTypes = {\r\n dropdownMode: PropTypes.oneOf(['scroll', 'select']).isRequired,\r\n locale: PropTypes.string,\r\n month: PropTypes.number.isRequired,\r\n onChange: PropTypes.func.isRequired\r\n };\r\n\r\n state = {\r\n dropdownVisible: false\r\n };\r\n\r\n renderSelectOptions(monthNames) {\r\n return monthNames.map(function(M, i) {\r\n return _react2.default.createElement('option', { key: i, value: i }, M);\r\n });\r\n }\r\n\r\n renderSelectMode(monthNames) {\r\n var _this = this;\r\n\r\n return _react2.default.createElement(\r\n 'select',\r\n {\r\n value: this.props.month,\r\n className: 'react-datepicker__month-select',\r\n onChange: function onChange(e) {\r\n return _this.onChange(e.target.value);\r\n }\r\n },\r\n this.renderSelectOptions(monthNames)\r\n );\r\n }\r\n\r\n renderReadView(visible, monthNames) {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n key: 'read',\r\n style: { visibility: visible ? 'visible' : 'hidden' },\r\n className: 'react-datepicker__month-read-view',\r\n onClick: this.toggleDropdown\r\n },\r\n _react2.default.createElement(\r\n 'span',\r\n { className: 'react-datepicker__month-read-view--selected-month' },\r\n monthNames[this.props.month]\r\n ),\r\n _react2.default.createElement('span', {\r\n className: 'react-datepicker__month-read-view--down-arrow'\r\n })\r\n );\r\n }\r\n\r\n renderDropdown(monthNames) {\r\n return _react2.default.createElement(WrappedMonthDropdownOptions, {\r\n key: 'dropdown',\r\n ref: 'options',\r\n month: this.props.month,\r\n monthNames: monthNames,\r\n onChange: this.onChange,\r\n onCancel: this.toggleDropdown\r\n });\r\n }\r\n\r\n renderScrollMode(monthNames) {\r\n var dropdownVisible = this.state.dropdownVisible;\r\n\r\n var result = [this.renderReadView(!dropdownVisible, monthNames)];\r\n if (dropdownVisible) {\r\n result.unshift(this.renderDropdown(monthNames));\r\n }\r\n return result;\r\n }\r\n\r\n onChange(month) {\r\n this.toggleDropdown();\r\n if (month !== this.props.month) {\r\n this.props.onChange(month);\r\n }\r\n }\r\n\r\n toggleDropdown() {\r\n this.setState({\r\n dropdownVisible: !this.state.dropdownVisible\r\n });\r\n }\r\n\r\n render() {\r\n var localeData = _moment2.default.localeData(this.props.locale);\r\n var monthNames = (0, _range2.default)(0, 12).map(function(M) {\r\n return localeData.months((0, _moment2.default)({ M: M }));\r\n });\r\n\r\n var renderedDropdown = void 0;\r\n switch (this.props.dropdownMode) {\r\n case 'scroll':\r\n renderedDropdown = this.renderScrollMode(monthNames);\r\n break;\r\n case 'select':\r\n renderedDropdown = this.renderSelectMode(monthNames);\r\n break;\r\n }\r\n\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className:\r\n 'react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--' +\r\n this.props.dropdownMode\r\n },\r\n renderedDropdown\r\n );\r\n }\r\n}\r\n\r\nexport default MonthDropdown;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nclass MonthDropdownOptions extends React.Component {\r\n static propTypes = {\r\n onCancel: PropTypes.func.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n month: PropTypes.number.isRequired,\r\n monthNames: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired\r\n };\r\n\r\n renderOptions() {\r\n var _this = this;\r\n\r\n var selectedMonth = this.props.month;\r\n var options = this.props.monthNames.map(function(month, i) {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__month-option',\r\n key: month,\r\n ref: month,\r\n onClick: _this.onChange.bind(_this, i)\r\n },\r\n selectedMonth === i\r\n ? _react2.default.createElement(\r\n 'span',\r\n { className: 'react-datepicker__month-option--selected' },\r\n '\\u2713'\r\n )\r\n : '',\r\n month\r\n );\r\n });\r\n\r\n return options;\r\n }\r\n\r\n onChange(month) {\r\n this.props.onChange(month);\r\n }\r\n\r\n handleClickOutside() {\r\n this.props.onCancel();\r\n }\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker__month-dropdown' },\r\n this.renderOptions()\r\n );\r\n }\r\n}\r\n\r\nexport default MonthDropdownOptions;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _classnames = require('classnames');\r\n\r\nvar _classnames2 = _interopRequireDefault(_classnames);\r\n\r\nvar _week = require('./week');\r\n\r\nvar _week2 = _interopRequireDefault(_week);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar FIXED_HEIGHT_STANDARD_WEEK_COUNT = 6;\r\n\r\nclass Month extends React.Component {\r\n static propTypes = {\r\n day: PropTypes.object.isRequired,\r\n endDate: PropTypes.object,\r\n excludeDates: PropTypes.array,\r\n filterDate: PropTypes.func,\r\n fixedHeight: PropTypes.bool,\r\n highlightDates: PropTypes.array,\r\n includeDates: PropTypes.array,\r\n maxDate: PropTypes.object,\r\n minDate: PropTypes.object,\r\n onDayClick: PropTypes.func,\r\n onDayMouseEnter: PropTypes.func,\r\n onMouseLeave: PropTypes.func,\r\n peekNextMonth: PropTypes.bool,\r\n selected: PropTypes.object,\r\n selectingDate: PropTypes.object,\r\n selectsEnd: PropTypes.bool,\r\n selectsStart: PropTypes.bool,\r\n showWeekNumbers: PropTypes.bool,\r\n startDate: PropTypes.object,\r\n utcOffset: PropTypes.number\r\n };\r\n\r\n handleDayClick = (day, event) => {\r\n if (this.props.onDayClick) {\r\n this.props.onDayClick(day, event);\r\n }\r\n };\r\n\r\n handleDayMouseEnter = day => {\r\n if (this.props.onDayMouseEnter) {\r\n this.props.onDayMouseEnter(day);\r\n }\r\n };\r\n\r\n handleMouseLeave = () => {\r\n if (this.props.onMouseLeave) {\r\n this.props.onMouseLeave();\r\n }\r\n };\r\n\r\n isWeekInMonth = startOfWeek => {\r\n var day = this.props.day;\r\n var endOfWeek = startOfWeek.clone().add(6, 'days');\r\n return startOfWeek.isSame(day, 'month') || endOfWeek.isSame(day, 'month');\r\n };\r\n\r\n renderWeeks = () => {\r\n var weeks = [];\r\n var isFixedHeight = this.props.fixedHeight;\r\n var currentWeekStart = this.props.day\r\n .clone()\r\n .startOf('month')\r\n .startOf('week');\r\n var i = 0;\r\n var breakAfterNextPush = false;\r\n\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n weeks.push(\r\n _react2.default.createElement(_week2.default, {\r\n key: i,\r\n day: currentWeekStart,\r\n month: this.props.day.month(),\r\n onDayClick: this.handleDayClick,\r\n onDayMouseEnter: this.handleDayMouseEnter,\r\n minDate: this.props.minDate,\r\n maxDate: this.props.maxDate,\r\n excludeDates: this.props.excludeDates,\r\n includeDates: this.props.includeDates,\r\n highlightDates: this.props.highlightDates,\r\n selectingDate: this.props.selectingDate,\r\n filterDate: this.props.filterDate,\r\n selected: this.props.selected,\r\n selectsStart: this.props.selectsStart,\r\n selectsEnd: this.props.selectsEnd,\r\n showWeekNumber: this.props.showWeekNumbers,\r\n startDate: this.props.startDate,\r\n endDate: this.props.endDate,\r\n utcOffset: this.props.utcOffset\r\n })\r\n );\r\n\r\n if (breakAfterNextPush) break;\r\n\r\n i++;\r\n currentWeekStart = currentWeekStart.clone().add(1, 'weeks');\r\n\r\n // If one of these conditions is true, we will either break on this week\r\n // or break on the next week\r\n var isFixedAndFinalWeek =\r\n isFixedHeight && i >= FIXED_HEIGHT_STANDARD_WEEK_COUNT;\r\n var isNonFixedAndOutOfMonth =\r\n !isFixedHeight && !this.isWeekInMonth(currentWeekStart);\r\n\r\n if (isFixedAndFinalWeek || isNonFixedAndOutOfMonth) {\r\n if (this.props.peekNextMonth) {\r\n breakAfterNextPush = true;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return weeks;\r\n };\r\n\r\n getClassNames = () => {\r\n var _props = this.props,\r\n selectingDate = _props.selectingDate,\r\n selectsStart = _props.selectsStart,\r\n selectsEnd = _props.selectsEnd;\r\n\r\n return (0, _classnames2.default)('react-datepicker__month', {\r\n 'react-datepicker__month--selecting-range':\r\n selectingDate && (selectsStart || selectsEnd)\r\n });\r\n };\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: this.getClassNames(),\r\n onMouseLeave: this.handleMouseLeave,\r\n role: 'listbox'\r\n },\r\n this.renderWeeks()\r\n );\r\n }\r\n}\r\n\r\nexport default Month;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _day = require('./day');\r\n\r\nvar _day2 = _interopRequireDefault(_day);\r\n\r\nvar _week_number = require('./week_number');\r\n\r\nvar _week_number2 = _interopRequireDefault(_week_number);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nclass Week extends React.Component {\r\n static propTypes = {\r\n day: PropTypes.object.isRequired,\r\n onDayClick: PropTypes.func,\r\n onDayMouseEnter: PropTypes.func,\r\n showWeekNumber: PropTypes.bool\r\n };\r\n\r\n state = {\r\n _isDisabled: true\r\n };\r\n\r\n setDisabledState(props) {\r\n var startOfWeek = props.day.clone().startOf('week');\r\n var endOfWeek = startOfWeek.clone().add(6, 'days');\r\n\r\n this.setState({\r\n _isDisabled:\r\n endOfWeek.isBefore(props.minDate, 'day') ||\r\n startOfWeek.isAfter(props.maxDate, 'day')\r\n });\r\n }\r\n\r\n componentWillMount() {\r\n this.setDisabledState(this.props);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setDisabledState(nextProps);\r\n }\r\n\r\n handleDayClick(day, event) {\r\n if (this.props.onDayClick) {\r\n this.props.onDayClick(day, event);\r\n }\r\n }\r\n\r\n handleDayMouseEnter(day) {\r\n if (this.props.onDayMouseEnter) {\r\n this.props.onDayMouseEnter(day);\r\n }\r\n }\r\n\r\n days = [];\r\n renderDays() {\r\n var _this = this;\r\n\r\n var startOfWeek = this.props.day.clone().startOf('week');\r\n // console.log('Start of week: ', startOfWeek.format());\r\n var days = [];\r\n if (this.props.showWeekNumber) {\r\n days.push(\r\n _react2.default.createElement(_week_number2.default, {\r\n key: 'W',\r\n weekNumber: parseInt(startOfWeek.format('w'), 10)\r\n })\r\n );\r\n }\r\n\r\n this.days = [];\r\n\r\n return days.concat(\r\n [0, 1, 2, 3, 4, 5, 6].map(function(offset) {\r\n var day = startOfWeek.clone().add(offset, 'days');\r\n return _react2.default.createElement(_day2.default, {\r\n ref: child => {\r\n _this.days.push(child);\r\n },\r\n key: offset,\r\n day: day,\r\n month: _this.props.month,\r\n onClick: _this.handleDayClick.bind(_this, day),\r\n onMouseEnter: _this.handleDayMouseEnter.bind(_this, day),\r\n minDate: _this.props.minDate,\r\n maxDate: _this.props.maxDate,\r\n excludeDates: _this.props.excludeDates,\r\n includeDates: _this.props.includeDates,\r\n highlightDates: _this.props.highlightDates,\r\n selectingDate: _this.props.selectingDate,\r\n filterDate: _this.props.filterDate,\r\n selected: _this.props.selected,\r\n selectsStart: _this.props.selectsStart,\r\n selectsEnd: _this.props.selectsEnd,\r\n startDate: _this.props.startDate,\r\n endDate: _this.props.endDate,\r\n utcOffset: _this.props.utcOffset\r\n });\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: this.state._isDisabled\r\n ? 'react-datepicker__week react-datepicker__week--disabled'\r\n : 'react-datepicker__week'\r\n },\r\n this.renderDays()\r\n );\r\n }\r\n}\r\n\r\nexport default Week;\r\n","/* eslint-disable react/prop-types */\r\n'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport { dateFormat } from 'components/travel-planner/constants';\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _classnames = require('classnames');\r\n\r\nvar _classnames2 = _interopRequireDefault(_classnames);\r\n\r\nvar _date_utils = require('./date_utils');\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nvar todayDate = moment().format(dateFormat);\r\n\r\nclass Day extends React.Component {\r\n static propTypes = {\r\n day: PropTypes.object.isRequired,\r\n month: PropTypes.number,\r\n onClick: PropTypes.func,\r\n onMouseEnter: PropTypes.func,\r\n selected: PropTypes.object,\r\n utcOffset: PropTypes.number\r\n };\r\n\r\n static defaultProps = { utcOffset: _moment2.default.utc().utcOffset() };\r\n\r\n isDisabled = () => {\r\n return (0, _date_utils.isDayDisabled)(this.props.day, this.props);\r\n };\r\n\r\n handleClick = event => {\r\n if (!this.isDisabled() && this.props.onClick) {\r\n this.props.onClick(event);\r\n }\r\n };\r\n\r\n handleMouseEnter = event => {\r\n if (!this.isDisabled() && this.props.onMouseEnter) {\r\n this.props.onMouseEnter(event);\r\n }\r\n };\r\n\r\n isSameDay = other => {\r\n return (0, _date_utils.isSameDay)(this.props.day, other);\r\n };\r\n\r\n isHighlighted = () => {\r\n var _props = this.props,\r\n day = _props.day,\r\n highlightDates = _props.highlightDates;\r\n\r\n if (!highlightDates) return false;\r\n return highlightDates.some(function(testDay) {\r\n return (0, _date_utils.isSameDay)(day, testDay);\r\n });\r\n };\r\n\r\n isInRange = () => {\r\n var _props2 = this.props,\r\n day = _props2.day,\r\n startDate = _props2.startDate,\r\n endDate = _props2.endDate;\r\n\r\n if (!startDate || !endDate) return false;\r\n return (0, _date_utils.isDayInRange)(day, startDate, endDate);\r\n };\r\n\r\n isInSelectingRange = () => {\r\n var _props3 = this.props,\r\n day = _props3.day,\r\n selectsStart = _props3.selectsStart,\r\n selectsEnd = _props3.selectsEnd,\r\n selectingDate = _props3.selectingDate,\r\n startDate = _props3.startDate,\r\n endDate = _props3.endDate;\r\n\r\n if (!(selectsStart || selectsEnd) || !selectingDate || this.isDisabled()) {\r\n return false;\r\n }\r\n\r\n if (selectsStart && endDate && selectingDate.isSameOrBefore(endDate)) {\r\n return (0, _date_utils.isDayInRange)(day, selectingDate, endDate);\r\n }\r\n\r\n if (selectsEnd && startDate && selectingDate.isSameOrAfter(startDate)) {\r\n return (0, _date_utils.isDayInRange)(day, startDate, selectingDate);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n isSelectingRangeStart = () => {\r\n if (!this.isInSelectingRange()) {\r\n return false;\r\n }\r\n\r\n var _props4 = this.props,\r\n day = _props4.day,\r\n selectingDate = _props4.selectingDate,\r\n startDate = _props4.startDate,\r\n selectsStart = _props4.selectsStart;\r\n\r\n if (selectsStart) {\r\n return (0, _date_utils.isSameDay)(day, selectingDate);\r\n } else {\r\n return (0, _date_utils.isSameDay)(day, startDate);\r\n }\r\n };\r\n\r\n isSelectingRangeEnd = () => {\r\n if (!this.isInSelectingRange()) {\r\n return false;\r\n }\r\n\r\n var _props5 = this.props,\r\n day = _props5.day,\r\n selectingDate = _props5.selectingDate,\r\n endDate = _props5.endDate,\r\n selectsEnd = _props5.selectsEnd;\r\n\r\n if (selectsEnd) {\r\n return (0, _date_utils.isSameDay)(day, selectingDate);\r\n } else {\r\n return (0, _date_utils.isSameDay)(day, endDate);\r\n }\r\n };\r\n\r\n isRangeStart = () => {\r\n var _props6 = this.props,\r\n day = _props6.day,\r\n startDate = _props6.startDate,\r\n endDate = _props6.endDate;\r\n\r\n if (!startDate || !endDate) return false;\r\n return (0, _date_utils.isSameDay)(startDate, day);\r\n };\r\n\r\n isRangeEnd = () => {\r\n var _props7 = this.props,\r\n day = _props7.day,\r\n startDate = _props7.startDate,\r\n endDate = _props7.endDate;\r\n\r\n if (!startDate || !endDate) return false;\r\n return (0, _date_utils.isSameDay)(endDate, day);\r\n };\r\n\r\n isWeekend = () => {\r\n var weekday = this.props.day.day();\r\n return weekday === 0 || weekday === 6;\r\n };\r\n\r\n isOutsideMonth = () => {\r\n return (\r\n this.props.month !== undefined &&\r\n this.props.month !== this.props.day.month()\r\n );\r\n };\r\n\r\n getClassNames = () => {\r\n return (0, _classnames2.default)('react-datepicker__day', {\r\n 'react-datepicker__day--disabled': this.isDisabled(),\r\n 'react-datepicker__day--selected': this.isSameDay(this.props.selected),\r\n 'react-datepicker__day--highlighted': this.isHighlighted(),\r\n 'react-datepicker__day--range-start': this.isRangeStart(),\r\n 'react-datepicker__day--range-end': this.isRangeEnd(),\r\n 'react-datepicker__day--in-range': this.isInRange(),\r\n 'react-datepicker__day--in-selecting-range': this.isInSelectingRange(),\r\n 'react-datepicker__day--selecting-range-start': this.isSelectingRangeStart(),\r\n 'react-datepicker__day--selecting-range-end': this.isSelectingRangeEnd(),\r\n 'react-datepicker__day--today': this.isSameDay(\r\n _moment2.default.utc().utcOffset(this.props.utcOffset)\r\n ),\r\n 'react-datepicker__day--weekend': this.isWeekend(),\r\n 'react-datepicker__day--outside-month': this.isOutsideMonth(),\r\n 'react-datepicker__day--past': moment(this.props.day).isBefore(todayDate)\r\n });\r\n };\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: this.getClassNames(),\r\n tabIndex: 0,\r\n onKeyDown: e => {\r\n var code = e.which;\r\n // 13 = Return, 32 = Space\r\n if (code === 13 || code === 32) {\r\n this.handleClick();\r\n }\r\n },\r\n onClick: this.handleClick,\r\n onMouseEnter: this.handleMouseEnter,\r\n 'aria-label': 'day-' + this.props.day.date(),\r\n role: 'option'\r\n },\r\n this.props.day.date()\r\n );\r\n }\r\n}\r\n\r\nexport default Day;\r\n","'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nclass WeekNumber extends React.Component {\r\n static propTypes = {\r\n weekNumber: PropTypes.number.isRequired\r\n };\r\n\r\n render() {\r\n return _react2.default.createElement(\r\n 'div',\r\n {\r\n className: 'react-datepicker__week-number',\r\n 'aria-label': 'week-' + this.props.weekNumber\r\n },\r\n this.props.weekNumber\r\n );\r\n }\r\n}\r\n\r\nexport default WeekNumber;\r\n","/* eslint-disable react/prop-types */\r\n'use strict';\r\n\r\nimport React from 'react';\r\n\r\nvar _extends =\r\n Object.assign ||\r\n function(target) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n for (var key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n return target;\r\n };\r\n\r\nvar _react = require('react');\r\n\r\nvar _reactDom = require('react-dom');\r\n\r\nvar _reactDom2 = _interopRequireDefault(_reactDom);\r\n\r\nvar _tether = require('tether');\r\n\r\nvar _tether2 = _interopRequireDefault(_tether);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction _objectWithoutProperties(obj, keys) {\r\n var target = {};\r\n for (var i in obj) {\r\n if (keys.indexOf(i) >= 0) continue;\r\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\r\n target[i] = obj[i];\r\n }\r\n return target;\r\n}\r\n\r\nfunction childrenPropType(_ref, componentName) {\r\n var children = _ref.children;\r\n\r\n var childCount = _react.Children.count(children);\r\n if (childCount <= 0) {\r\n return new Error(\r\n componentName +\r\n ' expects at least one child to use as the target element.'\r\n );\r\n } else if (childCount > 2) {\r\n return new Error(\r\n 'Only a max of two children allowed in ' + componentName + '.'\r\n );\r\n }\r\n}\r\n\r\nclass TetherComponent extends React.Component {\r\n static propTypes = {\r\n children: childrenPropType\r\n };\r\n\r\n static defaultProps = {\r\n renderElementTag: 'div',\r\n renderElementTo: null\r\n };\r\n\r\n componentDidMount() {\r\n this._targetNode = _reactDom2.default.findDOMNode(this);\r\n this._update();\r\n }\r\n\r\n componentDidUpdate() {\r\n this._update();\r\n }\r\n\r\n componentWillUnmount() {\r\n this._destroy();\r\n }\r\n\r\n disable() {\r\n this._tether.disable();\r\n }\r\n\r\n enable() {\r\n this._tether.enable();\r\n }\r\n\r\n position() {\r\n this._tether.position();\r\n }\r\n\r\n _destroy() {\r\n if (this._elementParentNode) {\r\n _reactDom2.default.unmountComponentAtNode(this._elementParentNode);\r\n this._elementParentNode.parentNode.removeChild(this._elementParentNode);\r\n }\r\n\r\n if (this._tether) {\r\n this._tether.destroy();\r\n }\r\n\r\n this._elementParentNode = null;\r\n this._tether = null;\r\n }\r\n\r\n _update() {\r\n var _this = this;\r\n\r\n var _props = this.props,\r\n children = _props.children,\r\n renderElementTag = _props.renderElementTag,\r\n renderElementTo = _props.renderElementTo;\r\n\r\n var elementComponent = children[1];\r\n\r\n // if no element component provided, bail out\r\n if (!elementComponent) {\r\n // destroy Tether elements if they have been created\r\n if (this._tether) {\r\n this._destroy();\r\n }\r\n return;\r\n }\r\n\r\n // create element node container if it hasn't been yet\r\n if (!this._elementParentNode) {\r\n // create a node that we can stick our content Component in\r\n this._elementParentNode = document.createElement(renderElementTag);\r\n\r\n // append node to the end of the body\r\n var renderTo = renderElementTo || document.body;\r\n renderTo.appendChild(this._elementParentNode);\r\n }\r\n\r\n // render element component into the DOM\r\n _reactDom2.default.unstable_renderSubtreeIntoContainer(\r\n this,\r\n elementComponent,\r\n this._elementParentNode,\r\n function() {\r\n // don't update Tether until the subtree has finished rendering\r\n _this._updateTether();\r\n }\r\n );\r\n }\r\n\r\n _updateTether() {\r\n var _props2 = this.props,\r\n options = _objectWithoutProperties(_props2, [\r\n 'renderElementTag',\r\n 'renderElementTo'\r\n ]); // eslint-disable-line no-unused-vars\r\n\r\n var tetherOptions = _extends(\r\n {\r\n target: this._targetNode,\r\n element: this._elementParentNode\r\n },\r\n options\r\n );\r\n\r\n if (!this._tether) {\r\n this._tether = new _tether2.default(tetherOptions);\r\n } else {\r\n this._tether.setOptions(tetherOptions);\r\n }\r\n\r\n this._tether.position();\r\n }\r\n\r\n render() {\r\n var children = this.props.children;\r\n\r\n var firstChild = null;\r\n\r\n // we use forEach because the second child could be null\r\n // causing children to not be an array\r\n _react.Children.forEach(children, function(child, index) {\r\n if (index === 0) {\r\n firstChild = child;\r\n return false;\r\n }\r\n });\r\n\r\n return firstChild;\r\n }\r\n}\r\n\r\nexport default TetherComponent;\r\n","import React from 'react';\r\n\r\n/** Attaches an event listener for `eventName` to `window`. */\r\nexport default function useEvent(\r\n eventName = '',\r\n eventHandler = () => {},\r\n dependencies = []\r\n) {\r\n React.useEffect(() => {\r\n window.addEventListener(eventName, eventHandler);\r\n return () => window.removeEventListener(eventName, eventHandler);\r\n }, dependencies);\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst Link = ({ url, text, openInNewTab, className }) => {\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nLink.propTypes = {\r\n className: PropTypes.string,\r\n url: PropTypes.string,\r\n text: PropTypes.string,\r\n openInNewTab: PropTypes.bool\r\n};\r\n\r\nLink.propTypesMeta = {\r\n className: 'exclude'\r\n};\r\n\r\nexport default Link;\r\n","export const getPageHash = () => {\r\n return window && window.location.hash && window.location.hash != ''\r\n ? window.location.hash.split('#')[1]\r\n : null;\r\n};\r\n\r\nexport const getPageUrlWithoutQueryAndHash = () => {\r\n return window ? window.location.pathname : null;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport useEvent from '../../hooks/use-event';\r\nimport Link from 'components/link/link';\r\n\r\nimport { getPageHash, getPageUrlWithoutQueryAndHash } from 'utils/url-utils.js';\r\n\r\nconst Breadcrumbs = ({\r\n lang = {\r\n dapatureDetails: 'Valgt avgang',\r\n breadcrumbsLabel: 'Du er her'\r\n },\r\n links,\r\n className,\r\n inContentContainer = false\r\n}) => {\r\n const [breadcrumbsLinks, setBreadcrumbsLinks] = React.useState(links);\r\n\r\n const renderBreadcrumbs = breadcrumbsLinks && breadcrumbsLinks.length > 1;\r\n\r\n const getHashedBradcrumsMap = () => {\r\n var pageUrl = getPageUrlWithoutQueryAndHash();\r\n var hashedBreadcrumbsMap = new Map();\r\n hashedBreadcrumbsMap\r\n .set('list', [\r\n {\r\n text: lang.departures,\r\n url: pageUrl + '#list'\r\n }\r\n ])\r\n .set('details', [\r\n hashedBreadcrumbsMap.get('list')[0],\r\n { text: lang.dapatureDetails }\r\n ]);\r\n return hashedBreadcrumbsMap;\r\n };\r\n\r\n const updateBreadcrumbs = () => {\r\n var pageHash = getPageHash();\r\n\r\n if (pageHash) {\r\n const hashedBreadcrumsMap = getHashedBradcrumsMap();\r\n\r\n if (hashedBreadcrumsMap.has(pageHash)) {\r\n var hashedLinks = hashedBreadcrumsMap.get(pageHash);\r\n let breadcrumbsList = [...links, ...hashedLinks];\r\n setBreadcrumbsLinks(breadcrumbsList);\r\n } else {\r\n setBreadcrumbsLinks(links);\r\n }\r\n } else {\r\n setBreadcrumbsLinks(links);\r\n }\r\n };\r\n\r\n useEvent('hashchange', () => {\r\n updateBreadcrumbs();\r\n });\r\n\r\n React.useEffect(() => {\r\n updateBreadcrumbs();\r\n }, []);\r\n\r\n return renderBreadcrumbs ? (\r\n
\r\n
\r\n \r\n {lang.breadcrumbsLabel && (\r\n

\r\n {lang.breadcrumbsLabel}:{' '}\r\n

\r\n )}\r\n
    \r\n {breadcrumbsLinks.map((breadcrumb, i) => (\r\n
  • \r\n {breadcrumbsLinks.length === i + 1 ? (\r\n \r\n {breadcrumb.text}\r\n \r\n ) : (\r\n \r\n )}\r\n
  • \r\n ))}\r\n
\r\n \r\n
\r\n
\r\n ) : null;\r\n};\r\n\r\nBreadcrumbs.propTypes = {\r\n lang: PropTypes.shape({\r\n departures: PropTypes.string.isRequired,\r\n dapatureDetails: PropTypes.string.isRequired,\r\n breadcrumbsLabel: PropTypes.string\r\n }),\r\n links: PropTypes.arrayOf(PropTypes.exact(Link.propTypes)),\r\n className: PropTypes.string,\r\n inContentContainer: PropTypes.bool\r\n};\r\n\r\nBreadcrumbs.propTypesMeta = {\r\n className: 'exclude'\r\n};\r\n\r\nexport default Breadcrumbs;\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Link from 'components/link';\r\nimport cn from 'classnames';\r\n\r\nconst MenuLink = ({\r\n url,\r\n text,\r\n openInNewTab,\r\n isActive,\r\n isSecondary = false,\r\n isSecondLevel = false,\r\n className\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMenuLink.propTypes = Object.assign(Link.propTypes, {\r\n isActive: PropTypes.bool,\r\n isSecondLevel: PropTypes.bool,\r\n isSecondary: PropTypes.bool\r\n});\r\n\r\nMenuLink.propTypesMeta = {\r\n isSecondLevel: 'exclude',\r\n isSecondary: 'exclude',\r\n className: 'exclude'\r\n};\r\n\r\nexport default MenuLink;\r\n","/* eslint-disable react/prop-types */\r\nimport React, { Component } from 'react';\r\nimport PubSub from 'pubsub-js';\r\nimport MenuLink from 'components/menu-link';\r\n\r\n// Hacky loading because stickyfilljs directly references 'window', which crashes server side rendering.\r\nimport { isRunningOnClient } from 'utils/misc';\r\n\r\nimport { windowIsDefined } from 'components/travel-planner/constants';\r\n\r\nconst stickyPolyfill = isRunningOnClient ? require('stickyfilljs') : {};\r\n\r\nclass BuyTicketsLink extends Component {\r\n static propTypes = Object.assign(MenuLink.propTypes);\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n state = {\r\n url: this.props.url\r\n };\r\n\r\n componentDidMount() {\r\n this.loadStateFromLocalStorage();\r\n // We need this to get the updated url build by components with different roots\r\n this.token = PubSub.subscribe('buyTicketsUrlUpdate', (msg, data) => {\r\n this.setState({\r\n url: data\r\n });\r\n\r\n this.saveStateToLocalStorage();\r\n });\r\n stickyPolyfill.addOne(this.element);\r\n PubSub.publish('buyTicketsButtonAdded');\r\n }\r\n\r\n componentWillUnmount() {\r\n PubSub.unsubscribe(this.token);\r\n }\r\n\r\n saveStateToLocalStorage() {\r\n windowIsDefined && localStorage.setItem('stickyButtonUrl', this.state.url);\r\n }\r\n\r\n loadStateFromLocalStorage() {\r\n const url = windowIsDefined && localStorage.getItem('stickyButtonUrl');\r\n if (url && url.startsWith(this.props.url)) {\r\n this.setState({\r\n url: url\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
(this.element = el)}>\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default BuyTicketsLink;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst CartTotalAmount = ({\r\n waitingForApiResponse,\r\n estimatedTotalPriceText,\r\n amount,\r\n discount,\r\n currencyCode,\r\n openModal,\r\n translations,\r\n showMoneySaved\r\n}) => {\r\n return (\r\n
\r\n {showMoneySaved && discount > 0 && (\r\n
\r\n {translations.youSave}\r\n \r\n {discount} {currencyCode}\r\n \r\n
\r\n )}\r\n
\r\n {translations.amountToPay}\r\n \r\n {amount} {currencyCode}\r\n \r\n
\r\n {estimatedTotalPriceText ?
{estimatedTotalPriceText}
: null}\r\n \r\n
\r\n );\r\n};\r\n\r\nCartTotalAmount.propTypes = {\r\n waitingForApiResponse: PropTypes.bool,\r\n estimatedTotalPriceText: PropTypes.string,\r\n amount: PropTypes.string,\r\n discount: PropTypes.number,\r\n currencyCode: PropTypes.string,\r\n openModal: PropTypes.func,\r\n translations: PropTypes.shape({\r\n amountToPay: PropTypes.string.isRequired,\r\n changeCurrency: PropTypes.string.isRequired,\r\n youSave: PropTypes.string.isRequired\r\n }),\r\n showMoneySaved: PropTypes.bool\r\n};\r\n\r\nCartTotalAmount.propTypesMeta = 'exclude';\r\n\r\nexport default CartTotalAmount;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport IconChat from 'assets/icons/chat-icon.svg';\r\n\r\nconst ChatButton = ({ label }) => (\r\n <>\r\n \r\n {label}\r\n \r\n \r\n \r\n);\r\n\r\nChatButton.propTypes = {\r\n label: PropTypes.string\r\n};\r\n\r\nexport default ChatButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ContactBlock = ({\r\n title,\r\n name,\r\n position,\r\n department,\r\n phoneNumber,\r\n email,\r\n comment,\r\n isInEditMode\r\n}) => {\r\n const isDepartmentAndPositionSet =\r\n position !== null &&\r\n department !== null &&\r\n position.length > 0 &&\r\n department.length > 0;\r\n return (\r\n
\r\n
\r\n

{title}

\r\n
\r\n {(isInEditMode || name !== '') && (\r\n
\r\n {name}\r\n
\r\n )}\r\n
\r\n {(isInEditMode || position !== '') && (\r\n {position}\r\n )}\r\n {isDepartmentAndPositionSet && / }\r\n {(isInEditMode || department !== '') && (\r\n {department}\r\n )}\r\n
\r\n {(isInEditMode || phoneNumber !== '') && (\r\n
\r\n \r\n {phoneNumber}\r\n \r\n
\r\n )}\r\n {(isInEditMode || email !== '') && (\r\n
\r\n \r\n {email}\r\n \r\n
\r\n )}\r\n {(isInEditMode || comment !== '') && (\r\n
\r\n \r\n {comment}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nContactBlock.defaultProps = {\r\n title: '',\r\n name: '',\r\n position: '',\r\n department: '',\r\n contactType: '',\r\n phoneNumber: '',\r\n email: '',\r\n comment: '',\r\n isInEditMode: false\r\n};\r\n\r\nContactBlock.propTypes = {\r\n title: PropTypes.string,\r\n name: PropTypes.string,\r\n position: PropTypes.string,\r\n department: PropTypes.string,\r\n phoneNumber: PropTypes.string,\r\n email: PropTypes.string,\r\n comment: PropTypes.string,\r\n isInEditMode: PropTypes.bool\r\n};\r\n\r\nContactBlock.propTypesMeta = 'exclude';\r\n\r\nexport default ContactBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport * as Components from '../../app.components';\r\n\r\nconst ContentArea = ({ blocks, className, place }) => {\r\n return blocks ? (\r\n \r\n {blocks.map((block, index) => {\r\n const Block = Components[block.componentName];\r\n if (!Block) {\r\n // eslint-disable-next-line no-console\r\n console.error(`Components.${block.componentName} is not defined`);\r\n return null;\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })}\r\n \r\n ) : null;\r\n};\r\n\r\nContentArea.propTypes = {\r\n blocks: PropTypes.array,\r\n className: PropTypes.string,\r\n place: PropTypes.string\r\n};\r\n\r\nContentArea.propTypesMeta = 'exclude';\r\n\r\nexport default ContentArea;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\n'use strict';\r\n\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nvar _date_input = require('./date_input');\r\n\r\nvar _date_input2 = _interopRequireDefault(_date_input);\r\n\r\nvar _calendar = require('./calendar');\r\n\r\nvar _calendar2 = _interopRequireDefault(_calendar);\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _defer = require('lodash/defer');\r\n\r\nvar _defer2 = _interopRequireDefault(_defer);\r\n\r\nvar _tether_component = require('./tether_component');\r\n\r\nvar _tether_component2 = _interopRequireDefault(_tether_component);\r\n\r\nvar _classnames2 = require('classnames');\r\n\r\nvar _classnames3 = _interopRequireDefault(_classnames2);\r\n\r\nvar _date_utils = require('./date_utils');\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nvar _reactOnclickoutside = require('react-onclickoutside');\r\n\r\nvar _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction _defineProperty(obj, key, value) {\r\n if (key in obj) {\r\n Object.defineProperty(obj, key, {\r\n value: value,\r\n enumerable: true,\r\n configurable: true,\r\n writable: true\r\n });\r\n } else {\r\n obj[key] = value;\r\n }\r\n return obj;\r\n}\r\n\r\nvar outsideClickIgnoreClass = 'react-datepicker-ignore-onclickoutside';\r\nvar WrappedCalendar = (0, _reactOnclickoutside2.default)(_calendar2.default);\r\n\r\n/**\r\n * General datepicker component.\r\n */\r\n\r\nclass DatePicker extends React.Component {\r\n static propTypes = {\r\n autoComplete: PropTypes.string,\r\n autoFocus: PropTypes.bool,\r\n className: PropTypes.string,\r\n customInput: PropTypes.element,\r\n dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n dateFormatCalendar: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n dropdownMode: PropTypes.oneOf(['scroll', 'select']).isRequired,\r\n endDate: PropTypes.object,\r\n excludeDates: PropTypes.array,\r\n filterDate: PropTypes.func,\r\n fixedHeight: PropTypes.bool,\r\n highlightDates: PropTypes.array,\r\n id: PropTypes.string,\r\n includeDates: PropTypes.array,\r\n inline: PropTypes.bool,\r\n isClearable: PropTypes.bool,\r\n locale: PropTypes.string,\r\n maxDate: PropTypes.object,\r\n minDate: PropTypes.object,\r\n monthsShown: PropTypes.number,\r\n name: PropTypes.string,\r\n onBlur: PropTypes.func,\r\n onChange: PropTypes.func.isRequired,\r\n onFocus: PropTypes.func,\r\n onSelect: PropTypes.func,\r\n onClickOutside: PropTypes.func,\r\n onMonthChange: PropTypes.func,\r\n openToDate: PropTypes.object,\r\n peekNextMonth: PropTypes.bool,\r\n placeholderText: PropTypes.string,\r\n popoverAttachment: PropTypes.string,\r\n popoverTargetAttachment: PropTypes.string,\r\n popoverTargetOffset: PropTypes.string,\r\n readOnly: PropTypes.bool,\r\n renderCalendarTo: PropTypes.any,\r\n required: PropTypes.bool,\r\n scrollableYearDropdown: PropTypes.bool,\r\n selected: PropTypes.object,\r\n selectsEnd: PropTypes.bool,\r\n selectsStart: PropTypes.bool,\r\n showMonthDropdown: PropTypes.bool,\r\n showWeekNumbers: PropTypes.bool,\r\n showYearDropdown: PropTypes.bool,\r\n forceShowMonthNavigation: PropTypes.bool,\r\n startDate: PropTypes.object,\r\n tabIndex: PropTypes.number,\r\n tetherConstraints: PropTypes.array,\r\n title: PropTypes.string,\r\n todayButton: PropTypes.string,\r\n utcOffset: PropTypes.number,\r\n navigationNextMonthContent: PropTypes.element,\r\n navigationPrevMonthContent: PropTypes.element\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n static defaultProps = {\r\n dateFormatCalendar: 'MMMM YYYY',\r\n onChange: function onChange() {},\r\n\r\n disabled: false,\r\n dropdownMode: 'scroll',\r\n onFocus: function onFocus() {},\r\n onBlur: function onBlur() {},\r\n onMonthChange: function onMonthChange() {},\r\n\r\n popoverAttachment: 'top left',\r\n popoverTargetAttachment: 'bottom left',\r\n popoverTargetOffset: '10px 0',\r\n tetherConstraints: [\r\n {\r\n to: 'window',\r\n attachment: 'together'\r\n }\r\n ],\r\n utcOffset: _moment2.default.utc().utcOffset(),\r\n monthsShown: 1\r\n };\r\n\r\n state = {\r\n open: false,\r\n preventFocus: false\r\n };\r\n\r\n setFocus = () => {\r\n this.refs.input.focus();\r\n };\r\n\r\n setOpen = open => {\r\n this.setState({ open: open });\r\n };\r\n\r\n handleFocus = event => {\r\n if (!this.state.preventFocus) {\r\n this.props.onFocus(event);\r\n this.setOpen(true);\r\n }\r\n };\r\n\r\n cancelFocusInput = () => {\r\n clearTimeout(this.inputFocusTimeout);\r\n this.inputFocusTimeout = null;\r\n };\r\n\r\n deferFocusInput = () => {\r\n var _this = this;\r\n\r\n this.cancelFocusInput();\r\n this.inputFocusTimeout = (0, _defer2.default)(() => {\r\n return _this.setFocus();\r\n });\r\n };\r\n\r\n handleDropdownFocus = () => {\r\n this.cancelFocusInput();\r\n };\r\n\r\n handleBlur = event => {\r\n if (this.state.open) {\r\n this.deferFocusInput();\r\n } else {\r\n this.props.onBlur(event);\r\n }\r\n };\r\n\r\n handleCalendarClickOutside = event => {\r\n this.setOpen(false);\r\n if (typeof this.props.onClickOutside === 'function')\r\n this.props.onClickOutside(event);\r\n };\r\n\r\n handleSelect = (date, event) => {\r\n var _this2 = this;\r\n\r\n // Preventing onFocus event to fix issue\r\n // https://github.com/Hacker0x01/react-datepicker/issues/628\r\n this.setState({ preventFocus: true }, () => {\r\n return setTimeout(() => {\r\n return _this2.setState({ preventFocus: false });\r\n }, 50);\r\n });\r\n this.setSelected(date, event);\r\n this.setOpen(false);\r\n if (typeof this.props.onSelect === 'function')\r\n this.props.onSelect(date, event);\r\n };\r\n\r\n setSelected = (date, event) => {\r\n var changedDate = date;\r\n\r\n if (!(0, _date_utils.isSameDay)(this.props.selected, changedDate)) {\r\n if (this.props.selected && changedDate != null) {\r\n changedDate = (0, _moment2.default)(changedDate).set({\r\n hour: this.props.selected.hour(),\r\n minute: this.props.selected.minute(),\r\n second: this.props.selected.second()\r\n });\r\n }\r\n\r\n this.props.onChange(changedDate, event);\r\n }\r\n };\r\n\r\n onInputClick = () => {\r\n if (!this.props.disabled) {\r\n this.setOpen(true);\r\n }\r\n };\r\n\r\n onInputKeyDown = event => {\r\n var copy = this.props.selected\r\n ? (0, _moment2.default)(this.props.selected)\r\n : (0, _moment2.default)();\r\n if (event.key === 'Enter' || event.key === 'Escape') {\r\n event.preventDefault();\r\n this.setOpen(false);\r\n } else if (event.key === 'Tab') {\r\n this.setOpen(false);\r\n } else if (event.key === 'ArrowLeft') {\r\n event.preventDefault();\r\n this.setSelected(copy.subtract(1, 'days'));\r\n } else if (event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n this.setSelected(copy.add(1, 'days'));\r\n } else if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.setSelected(copy.subtract(1, 'weeks'));\r\n } else if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.setSelected(copy.add(1, 'weeks'));\r\n } else if (event.key === 'PageUp') {\r\n event.preventDefault();\r\n this.setSelected(copy.subtract(1, 'months'));\r\n } else if (event.key === 'PageDown') {\r\n event.preventDefault();\r\n this.setSelected(copy.add(1, 'months'));\r\n } else if (event.key === 'Home') {\r\n event.preventDefault();\r\n this.setSelected(copy.subtract(1, 'years'));\r\n } else if (event.key === 'End') {\r\n event.preventDefault();\r\n this.setSelected(copy.add(1, 'years'));\r\n }\r\n };\r\n\r\n onClearClick = event => {\r\n event.preventDefault();\r\n this.props.onChange(null, event);\r\n };\r\n\r\n renderCalendar = () => {\r\n if (!this.props.inline && (!this.state.open || this.props.disabled)) {\r\n return null;\r\n }\r\n return _react2.default.createElement(WrappedCalendar, {\r\n ref: 'calendar',\r\n locale: this.props.locale,\r\n dateFormat: this.props.dateFormatCalendar,\r\n dropdownMode: this.props.dropdownMode,\r\n selected: this.props.selected,\r\n onSelect: this.handleSelect,\r\n openToDate: this.props.openToDate,\r\n minDate: this.props.minDate,\r\n maxDate: this.props.maxDate,\r\n selectsStart: this.props.selectsStart,\r\n selectsEnd: this.props.selectsEnd,\r\n startDate: this.props.startDate,\r\n endDate: this.props.endDate,\r\n excludeDates: this.props.excludeDates,\r\n filterDate: this.props.filterDate,\r\n onClickOutside: this.handleCalendarClickOutside,\r\n highlightDates: this.props.highlightDates,\r\n includeDates: this.props.includeDates,\r\n peekNextMonth: this.props.peekNextMonth,\r\n showMonthDropdown: this.props.showMonthDropdown,\r\n showWeekNumbers: this.props.showWeekNumbers,\r\n showYearDropdown: this.props.showYearDropdown,\r\n forceShowMonthNavigation: this.props.forceShowMonthNavigation,\r\n scrollableYearDropdown: this.props.scrollableYearDropdown,\r\n todayButton: this.props.todayButton,\r\n utcOffset: this.props.utcOffset,\r\n outsideClickIgnoreClass: outsideClickIgnoreClass,\r\n fixedHeight: this.props.fixedHeight,\r\n monthsShown: this.props.monthsShown,\r\n onDropdownFocus: this.handleDropdownFocus,\r\n onMonthChange: this.props.onMonthChange,\r\n navigationNextMonthContent: this.props.navigationNextMonthContent,\r\n navigationPrevMonthContent: this.props.navigationPrevMonthContent\r\n });\r\n };\r\n\r\n renderDateInput = () => {\r\n var className = (0, _classnames3.default)(\r\n this.props.className,\r\n _defineProperty({}, outsideClickIgnoreClass, this.state.open)\r\n );\r\n return _react2.default.createElement(_date_input2.default, {\r\n ref: 'input',\r\n id: this.props.id,\r\n name: this.props.name,\r\n autoFocus: this.props.autoFocus,\r\n date: this.props.selected,\r\n locale: this.props.locale,\r\n minDate: this.props.minDate,\r\n maxDate: this.props.maxDate,\r\n excludeDates: this.props.excludeDates,\r\n includeDates: this.props.includeDates,\r\n filterDate: this.props.filterDate,\r\n dateFormat: this.props.dateFormat,\r\n onFocus: this.handleFocus,\r\n onBlur: this.handleBlur,\r\n onClick: this.onInputClick,\r\n onKeyDown: this.onInputKeyDown,\r\n onChangeDate: this.setSelected,\r\n placeholder: this.props.placeholderText,\r\n disabled: this.props.disabled,\r\n autoComplete: this.props.autoComplete,\r\n className: className,\r\n title: this.props.title,\r\n readOnly: this.props.readOnly,\r\n required: this.props.required,\r\n tabIndex: this.props.tabIndex,\r\n customInput: this.props.customInput\r\n });\r\n };\r\n\r\n renderClearButton = () => {\r\n if (this.props.isClearable && this.props.selected != null) {\r\n return _react2.default.createElement('a', {\r\n className: 'react-datepicker__close-icon',\r\n href: '#',\r\n onClick: this.onClearClick\r\n });\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n render() {\r\n var calendar = this.renderCalendar();\r\n\r\n if (this.props.inline) {\r\n return calendar;\r\n } else {\r\n return _react2.default.createElement(\r\n _tether_component2.default,\r\n {\r\n classPrefix: 'react-datepicker__tether',\r\n attachment: this.props.popoverAttachment,\r\n targetAttachment: this.props.popoverTargetAttachment,\r\n targetOffset: this.props.popoverTargetOffset,\r\n renderElementTo: this.props.renderCalendarTo,\r\n constraints: this.props.tetherConstraints\r\n },\r\n _react2.default.createElement(\r\n 'div',\r\n { className: 'react-datepicker__input-container' },\r\n this.renderDateInput(),\r\n this.renderClearButton()\r\n ),\r\n calendar\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default DatePicker;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport moment from 'moment';\r\nimport 'moment/locale/nb';\r\n\r\nimport DatePicker from 'components/react-datepicker';\r\nimport PrevMonth from 'assets/icons/FT_arrow_change_month_left.svg';\r\nimport NextMonth from 'assets/icons/FT_arrow_change_month_right.svg';\r\n\r\nclass DatePickerWrapper extends React.Component {\r\n static propTypes = {\r\n date: PropTypes.object, // Moment object\r\n datePickerOpen: PropTypes.bool,\r\n hideDatePicker: PropTypes.func,\r\n lang: PropTypes.shape({\r\n nextMonth: PropTypes.string.isRequired,\r\n noMoreRoutes: PropTypes.string.isRequired,\r\n prevMonth: PropTypes.string.isRequired\r\n }),\r\n locale: PropTypes.string,\r\n minDate: PropTypes.object,\r\n maxDate: PropTypes.object,\r\n onDatePickerUpdate: PropTypes.func\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n datepicker = null;\r\n\r\n state = {\r\n datePickerIsShowingLastMonth: false\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n // is opening datepicker\r\n if (!prevProps.datePickerOpen && this.props.datePickerOpen) {\r\n // set focus on the selected date\r\n setTimeout(() => {\r\n if (this.datepicker) {\r\n let selected = this.datepicker.querySelector(\r\n '.react-datepicker__day--selected'\r\n );\r\n if (selected) {\r\n selected.focus();\r\n }\r\n }\r\n }, 100);\r\n // is closing datepicker\r\n } else if (prevProps.datePickerOpen && !this.props.datePickerOpen) {\r\n // focus on date label\r\n setTimeout(() => {\r\n if (this.dom) {\r\n let selected = this.dom.querySelector('.date-label');\r\n if (selected) {\r\n selected.focus();\r\n }\r\n }\r\n }, 90);\r\n }\r\n }\r\n\r\n handleMonthChange = (currentDate, datePickerIsShowingLastMonth) => {\r\n this.setState({ datePickerIsShowingLastMonth }, () =>\r\n this.props.onDatePickerUpdate({ datePickerIsShowingLastMonth })\r\n );\r\n };\r\n\r\n handleChange = date => {\r\n if (typeof date === 'string') {\r\n date = moment(date);\r\n }\r\n this.setState({ date });\r\n this.props.hideDatePicker();\r\n this.props.onDatePickerUpdate({ date });\r\n };\r\n\r\n handleDayClick = day => {\r\n if (\r\n day.format('YYYY-MM-DD') === this.props.date.format('YYYY-MM-DD') &&\r\n this.props.datePickerOpen\r\n ) {\r\n this.props.hideDatePicker();\r\n }\r\n };\r\n\r\n onKeyDownDatepicker = e => {\r\n const code = e.which;\r\n if (code === 27 || code === 13 || code === 32) {\r\n this.props.hideDatePicker();\r\n }\r\n };\r\n\r\n render() {\r\n const { date, datePickerOpen, lang, locale, minDate, maxDate } = this.props;\r\n\r\n return (\r\n \r\n {datePickerOpen && (\r\n \r\n )}\r\n \r\n {datePickerOpen && (\r\n {\r\n let dom = ReactDOM.findDOMNode(i);\r\n if (dom !== null) {\r\n this.datepicker = dom;\r\n }\r\n }}\r\n inline={true}\r\n forceShowMonthNavigation={true}\r\n dateFormatCalendar=\"MMMM\"\r\n onMonthChange={this.handleMonthChange}\r\n minDate={minDate || moment()}\r\n maxDate={maxDate || moment().add(90, 'days')}\r\n locale={locale}\r\n selected={date}\r\n onChange={this.handleChange}\r\n onSelect={this.handleDayClick}\r\n navigationPrevMonthContent={\r\n \r\n }\r\n navigationNextMonthContent={\r\n \r\n }\r\n />\r\n )}\r\n {datePickerOpen && this.state.datePickerIsShowingLastMonth && (\r\n
{lang.noMoreRoutes}
\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DatePickerWrapper;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Animate from 'rc-animate';\r\nimport Cookie from 'js-cookie';\r\nimport IconClose from 'assets/icons/close-icon.svg';\r\nimport IconCollapse from 'assets/icons/collapse-icon.svg';\r\n\r\n// Need to check if window is defined because window\r\n// does not exist when we server-side render this component.\r\nif (typeof window !== 'undefined') {\r\n var velocity = require('velocity-animate');\r\n}\r\n\r\nconst EMERGENCY_TYPE = {\r\n YELLOW: 0,\r\n RED: 1,\r\n GRAY: 2\r\n};\r\n\r\nconst EMERGENCY_TYPE_VALUES = ['is-yellow', 'is-red', 'is-gray'];\r\n\r\nclass EmergencyBlock extends Component {\r\n static propTypes = {\r\n id: PropTypes.any,\r\n shortMessage: PropTypes.string,\r\n longMessage: PropTypes.string,\r\n removeMessageText: PropTypes.string,\r\n readLessText: PropTypes.string,\r\n readMoreText: PropTypes.string,\r\n emergencyType: PropTypes.oneOf([\r\n EMERGENCY_TYPE.WARNING,\r\n EMERGENCY_TYPE.ERROR\r\n ]).isRequired,\r\n isInEditMode: PropTypes.bool\r\n };\r\n\r\n static defaultProps = {\r\n isInEditMode: false\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isExpanded: false,\r\n hasAnimated: false,\r\n isVisible: false\r\n };\r\n\r\n this.toggleExpand = this.toggleExpand.bind(this);\r\n this.animationEnter = this.animationEnter.bind(this);\r\n this.animationLeave = this.animationLeave.bind(this);\r\n this.removeEmergencyBlock = this.removeEmergencyBlock.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n // Check if there is cookie saying that the user has chosen to hide this notification.\r\n let visible = false;\r\n let existingCookie = Cookie.get('emergency-notification');\r\n existingCookie =\r\n existingCookie !== undefined ? JSON.parse(existingCookie) : undefined;\r\n visible =\r\n existingCookie !== undefined && existingCookie.id === this.props.id\r\n ? existingCookie.isVisible\r\n : true;\r\n this.setState({ isVisible: visible });\r\n }\r\n\r\n toggleExpand() {\r\n this.setState({\r\n isExpanded: !this.state.isExpanded\r\n });\r\n }\r\n\r\n handleAnimationEnd(node, complete) {\r\n return {\r\n stop() {\r\n velocity(node, 'finish');\r\n complete();\r\n }\r\n };\r\n }\r\n\r\n animationEnter(node, done) {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n\r\n let ok = false;\r\n let self = this;\r\n var complete = function() {\r\n self.setState({\r\n hasAnimated: true\r\n });\r\n if (!ok) {\r\n ok = 1;\r\n done();\r\n }\r\n };\r\n\r\n node.style.display = 'none';\r\n\r\n velocity(node, 'slideDown', {\r\n duration: 500,\r\n easing: 'easeOutSine',\r\n complete\r\n });\r\n return this.handleAnimationEnd(node, complete);\r\n }\r\n\r\n animationLeave(node, done) {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n let ok = false;\r\n\r\n var complete = function() {\r\n if (!ok) {\r\n ok = 1;\r\n done();\r\n }\r\n };\r\n\r\n node.style.display = 'block';\r\n\r\n this.setState(\r\n {\r\n hasAnimated: false\r\n },\r\n () => {\r\n velocity(node, 'slideUp', {\r\n duration: 500,\r\n easing: 'easeOutSine',\r\n delay: 300,\r\n complete\r\n });\r\n }\r\n );\r\n return this.handleAnimationEnd(node, complete);\r\n }\r\n\r\n removeEmergencyBlock() {\r\n if (this.props.isInEditMode) {\r\n return;\r\n }\r\n Cookie.set('emergency-notification', {\r\n id: this.props.id,\r\n isVisible: false\r\n });\r\n this.setState({ isVisible: false });\r\n }\r\n\r\n render() {\r\n const anim = {\r\n enter: this.animationEnter,\r\n leave: this.animationLeave\r\n };\r\n const {\r\n removeMessageText,\r\n readLessText,\r\n readMoreText,\r\n shortMessage,\r\n longMessage,\r\n emergencyType\r\n } = this.props;\r\n const { isVisible, isExpanded } = this.state;\r\n\r\n if (!isVisible) {\r\n return
;\r\n }\r\n\r\n const emergencyClass = this.state.hasAnimated\r\n ? 'emergency-container is-expanded'\r\n : 'emergency-container';\r\n const toggleClass = this.state.isExpanded\r\n ? 'emergency-toggle-button is-expanded'\r\n : 'emergency-toggle-button';\r\n const toggleText = this.state.isExpanded ? readLessText : readMoreText;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {shortMessage}\r\n \r\n
\r\n \r\n {toggleText && (\r\n \r\n {toggleText}\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {this.state.isExpanded ? (\r\n \r\n \r\n
\r\n ) : null}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default EmergencyBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst ErrorBlock = ({ type, title, message }) => (\r\n
\r\n
\r\n
\r\n
{title}
\r\n
\r\n
{message}
\r\n
\r\n);\r\n\r\nErrorBlock.propTypes = {\r\n type: PropTypes.string,\r\n title: PropTypes.string,\r\n message: PropTypes.string\r\n};\r\n\r\nErrorBlock.propTypesMeta = 'exclude';\r\n\r\nexport default ErrorBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FactBlock = ({ title, text }) => (\r\n
\r\n
\r\n

{title}

\r\n \r\n
\r\n
\r\n);\r\n\r\nFactBlock.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired\r\n};\r\n\r\nFactBlock.propTypesMeta = 'exclude';\r\n\r\nexport default FactBlock;\r\n","export const IMAGE_SIZE = {\r\n SMALL: 'small',\r\n LARGE: 'large'\r\n};\r\n\r\nexport const IMAGE_QUERY = {\r\n small: 'width=512',\r\n large: 'width=1920',\r\n transform: 'transform=DownFit'\r\n};\r\n\r\nexport const IMAGE_WIDTH = {\r\n small: '512',\r\n large: '1920'\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { IMAGE_SIZE, IMAGE_QUERY, IMAGE_WIDTH } from 'constants/image-type';\r\n\r\nconst Image = ({\r\n imageSmall,\r\n imageX,\r\n imageY,\r\n imageAlt,\r\n useImageSize,\r\n epiPropertyName\r\n}) => {\r\n imageX = imageX === null ? 50 : imageX;\r\n imageY = imageY === null ? 50 : imageY;\r\n\r\n let fluidImageStyle = {\r\n backgroundPosition: `${imageX}% ${imageY}%`,\r\n backgroundImage: `url(${imageSmall}?${IMAGE_QUERY[useImageSize]}&${IMAGE_QUERY.transform})`\r\n };\r\n\r\n const imageSrc = `${imageSmall}?${IMAGE_QUERY[useImageSize]}&${IMAGE_QUERY.transform}`;\r\n\r\n let imageWidth = '';\r\n if (typeof window !== 'undefined') {\r\n if (useImageSize) {\r\n imageWidth =\r\n IMAGE_WIDTH[IMAGE_SIZE.SMALL] / (window.devicePixelRatio || 1);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nImage.propTypes = {\r\n imageSmall: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n imageAlt: PropTypes.string,\r\n useImageSize: PropTypes.string,\r\n epiPropertyName: PropTypes.string\r\n};\r\n\r\nImage.propTypesMeta = 'exclude';\r\n\r\nexport default Image;\r\n","export const BLOCK_TYPE = {\r\n WHITE: 0,\r\n DARK_GREY: 1,\r\n LIGHT_GREY: 2,\r\n BROWN: 3\r\n};\r\n\r\nexport const BLOCK_TYPE_VALUES = [\r\n 'type-white',\r\n 'type-limestone',\r\n 'type-grey',\r\n 'type-beige'\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Image from 'components/image/image';\r\nimport {\r\n BLOCK_TYPE as FEATURE_TYPE,\r\n BLOCK_TYPE_VALUES as FEATURE_TYPE_VALUES\r\n} from 'constants/block-type';\r\nimport { IMAGE_SIZE } from 'constants/image-type';\r\n\r\nconst FEATURE_BLOCK_TYPE = {\r\n PRIMARY: 'block-primary',\r\n SECONDARY: 'block-secondary',\r\n LIST: 'block-list'\r\n};\r\n\r\nconst FEATURE_BLOCK_POSITION = {\r\n RIGHT: 0,\r\n LEFT: 1\r\n};\r\n\r\nconst FeatureBlock = ({\r\n type,\r\n blockType,\r\n title,\r\n context,\r\n date,\r\n text,\r\n linkUrl,\r\n linkText,\r\n imageUrl,\r\n imageX,\r\n imageY,\r\n imageAlt,\r\n setImage,\r\n useImageSize,\r\n isInEditMode,\r\n isHighlighted,\r\n position\r\n}) => {\r\n if (blockType === FEATURE_BLOCK_TYPE.LIST) {\r\n position = FEATURE_BLOCK_POSITION.RIGHT;\r\n }\r\n const featureBlockClassNames = `feature-block ${FEATURE_TYPE_VALUES[type]}`;\r\n\r\n const isLeft = position === FEATURE_BLOCK_POSITION.LEFT;\r\n const imageContainerClassName = isLeft\r\n ? 'off-lg-1 off-md-1 col-md-6 col-xs-12 order-tab-1'\r\n : 'col-md-6 col-xs-12 order-tab-1';\r\n const textContainerClassName = isLeft\r\n ? 'col-md-5 col-xs-12'\r\n : 'off-lg-1 off-md-1 col-md-5 col-xs-12';\r\n\r\n const hasImage = imageUrl ? true : false;\r\n\r\n let imageEl = (\r\n
\r\n {isInEditMode && (\r\n
\r\n \r\n
\r\n )}\r\n {!isInEditMode && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n\r\n if (!hasImage && blockType === FEATURE_BLOCK_TYPE.LIST) {\r\n // Not really an image element, but by reusing this variable if there is no image\r\n // we save ourselves some logic.\r\n imageEl = (\r\n
\r\n

\r\n {date}\r\n

\r\n \r\n

{title}

\r\n
\r\n
\r\n );\r\n }\r\n\r\n const textEls = (\r\n
\r\n {(isInEditMode ||\r\n (blockType === FEATURE_BLOCK_TYPE.SECONDARY && context)) && (\r\n

\r\n {context}\r\n

\r\n )}\r\n {blockType === FEATURE_BLOCK_TYPE.LIST && date && hasImage && (\r\n

\r\n {date}\r\n

\r\n )}\r\n {(blockType == FEATURE_BLOCK_TYPE.SECONDARY ||\r\n (blockType === FEATURE_BLOCK_TYPE.LIST &&\r\n hasImage &&\r\n !isHighlighted)) && (\r\n \r\n \r\n {title}\r\n \r\n \r\n )}\r\n \r\n {linkText && (\r\n \r\n {linkText}\r\n \r\n )}\r\n
\r\n );\r\n\r\n return (\r\n
\r\n {(blockType === FEATURE_BLOCK_TYPE.PRIMARY ||\r\n (blockType === FEATURE_BLOCK_TYPE.LIST && isHighlighted)) && (\r\n \r\n )}\r\n\r\n {isLeft && (\r\n
\r\n {textEls}\r\n {imageEl}\r\n
\r\n )}\r\n {!isLeft && (\r\n
\r\n {imageEl}\r\n {textEls}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nFeatureBlock.propTypes = {\r\n type: PropTypes.oneOf([\r\n FEATURE_TYPE.WHITE,\r\n FEATURE_TYPE.DARK_GREY,\r\n FEATURE_TYPE.LIGHT_GREY,\r\n FEATURE_TYPE.BROWN\r\n ]),\r\n blockType: PropTypes.oneOf([\r\n FEATURE_BLOCK_TYPE.PRIMARY,\r\n FEATURE_BLOCK_TYPE.SECONDARY,\r\n FEATURE_BLOCK_TYPE.LIST\r\n ]),\r\n position: PropTypes.oneOf([\r\n FEATURE_BLOCK_POSITION.LEFT,\r\n FEATURE_BLOCK_POSITION.RIGHT\r\n ]),\r\n title: PropTypes.string,\r\n context: PropTypes.string, // Currently only used by FEATURE_BLOCK_TYPE.SECONDARY\r\n date: PropTypes.string, // Currently only used by FEATURE_BLOCK_TYPE.LIST\r\n text: PropTypes.string,\r\n linkUrl: PropTypes.string,\r\n linkText: PropTypes.string,\r\n setImage: PropTypes.bool,\r\n useImageSize: PropTypes.oneOf([IMAGE_SIZE.SMALL, IMAGE_SIZE.LARGE]),\r\n imageUrl: PropTypes.string,\r\n imageAlt: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n isInEditMode: PropTypes.bool,\r\n isHighlighted: PropTypes.bool // Currently only used by FEATURE_BLOCK_TYPE.LIST\r\n};\r\n\r\nFeatureBlock.propTypesMeta = 'exclude';\r\n\r\nFeatureBlock.defaultProps = {\r\n type: FEATURE_TYPE.LIGHT_GREY,\r\n position: FEATURE_BLOCK_POSITION.LEFT,\r\n blockType: FEATURE_BLOCK_TYPE.PRIMARY,\r\n setImage: false,\r\n useImageSize: IMAGE_SIZE.SMALL,\r\n isInEditMode: false,\r\n isHighlighted: false\r\n};\r\n\r\nexport default FeatureBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FileListBlock = ({ blocks, title }) => {\r\n let fileListBlockEls = [];\r\n if (blocks && blocks.length > 0) {\r\n fileListBlockEls = blocks.map(fileListBlock => (\r\n \r\n
\r\n {fileListBlock.name}\r\n
\r\n
\r\n {fileListBlock.fileType}\r\n
\r\n
\r\n {fileListBlock.size}\r\n
\r\n \r\n ));\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{title}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {fileListBlockEls}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nFileListBlock.propTypes = {\r\n blocks: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n fileUrl: PropTypes.string,\r\n fileType: PropTypes.string,\r\n name: PropTypes.string,\r\n size: PropTypes.string\r\n })\r\n ),\r\n title: PropTypes.string\r\n};\r\n\r\nFileListBlock.defaultProps = {\r\n blocks: []\r\n};\r\n\r\nFileListBlock.propTypesMeta = 'exclude';\r\n\r\nexport default FileListBlock;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FooterLinkList = ({ title, url, links }) => (\r\n
    \r\n
  • \r\n {url.length > 0 ? (\r\n \r\n

    {title}

    \r\n
    \r\n ) : (\r\n

    {title}

    \r\n )}\r\n
  • \r\n {links.map((obj, i) => {\r\n return (\r\n
  • \r\n {obj.title}\r\n
  • \r\n );\r\n })}\r\n
\r\n);\r\n\r\nFooterLinkList.defaultProps = {\r\n title: 'Hei, kan vi hjelpe deg?',\r\n url: '',\r\n links: []\r\n};\r\n\r\nFooterLinkList.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n url: PropTypes.string,\r\n links: PropTypes.array.isRequired\r\n};\r\n\r\nFooterLinkList.propTypesMeta = 'exclude';\r\n\r\nexport default FooterLinkList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst FooterTextBlock = ({ title, text }) => (\r\n
\r\n {title && {title}}\r\n {text &&

{text}

}\r\n
\r\n);\r\n\r\nFooterTextBlock.defaultProps = {\r\n title: '',\r\n text: ''\r\n};\r\n\r\nFooterTextBlock.propTypes = {\r\n title: PropTypes.string,\r\n text: PropTypes.string\r\n};\r\n\r\nFooterTextBlock.propTypesMeta = 'exclude';\r\n\r\nexport default FooterTextBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport FooterLinkList from 'components/footer-link-list/footer-link-list';\r\nimport FooterTextBlock from 'components/footer-text-block/footer-text-block';\r\n\r\nimport IconFacebook from 'assets/icons/FT_calendar.svg';\r\nimport IconTwitter from 'assets/icons/FT_twitter.svg';\r\n\r\nconst FooterBlock = ({ title }) => (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{title}

\r\n
\r\n
\r\n
\r\n
\r\n Besøk oss på\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Telefon: 23 15 90 00\r\n
\r\n Ã…pningstider for kundeservice er mandag-fredag 08.00-16.00\r\n
\r\n E-post:{' '}\r\n flytoget@flytoget.no\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Besøk oss på\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n);\r\n\r\nFooterBlock.defaultProps = {\r\n title: 'Hei, kan vi hjelpe deg?'\r\n};\r\n\r\nFooterBlock.propTypes = {\r\n title: PropTypes.string\r\n};\r\n\r\nFooterBlock.propTypesMeta = 'exclude';\r\n\r\nexport default FooterBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Image from 'components/image';\r\n\r\nconst GriddedBlock = ({ title, blocks }) => {\r\n const blocksEl = blocks.map((block, i) => {\r\n let animateDelay = `0.${i * 2}s`;\r\n return (\r\n \r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n {title && (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n {blocksEl}\r\n
\r\n
\r\n );\r\n};\r\n\r\nGriddedBlock.defaultProps = {\r\n type: 'type-grey'\r\n};\r\n\r\nGriddedBlock.propTypes = {\r\n title: PropTypes.string,\r\n blocks: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n altText: PropTypes.string,\r\n context: PropTypes.string,\r\n imageSmall: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n linkUrl: PropTypes.string,\r\n title: PropTypes.string\r\n })\r\n ).isRequired\r\n};\r\n\r\nGriddedBlock.propTypesMeta = 'exclude';\r\n\r\nexport default GriddedBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Image from 'components/image/image';\r\nimport { IMAGE_SIZE } from 'constants/image-type';\r\n\r\nconst HighlightBlock = ({\r\n title,\r\n imageUrl,\r\n imageAlt,\r\n imageX,\r\n imageY,\r\n text,\r\n blockClassName,\r\n animateDelay,\r\n isInEditMode\r\n}) => {\r\n return (\r\n
\r\n {(isInEditMode || (title && !imageUrl)) && (\r\n

{title}

\r\n )}\r\n {(isInEditMode || imageUrl) && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nHighlightBlock.propTypes = {\r\n animateDelay: PropTypes.string,\r\n blockClassName: PropTypes.string,\r\n title: PropTypes.string,\r\n imageUrl: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n imageAlt: PropTypes.string,\r\n isInEditMode: PropTypes.bool,\r\n text: PropTypes.string\r\n};\r\n\r\nHighlightBlock.propTypesMeta = 'exclude';\r\n\r\nexport default HighlightBlock;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport HighlightBlock from 'components/highlight-block';\r\nimport { BLOCK_TYPE, BLOCK_TYPE_VALUES } from 'constants/block-type';\r\n\r\nconst HighlightBlocks = ({ type, blocks }) => {\r\n const highlightBlocksClassName = `highlight-blocks ${BLOCK_TYPE_VALUES[type]}`;\r\n\r\n const blocksEl = blocks.map((block, i) => {\r\n let blockClassName =\r\n 'highlight-block col-sm-4 col-md-3 col-xs-12 wow fadeInDown';\r\n blockClassName += i !== 0 ? ' off-md-1 off-lg-1' : '';\r\n let animateDelay = `0.${i * 2}s`;\r\n return (\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {blocksEl}\r\n
\r\n
\r\n );\r\n};\r\n\r\nHighlightBlocks.defaultProps = {\r\n type: BLOCK_TYPE.LIGHT_GREY,\r\n isInEditMode: false\r\n};\r\n\r\nHighlightBlocks.propTypes = {\r\n type: PropTypes.oneOf([\r\n BLOCK_TYPE.WHITE,\r\n BLOCK_TYPE.DARK_GREY,\r\n BLOCK_TYPE.LIGHT_GREY,\r\n BLOCK_TYPE.BROWN\r\n ]),\r\n blocks: PropTypes.array.isRequired\r\n};\r\n\r\nHighlightBlocks.propTypesMeta = 'exclude';\r\n\r\nexport default HighlightBlocks;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Icon = ({ path }) =>\r\n React.createElement(path, {\r\n focusable: 'false'\r\n });\r\n\r\nIcon.propTypes = {\r\n path: PropTypes.string\r\n};\r\n\r\nIcon.propTypesMeta = 'exclude';\r\n\r\nexport default Icon;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { IMAGE_SIZE, IMAGE_QUERY } from 'constants/image-type';\r\nimport imageLoader from 'utils/image-loader';\r\n\r\nimport Icon from 'assets/icons/FT_arrows_carousel_left.svg';\r\n\r\nclass ImageGalleryBlock extends Component {\r\n static propTypes = {\r\n blocks: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n altText: PropTypes.string,\r\n image: PropTypes.string,\r\n imagePhotographer: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n text: PropTypes.string\r\n })\r\n ).isRequired,\r\n previousAriaLabel: PropTypes.string,\r\n nextAriaLabel: PropTypes.string,\r\n photographerLabel: PropTypes.string\r\n };\r\n\r\n static defaultProps = {\r\n previousAriaLabel: 'Previous',\r\n nextAriaLabel: 'Next'\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n intervalId: null,\r\n activeItem: 0,\r\n imageSize: IMAGE_SIZE.SMALL\r\n };\r\n this.changeImage = this.changeImage.bind(this);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.handleKeyDown = this.handleKeyDown.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n window.setTimeout(() => {\r\n imageLoader.load(this.imageContainerEl);\r\n }, 100);\r\n window.addEventListener('keydown', this.handleKeyDown);\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.state.intervalId);\r\n window.removeEventListener('keydown', this.handleKeyDown);\r\n }\r\n\r\n handleKeyDown(e) {\r\n const LEFT_ARROW = 37;\r\n const RIGHT_ARROW = 39;\r\n const key = parseInt(e.keyCode || e.which || 0);\r\n\r\n switch (key) {\r\n case LEFT_ARROW:\r\n this.prev();\r\n break;\r\n case RIGHT_ARROW:\r\n this.next();\r\n break;\r\n }\r\n }\r\n\r\n changeImage() {\r\n let activeItem = this.state.activeItem;\r\n activeItem++;\r\n if (activeItem > 2) {\r\n activeItem = 0;\r\n }\r\n\r\n this.setState(\r\n {\r\n activeItem: activeItem\r\n },\r\n () => {\r\n window.setTimeout(imageLoader.load, 100);\r\n }\r\n );\r\n }\r\n\r\n prev() {\r\n let activeItem = this.state.activeItem;\r\n if (activeItem - 1 < 0) {\r\n return;\r\n }\r\n activeItem--;\r\n this.setState(\r\n {\r\n activeItem: activeItem\r\n },\r\n () => {\r\n window.setTimeout(imageLoader.load, 100);\r\n }\r\n );\r\n }\r\n\r\n next() {\r\n let activeItem = this.state.activeItem;\r\n if (activeItem + 1 >= this.props.blocks.length) {\r\n return;\r\n }\r\n activeItem++;\r\n this.setState(\r\n {\r\n activeItem: activeItem\r\n },\r\n () => {\r\n window.setTimeout(imageLoader.load, 100);\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n blocks,\r\n previousAriaLabel,\r\n nextAriaLabel,\r\n photographerLabel\r\n } = this.props;\r\n const { activeItem } = this.state;\r\n const blocksLength = blocks.length;\r\n\r\n let textEls = [];\r\n let imageEls = blocks.map((block, i) => {\r\n textEls.push(\r\n \r\n
{block.text}
\r\n {block.imagePhotographer && (\r\n

\r\n {photographerLabel}: {block.imagePhotographer}\r\n

\r\n )}\r\n \r\n );\r\n let fluidStyling = {\r\n backgroundPosition: `${block.imageX}% ${block.imageY}%`\r\n //backgroundImage: `url(${block.image}?${IMAGE_QUERY[IMAGE_SIZE.SMALL]}&${IMAGE_QUERY.transform})`\r\n };\r\n let imageSize = `${block.image}?${IMAGE_QUERY[this.state.imageSize]}&${\r\n IMAGE_QUERY.transform\r\n }`;\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n });\r\n\r\n return (\r\n {\r\n this.imageContainerEl = imageContainer;\r\n }}\r\n >\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {`${activeItem +\r\n 1}/${blocksLength}`}\r\n \r\n\r\n \r\n {`${activeItem +\r\n 1}/${blocksLength}`}\r\n
\r\n \r\n
\r\n \r\n
\r\n
{imageEls}
\r\n
\r\n
{textEls}
\r\n \r\n );\r\n }\r\n}\r\n\r\nImageGalleryBlock.propTypesMeta = 'exclude';\r\n\r\nexport default ImageGalleryBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { IMAGE_SIZE, IMAGE_QUERY, IMAGE_WIDTH } from 'constants/image-type';\r\nimport DownloadIcon from 'assets/icons/FT_download.svg';\r\n\r\nconst ImageListBlock = ({\r\n blocks,\r\n title,\r\n downloadImageText,\r\n photographerLabel\r\n}) => {\r\n let imageListBlockEls = [];\r\n if (blocks && blocks.length > 0) {\r\n imageListBlockEls = blocks.map((imageListBlock, i) => {\r\n let animateDelay = i * 0.1;\r\n\r\n let fluidImageStyle = {\r\n backgroundPosition: `${imageListBlock.imageX}% ${imageListBlock.imageY}%`,\r\n backgroundImage: `url(${imageListBlock.imageUrl}?${\r\n IMAGE_QUERY[IMAGE_SIZE.SMALL]\r\n }&${IMAGE_QUERY.transform})`\r\n };\r\n\r\n const imageSrc = `${imageListBlock.imageUrl}?${\r\n IMAGE_QUERY[IMAGE_SIZE.SMALL]\r\n }&${IMAGE_QUERY.transform}`;\r\n\r\n let imageWidth = '';\r\n if (typeof window !== 'undefined') {\r\n imageWidth =\r\n IMAGE_WIDTH[IMAGE_SIZE.SMALL] / (window.devicePixelRatio || 1);\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n

{imageListBlock.imageTitle}

\r\n {imageListBlock.imagePhotographer && (\r\n

\r\n {photographerLabel}: {imageListBlock.imagePhotographer}\r\n

\r\n )}\r\n \r\n {downloadImageText}\r\n \r\n
\r\n \r\n );\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{title}

\r\n
\r\n
\r\n
{imageListBlockEls}
\r\n
\r\n );\r\n};\r\n\r\nImageListBlock.defaultProps = {\r\n downloadImageText: 'Last ned bildet'\r\n};\r\n\r\nImageListBlock.propTypes = {\r\n blocks: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n imageAlt: PropTypes.string,\r\n imagePhotographer: PropTypes.string,\r\n imageTitle: PropTypes.string,\r\n imageUrl: PropTypes.string,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number\r\n })\r\n ),\r\n title: PropTypes.string,\r\n downloadImageText: PropTypes.string,\r\n photographerLabel: PropTypes.string\r\n};\r\n\r\nImageListBlock.propTypesMeta = 'exclude';\r\n\r\nexport default ImageListBlock;\r\n","import React from 'react';\r\nimport MenuLink from 'components/menu-link';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst LanguageSelector = ({ languages }) => {\r\n return (\r\n
    \r\n {languages &&\r\n languages.map((language, i) => (\r\n
  • \r\n \r\n
  • \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nLanguageSelector.propTypes = {\r\n languages: PropTypes.arrayOf(PropTypes.exact(MenuLink.propTypes))\r\n};\r\n\r\nexport default LanguageSelector;\r\n","/*\r\n\tList block is basically identical with feature (secondary) block. We want to reuse\r\n\tthe component, but since the component names don't indicate a relation between the\r\n\ttwo (FeatureBlock component and ListBlock component) we created this file. Hopefully,\r\n\tthis will make it easier for people new to the project to navigate.\r\n*/\r\n\r\nimport FeatureBlock from 'components/feature-block';\r\nFeatureBlock.propTypesMeta = 'exclude';\r\nexport default FeatureBlock;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nimport ListBlock from 'components/list-block/list-block';\r\nimport { BLOCK_TYPE } from 'constants/block-type';\r\nimport { IMAGE_SIZE } from 'constants/image-type';\r\nimport imageLoader from 'utils/image-loader';\r\n\r\nimport IconArrow from 'assets/icons/FT_arrow_pag_left.svg';\r\n\r\nconst DEFAULT_PAGE_SIZE = 10;\r\n\r\nclass ListBlockContainer extends Component {\r\n static propTypes = {\r\n listBlocks: PropTypes.arrayOf(PropTypes.exact(ListBlock.propTypes)),\r\n pageSize: PropTypes.number,\r\n previousAriaLabel: PropTypes.string,\r\n nextAriaLabel: PropTypes.string\r\n };\r\n\r\n static defaultProps = {\r\n pageSize: DEFAULT_PAGE_SIZE\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n currentPage: 0,\r\n imageSize: IMAGE_SIZE.SMALL\r\n };\r\n this.handlePaginationChange = this.handlePaginationChange.bind(this);\r\n }\r\n\r\n handlePaginationChange(data) {\r\n let selected = data.selected;\r\n\r\n this.setState({\r\n currentPage: selected\r\n });\r\n\r\n window.scrollTo(\r\n 0,\r\n this.containerEl.getBoundingClientRect().top -\r\n document.body.getBoundingClientRect().top\r\n );\r\n window.setTimeout(() => {\r\n imageLoader.load(this.containerEl);\r\n }, 100);\r\n }\r\n\r\n render() {\r\n const { listBlocks, previousAriaLabel, nextAriaLabel } = this.props;\r\n const { currentPage, imageSize } = this.state;\r\n let { pageSize } = this.props;\r\n if (pageSize === null || pageSize <= 0) {\r\n pageSize = DEFAULT_PAGE_SIZE;\r\n }\r\n const pages = Math.ceil(listBlocks.length / pageSize);\r\n let listBlockEls = [];\r\n\r\n if (listBlocks && listBlocks.length > 0) {\r\n let tmpListBlocks = listBlocks.slice(\r\n currentPage * pageSize,\r\n (currentPage + 1) * pageSize\r\n );\r\n listBlockEls = tmpListBlocks.map((listBlock, i) => (\r\n
\r\n \r\n
\r\n ));\r\n }\r\n\r\n return (\r\n {\r\n this.containerEl = containerEl;\r\n }}\r\n >\r\n
{listBlockEls}
\r\n\r\n {pages > 1 && (\r\n
\r\n
\r\n
\r\n \r\n }\r\n nextLabel={\r\n \r\n }\r\n breakLabel={...}\r\n breakClassName={'break-me'}\r\n pageCount={pages}\r\n marginPagesDisplayed={1}\r\n pageRangeDisplayed={1}\r\n pageLinkClassName={'page-number'}\r\n onPageChange={this.handlePaginationChange}\r\n containerClassName={'pagination-container'}\r\n subContainerClassName={'pages pagination'}\r\n activeClassName={'active'}\r\n />\r\n
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nListBlockContainer.propTypesMeta = 'exclude';\r\n\r\nexport default ListBlockContainer;\r\n","import replaceQueryParameters from '@creuna/utils/replace-query-parameters';\r\n//import CryptoJs from 'crypto-js';\r\n\r\n//const resizeQueryHashSalt = '{DB2BF126-5117-49B4-AB02-949E94E711BD}';\r\n\r\nconst transforms = {\r\n downFit: 'downFit',\r\n downFill: 'downFill'\r\n};\r\n\r\nconst skipForResizeExtensions = ['svg'];\r\n\r\nconst queryParameters = {\r\n width: undefined,\r\n height: undefined,\r\n transform: undefined,\r\n center: undefined\r\n};\r\n\r\nfunction checkImageCanBeResized(url) {\r\n if (!url) return false;\r\n var extension = url\r\n .split(/#|\\?/)[0]\r\n .split('.')\r\n .pop()\r\n .trim();\r\n extension = extension.toLowerCase();\r\n if (skipForResizeExtensions.some(item => item === extension)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction buildResizeUrl(url, width, height, transform, centerX, centerY) {\r\n if (!checkImageCanBeResized(url)) {\r\n return url;\r\n }\r\n\r\n var resizeUrl = replaceQueryParameters(\r\n url,\r\n Object.assign({}, queryParameters, {\r\n width: width > 0 ? width : undefined,\r\n height: height > 0 ? height : undefined,\r\n transform: transform,\r\n center:\r\n transform !== transforms.downFit\r\n ? serializeCenter(centerX, centerY)\r\n : undefined\r\n })\r\n );\r\n\r\n /* const resizeQuery = resizeUrl.split(/#|\\?/)[1];\r\n if (resizeQuery) {\r\n var queryHash = CryptoJs.MD5(\r\n resizeQuery.replace('%2C', '%2c') + resizeQueryHashSalt\r\n );\r\n resizeUrl = replaceQueryParameters(resizeUrl, { hash: queryHash });\r\n } */\r\n\r\n return resizeUrl;\r\n}\r\n\r\nfunction calcImageWidth(containerWidth, resolution) {\r\n resolution = resolution > 0 ? resolution : 1;\r\n return (\r\n Math.ceil((containerWidth * (window.devicePixelRatio || 1)) / resolution) *\r\n resolution\r\n );\r\n}\r\n\r\nfunction calcImageHeight(containerHeight, resolution) {\r\n resolution = resolution > 0 ? resolution : 1;\r\n return (\r\n Math.ceil((containerHeight * (window.devicePixelRatio || 1)) / resolution) *\r\n resolution\r\n );\r\n}\r\n\r\nfunction serializeCenter(x, y) {\r\n if (x > 0 || y > 0) {\r\n return `${x / 100},${y / 100}`;\r\n }\r\n return undefined;\r\n}\r\n\r\nexport default {\r\n buildResizeUrl,\r\n checkImageCanBeResized,\r\n calcImageWidth,\r\n calcImageHeight,\r\n Transforms: transforms\r\n};\r\n","export function createHtmlImage() {\r\n var image = typeof Image !== 'undefined' ? new Image() : {};\r\n return image;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport debounce from 'lodash/debounce';\r\nimport imageResizer from 'js/image-resizer';\r\nimport cn from 'classnames';\r\nimport { createHtmlImage } from 'js/dom-image-utils';\r\n\r\nconst FirstLoadSizeMultiplier = 0.05; // First time we preload smaller image in order to reduce wait time.\r\n\r\n/**\r\n * Image\r\n *\r\n * Key notes:\r\n * - automatically responsive by default (size is automatically calculated from container size)\r\n * - default transform is 'fill'\r\n * - width or height can be fixed (useful for fluid images), in this case default transform is 'fit'\r\n * - when both width and height are defined it becomes unresponsive.\r\n * - can be rendered as fluid or ordinary image\r\n * - resolution it is kind of steps for automatic size calculation, for example if resolution is 100, horizontal image width could be 100,200,300...1200... and height is calculated according to aspect ratio and vise versa for vertical image\r\n * - default resolutions for images with size > 100 is 100 for < 100 is 10\r\n * - device pixel ratio is taken into account for calculating image size\r\n *\r\n * Transforms:\r\n * 'fill' - image is cropped according to container proportions to fill it completely.\r\n * 'fit' - image is resized with saving original proportions to fit container by width or height.\r\n */\r\nclass ResponsiveImage extends React.Component {\r\n static transforms = {\r\n fill: 'fill',\r\n fit: 'fit',\r\n };\r\n\r\n static propTypes = {\r\n className: PropTypes.string,\r\n src: PropTypes.string.isRequired,\r\n alt: PropTypes.string,\r\n transform: PropTypes.oneOf(Object.values(ResponsiveImage.transforms)),\r\n fluid: PropTypes.bool,\r\n focusPoint: PropTypes.shape({\r\n x: PropTypes.number.isRequired,\r\n y: PropTypes.number.isRequired,\r\n }),\r\n width: PropTypes.number,\r\n height: PropTypes.number,\r\n resolution: PropTypes.number,\r\n };\r\n\r\n static propTypesMeta = {\r\n className: 'exclude',\r\n transform: 'exclude',\r\n fluid: 'exclude',\r\n width: 'exclude',\r\n height: 'exclude',\r\n resolution: 'exclude'\r\n };\r\n\r\n canBeResized = imageResizer.checkImageCanBeResized(this.props.src);\r\n autoTransform = this.constructor.transforms.fill;\r\n autoCalcWidthOnly = false;\r\n autoCalcHeightOnly = false;\r\n\r\n defaultSrc = !this.canBeResized\r\n ? this.props.src\r\n : this.props.width > 0 && this.props.height > 0\r\n ? imageResizer.buildResizeUrl(\r\n this.props.src,\r\n this.props.width,\r\n this.props.height,\r\n this.props.transform ||\r\n this.autoTransform === this.constructor.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit\r\n )\r\n : undefined;\r\n\r\n state = {\r\n src: this.defaultSrc,\r\n width: 0,\r\n height: 0,\r\n ratio: 0,\r\n containerOffsetWidth: 0,\r\n containerOffsetHeight: 0,\r\n };\r\n\r\n preloadImage = createHtmlImage();\r\n firstPreloadImage = createHtmlImage();\r\n\r\n handleResize = () => {\r\n if (\r\n !this.container ||\r\n (this.container.offsetWidth === 0 && this.container.offsetHeight === 0)\r\n ) {\r\n return;\r\n }\r\n\r\n if (this.container.offsetWidth === 0 || this.container.offsetHeight === 0) {\r\n this.autoTransform = ResponsiveImage.transforms.fit;\r\n this.autoCalcWidthOnly = this.container.offsetWidth > 0;\r\n this.autoCalcHeightOnly = this.container.offsetHeight > 0;\r\n }\r\n\r\n const skipByWidth =\r\n this.props.width > 0\r\n ? this.state.width === this.props.width\r\n : this.container.offsetWidth === this.state.containerOffsetWidth;\r\n\r\n const skipByHeight =\r\n this.props.height > 0\r\n ? this.state.height === this.props.height\r\n : this.container.offsetHeight === this.state.containerOffsetHeight;\r\n\r\n if (skipByWidth && skipByHeight) {\r\n return;\r\n }\r\n\r\n const resolutionByWidth =\r\n !(this.props.width > 0) &&\r\n this.container.offsetWidth > this.container.offsetHeight;\r\n\r\n let resolution = this.props.resolution;\r\n if (!(resolution > 0)) {\r\n var resolutionSize = resolutionByWidth\r\n ? this.container.offsetWidth\r\n : this.container.offsetHeight;\r\n\r\n resolution = resolutionSize > 100 ? 100 : 10;\r\n }\r\n\r\n const widthResolution = resolutionByWidth ? resolution : 1;\r\n const heightResolution = resolutionByWidth ? 1 : resolution;\r\n\r\n let newWidth =\r\n this.props.width > 0\r\n ? this.props.width\r\n : this.autoCalcHeightOnly\r\n ? 0\r\n : imageResizer.calcImageWidth(\r\n this.container.offsetWidth,\r\n widthResolution\r\n );\r\n\r\n let newHeight =\r\n this.props.height > 0\r\n ? this.props.height\r\n : this.autoCalcWidthOnly\r\n ? 0\r\n : imageResizer.calcImageHeight(\r\n this.container.offsetHeight,\r\n heightResolution\r\n );\r\n\r\n if (resolutionByWidth) {\r\n if (!this.autoCalcWidthOnly && !this.props.height > 0) {\r\n newHeight = Math.ceil(\r\n newWidth / (this.container.offsetWidth / this.container.offsetHeight)\r\n );\r\n }\r\n } else {\r\n if (!this.autoCalcHeightOnly && !this.props.width > 0) {\r\n newWidth = Math.ceil(\r\n newHeight / (this.container.offsetHeight / this.container.offsetWidth)\r\n );\r\n }\r\n }\r\n\r\n const newRatio =\r\n this.container.offsetHeight > 0\r\n ? Math.ceil(this.container.offsetWidth / this.container.offsetHeight)\r\n : 1;\r\n\r\n this.setState(previousState => {\r\n if (\r\n previousState.width >= newWidth &&\r\n previousState.height >= newHeight &&\r\n previousState.ratio === newRatio\r\n ) {\r\n return {\r\n containerOffsetWidth: this.container.offsetWidth,\r\n containerOffsetHeight: this.container.offsetHeight,\r\n };\r\n }\r\n\r\n const newSrc = imageResizer.buildResizeUrl(\r\n this.props.src,\r\n newWidth,\r\n newHeight,\r\n this.props.transform || this.autoTransform === ResponsiveImage.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit,\r\n this.props.focusPoint ? this.props.focusPoint.x : null,\r\n this.props.focusPoint ? this.props.focusPoint.y : null\r\n );\r\n\r\n if (!this.firstPreloadImage.src && !this.state.src) {\r\n var firstLoadWidth = Math.ceil(newWidth * FirstLoadSizeMultiplier);\r\n var firstLoadHeight = Math.ceil(newHeight * FirstLoadSizeMultiplier);\r\n if (firstLoadWidth > 0 && firstLoadHeight > 0) {\r\n const firstLoadSrc = imageResizer.buildResizeUrl(\r\n this.props.src,\r\n firstLoadWidth,\r\n firstLoadHeight,\r\n this.props.transform || this.autoTransform === ResponsiveImage.transforms.fill\r\n ? imageResizer.Transforms.downFill\r\n : imageResizer.Transforms.downFit,\r\n this.props.focusPoint ? this.props.focusPoint.x : null,\r\n this.props.focusPoint ? this.props.focusPoint.y : null\r\n );\r\n this.firstPreloadImage.src = firstLoadSrc;\r\n }\r\n }\r\n\r\n if (newSrc !== this.state.src) {\r\n this.preloadImage.src = newSrc;\r\n }\r\n\r\n return {\r\n width: newWidth,\r\n height: newHeight,\r\n ratio: newRatio,\r\n containerOffsetWidth: this.container.offsetWidth,\r\n containerOffsetHeight: this.container.offsetHeight,\r\n };\r\n });\r\n };\r\n\r\n debouncedHandleResize = debounce(this.handleResize, 300);\r\n\r\n onFirstSrcPreloaded() {\r\n if (!this.state.src) {\r\n this.setState({ src: this.firstPreloadImage.src });\r\n }\r\n }\r\n\r\n onSrcPreloaded() {\r\n this.setState({ src: this.preloadImage.src });\r\n }\r\n\r\n checkElementIsHidden(element) {\r\n return !element.offsetParent;\r\n }\r\n\r\n isHidden() {\r\n return this.checkElementIsHidden(this.container);\r\n }\r\n\r\n getHiddenRoot() {\r\n if (!this.checkElementIsHidden(this.container)) {\r\n return null;\r\n }\r\n\r\n var parent = this.container.parentElement;\r\n while (parent && this.checkElementIsHidden(parent.parentElement)) {\r\n parent = parent.parentElement;\r\n }\r\n\r\n return parent;\r\n }\r\n\r\n onObservedChange() {\r\n if (!this.isHidden()) {\r\n this.debouncedHandleResize();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const self = this;\r\n this.firstPreloadImage.onload = () => {\r\n self.onFirstSrcPreloaded();\r\n };\r\n this.preloadImage.onload = () => {\r\n self.onSrcPreloaded();\r\n };\r\n if (this.canBeResized) {\r\n this.handleResize();\r\n this.debouncedHandleResize();\r\n window.addEventListener('resize', this.debouncedHandleResize);\r\n }\r\n\r\n this.observer = this.canBeResized\r\n ? new MutationObserver(() => this.onObservedChange.call(this))\r\n : null;\r\n\r\n if (this.observer && this.isHidden()) {\r\n this.observer.observe(this.getHiddenRoot(), {\r\n attributes: true,\r\n });\r\n }\r\n this.setState({ componentDidMount: true });\r\n }\r\n\r\n getSnapshotBeforeUpdate(prevProps) {\r\n if (\r\n this.props.width !== prevProps.width ||\r\n this.props.height !== prevProps.height\r\n ) {\r\n this.handleResize();\r\n }\r\n return null;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.canBeResized) {\r\n window.removeEventListener('resize', this.debouncedHandleResize);\r\n }\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.canBeResized) this.debouncedHandleResize();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {!this.props.fluid ? (\r\n (this.container = c)}\r\n >\r\n {this.state.src && (\r\n \r\n )}\r\n \r\n ) : (\r\n (this.container = c)}\r\n >\r\n {this.state.src && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ResponsiveImage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport ResponsiveImage from 'components/responsive-image';\r\n\r\nconst Logo = ({ className, url, image, imageClass }) => {\r\n return (\r\n \r\n {image && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nLogo.propTypes = {\r\n className: PropTypes.string,\r\n imageClass: PropTypes.string,\r\n url: PropTypes.string,\r\n image: PropTypes.exact(ResponsiveImage.propTypes)\r\n};\r\n\r\nLogo.propTypesMeta = {\r\n className: 'exclude',\r\n imageClass: 'exclude'\r\n};\r\n\r\nexport default Logo;\r\n","/* eslint-disable react/prop-types */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Collapse from 'react-tiny-collapse';\r\nimport MenuLink from 'components/menu-link';\r\nimport cn from 'classnames';\r\nimport IconArrow from 'assets/icons/arrow-icon.svg';\r\n\r\nconst MenuItem = ({\r\n url,\r\n text,\r\n openInNewTab,\r\n className,\r\n isActive,\r\n childItems,\r\n isSecondary = false,\r\n forceUpdateIndex\r\n}) => {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [hasActiveChild, setHasActiveChild] = React.useState(false);\r\n const toggle = e => {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n };\r\n const showChildIfActive = () => {\r\n if (childItems) {\r\n const activeItems = childItems.filter(item => item.isActive);\r\n setIsOpen(activeItems.length > 0);\r\n setHasActiveChild(activeItems.length > 0);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n showChildIfActive();\r\n }, [forceUpdateIndex]);\r\n\r\n return (\r\n
\r\n {childItems && childItems.length > 0 ? (\r\n \r\n toggle(e)}\r\n className={cn('menu-item__toggle-button', {\r\n 'menu-item__toggle-button_opened': isOpen,\r\n 'menu-item__toggle-button_active': hasActiveChild\r\n })}\r\n aria-expanded={childItems ? isOpen : null}\r\n >\r\n {text}\r\n \r\n \r\n \r\n
    \r\n {childItems.map((item, i) => (\r\n
  • \r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nMenuItem.propTypes = Object.assign(MenuLink.propTypes, {\r\n className: PropTypes.string,\r\n childItems: PropTypes.arrayOf(PropTypes.exact(MenuLink.propTypes)),\r\n isSecondary: PropTypes.bool,\r\n forceUpdateIndex: PropTypes.number\r\n});\r\n\r\nMenuItem.propTypesMeta = {\r\n className: 'exclude',\r\n isSecondary: 'exclude',\r\n forceUpdateIndex: 'exclude'\r\n};\r\n\r\nexport default MenuItem;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MenuItem from 'components/menu-item';\r\nimport cn from 'classnames';\r\n\r\nconst MenuSection = ({\r\n items,\r\n className,\r\n itemClassName,\r\n forceUpdateIndex,\r\n isSecondary = false\r\n}) => {\r\n return (\r\n items && (\r\n
    \r\n {items.map((item, i) => (\r\n
  • \r\n \r\n
  • \r\n ))}\r\n
\r\n )\r\n );\r\n};\r\n\r\nMenuSection.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.exact(MenuItem.propTypes)),\r\n className: PropTypes.string,\r\n itemClassName: PropTypes.string,\r\n forceUpdateIndex: PropTypes.number,\r\n isSecondary: PropTypes.bool\r\n};\r\n\r\nMenuSection.propTypesMeta = {\r\n className: 'exclude',\r\n itemClassName: 'exclude',\r\n forceUpdateIndex: 'exclude',\r\n isSecondary: 'exclude'\r\n};\r\n\r\nexport default MenuSection;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nimport IconClose from 'assets/icons/FT_close_mob.svg';\r\n\r\nconst Modal = ({ closing, modalRef, noAnim, onClose, show, children }) => {\r\n if (!show) {\r\n return null;\r\n }\r\n\r\n return (\r\n {\r\n if (e.keyCode === 27 || e.keyCode === 13) {\r\n onClose();\r\n }\r\n }}\r\n >\r\n {\r\n e.stopPropagation();\r\n }}\r\n >\r\n {children}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nModal.propTypes = {\r\n closing: PropTypes.bool,\r\n modalRef: PropTypes.func.isRequired,\r\n noAnim: PropTypes.bool,\r\n onClose: PropTypes.func.isRequired,\r\n show: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n\r\nModal.propTypesMeta = 'exclude';\r\n\r\nModal.defaultProps = {\r\n onClose: () => {}\r\n};\r\n\r\nexport default Modal;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport IconMenu from 'assets/icons/FT_hamburger_icon.svg';\r\nimport IconClose from 'assets/icons/close-icon.svg';\r\nimport cn from 'classnames';\r\n\r\nconst ToggleMenuButton = ({ text, isActive = false, onClick = () => {} }) => {\r\n return (\r\n \r\n {text && {text}}\r\n {isActive ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nToggleMenuButton.propTypes = {\r\n text: PropTypes.string,\r\n isActive: PropTypes.bool,\r\n onClick: PropTypes.func\r\n};\r\n\r\nToggleMenuButton.propTypesMeta = {\r\n isActive: 'exclude'\r\n};\r\n\r\nexport default ToggleMenuButton;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport IconSearch from 'assets/icons/search.svg';\r\n\r\nconst QuickSearch = ({\r\n searchInputLabel,\r\n placeholder,\r\n searchPageUrl,\r\n searchButtonText\r\n}) => {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nQuickSearch.propTypes = {\r\n searchInputLabel: PropTypes.string,\r\n placeholder: PropTypes.string.isRequired,\r\n searchPageUrl: PropTypes.string.isRequired,\r\n searchButtonText: PropTypes.string.isRequired\r\n};\r\n\r\nQuickSearch.propTypesMeta = {};\r\n\r\nexport default QuickSearch;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MenuLink from 'components/menu-link';\r\nimport { getPageHash, getPageUrlWithoutQueryAndHash } from 'utils/url-utils.js';\r\n\r\nvar SupportedHashesMap = new Map();\r\nSupportedHashesMap.set('list', ['list']).set('details', ['list']);\r\n\r\nclass MenuItemActive extends React.Component {\r\n static propTypes = {\r\n links: PropTypes.arrayOf(PropTypes.exact(MenuLink.propTypes)),\r\n onActiveItemChanged: PropTypes.func\r\n };\r\n static propTypesMeta = 'exclude';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n defaultActiveItem: null,\r\n currntActiveItem: null\r\n };\r\n }\r\n\r\n findItem(url, hash) {\r\n var linksList = this.props.links;\r\n\r\n for (let i = 0; i < linksList.length; i++) {\r\n var linkItemUrl = linksList[i].url;\r\n\r\n if (linkItemUrl === url + '#' + hash) {\r\n return linksList[i];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n findActiveItem(links) {\r\n for (let i = 0; i < links.length; i++) {\r\n if (links[i].isActive === true) {\r\n return links[i];\r\n }\r\n }\r\n }\r\n\r\n setActiveItem() {\r\n var pageUrl = getPageUrlWithoutQueryAndHash();\r\n var pageHash = getPageHash();\r\n var defaultActiveItem = this.state.defaultActiveItem;\r\n var currentActiveItem = this.state.currentActiveItem;\r\n\r\n var hasChanges = false;\r\n\r\n if (defaultActiveItem) {\r\n defaultActiveItem.isActive = false;\r\n hasChanges = true;\r\n }\r\n\r\n if (currentActiveItem) {\r\n currentActiveItem.isActive = false;\r\n this.setState({ currentActiveItem: null });\r\n hasChanges = true;\r\n }\r\n\r\n if (pageHash && SupportedHashesMap.has(pageHash)) {\r\n var mappedHashes = SupportedHashesMap.get(pageHash);\r\n\r\n for (let i = 0; i < mappedHashes.length; i++) {\r\n var newActiveItem = this.findItem(pageUrl, mappedHashes[i]);\r\n\r\n if (newActiveItem) {\r\n newActiveItem.isActive = true;\r\n this.setState({ currentActiveItem: newActiveItem });\r\n hasChanges = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n if (defaultActiveItem && !defaultActiveItem.isActive) {\r\n defaultActiveItem.isActive = true;\r\n hasChanges = true;\r\n }\r\n }\r\n\r\n if (hasChanges) {\r\n this.props.onActiveItemChanged();\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n var activeItem = this.findActiveItem(this.props.links);\r\n\r\n if (activeItem) {\r\n this.setState({ defaultActiveItem: activeItem });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setActiveItem();\r\n const onHashChange = () => this.setActiveItem();\r\n\r\n window.addEventListener('hashchange', onHashChange);\r\n return () => window.removeEventListener('hashchange', onHashChange);\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nexport default MenuItemActive;\r\n","/* eslint-disable no-unused-vars */\r\nimport React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport MenuSection from 'components/menu-section';\r\nimport ToggleMenuButton from 'components/toggle-menu-button';\r\nimport QuickSearch from 'components/quick-search';\r\nimport MenuLink from 'components/menu-link';\r\nimport BuyTicketsLink from 'components/buy-tickets-link';\r\nimport LanguageSelector from 'components/language-selector';\r\nimport Logo from 'components/logo';\r\nimport useEscape from '../../hooks/use-escape';\r\nimport MenuItem from 'components/menu-item';\r\nimport MenuItemActive from './menu-item-active';\r\n\r\nconst PageHeader = ({\r\n logo,\r\n toggleMenuButton,\r\n languageSelector,\r\n quickSearch,\r\n frontLink,\r\n departuresLink,\r\n buyTicketsLink,\r\n mainMenu,\r\n secondaryMenu\r\n}) => {\r\n const [forceUpdateIndex, setForceUpdateIndex] = useState(0);\r\n\r\n function forceUpdate() {\r\n setForceUpdateIndex(forceUpdateIndex => forceUpdateIndex + 1);\r\n }\r\n const [panelIsShown, setPanelIsShown] = React.useState(false);\r\n\r\n const getSectionLinks = menuSection => {\r\n let menuLinks = new Array();\r\n\r\n for (let i = 0; i < menuSection.items.length; i++) {\r\n menuLinks.push(menuSection.items[i]);\r\n if (menuSection.items[i].childItems != undefined) {\r\n for (let r = 0; r < menuSection.items[i].childItems.length; r++) {\r\n menuLinks.push(menuSection.items[i].childItems[r]);\r\n }\r\n }\r\n }\r\n\r\n return menuLinks;\r\n };\r\n\r\n let menuLinks = new Array(frontLink, departuresLink, buyTicketsLink);\r\n\r\n menuLinks = menuLinks\r\n .concat(getSectionLinks(mainMenu))\r\n .concat(getSectionLinks(secondaryMenu));\r\n\r\n menuLinks = menuLinks.filter(x => !!x);\r\n\r\n const togglePanel = () => {\r\n setPanelIsShown(!panelIsShown);\r\n };\r\n\r\n useEscape(() => {\r\n setPanelIsShown(false);\r\n });\r\n\r\n return (\r\n
\r\n forceUpdate()}\r\n links={menuLinks}\r\n />\r\n \r\n
\r\n \r\n\r\n {panelIsShown && (\r\n \r\n \r\n \r\n
\r\n {frontLink && }\r\n {buyTicketsLink && }\r\n {departuresLink && }\r\n {mainMenu && (\r\n \r\n )}\r\n {secondaryMenu && (\r\n \r\n )}\r\n
\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nPageHeader.propTypes = {\r\n logo: PropTypes.exact(Logo.propTypes),\r\n toggleMenuButton: PropTypes.exact(ToggleMenuButton.propTypes),\r\n languageSelector: PropTypes.exact(LanguageSelector.propTypes),\r\n quickSearch: PropTypes.exact(QuickSearch.propTypes),\r\n frontLink: PropTypes.exact(MenuLink.propTypes),\r\n departuresLink: PropTypes.exact(MenuLink.propTypes),\r\n buyTicketsLink: PropTypes.exact(MenuLink.propTypes),\r\n mainMenu: PropTypes.exact(MenuSection.propTypes),\r\n secondaryMenu: PropTypes.exact(MenuSection.propTypes)\r\n};\r\n\r\nexport default PageHeader;\r\n","import useEvent from './use-event';\r\n\r\nconst isEscape = event =>\r\n event && (event.key === 'Escape' || event.which === 27);\r\n\r\n/** Fires `callback` when the escape key is pressed */\r\nexport default function useEscape(callback) {\r\n useEvent('keydown', e => {\r\n if (isEscape(e)) {\r\n callback();\r\n }\r\n });\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nconst PaymentSpinnerAnimation = ({ className }) => {\r\n const circleCount = 7;\r\n const circles = Array.from({ length: circleCount }, (_, index) => index + 1);\r\n\r\n return (\r\n \r\n {circles.map(circleNumber => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nPaymentSpinnerAnimation.propTypes = {\r\n className: PropTypes.string\r\n};\r\n\r\nPaymentSpinnerAnimation.propTypesMeta = 'exclude';\r\n\r\nexport default PaymentSpinnerAnimation;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LoadingIndicator from 'components/payment-spinner-animation/payment-spinner-animation';\r\n\r\nconst PaymentSpinner = ({ text }) => {\r\n return (\r\n
\r\n
\r\n \r\n
{text}
\r\n
\r\n
\r\n );\r\n};\r\n\r\nPaymentSpinner.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default PaymentSpinner;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { IMAGE_SIZE, IMAGE_QUERY } from 'constants/image-type';\r\n\r\nconst PictureBlock = ({\r\n title,\r\n context,\r\n hideContext,\r\n imageUrl,\r\n imageX,\r\n imageY,\r\n imageAlt,\r\n linkUrl,\r\n linkText,\r\n isInEditMode\r\n}) => {\r\n let imageSmall = `${imageUrl}?${IMAGE_QUERY[IMAGE_SIZE.SMALL]}&${\r\n IMAGE_QUERY.transform\r\n }`;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {(isInEditMode || context) && !hideContext && (\r\n \r\n {context}\r\n

\r\n )}\r\n

{title}

\r\n \r\n {linkText}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nPictureBlock.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n context: PropTypes.string,\r\n hideContext: PropTypes.bool,\r\n imageUrl: PropTypes.string.isRequired,\r\n imageAlt: PropTypes.string.isRequired,\r\n imageX: PropTypes.number,\r\n imageY: PropTypes.number,\r\n linkUrl: PropTypes.string.isRequired,\r\n linkText: PropTypes.string.isRequired,\r\n isInEditMode: PropTypes.bool\r\n};\r\n\r\nPictureBlock.propTypesMeta = 'exclude';\r\n\r\nPictureBlock.defaultProps = {\r\n isInEditMode: false\r\n};\r\n\r\nexport default PictureBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst PriceOverviewBlock = ({\r\n title,\r\n priceItems,\r\n content,\r\n linkUrl,\r\n linkText,\r\n firstColumnHeading,\r\n secondColumnHeading,\r\n thirdColumnHeading\r\n}) => {\r\n let priceItemsEl = [];\r\n\r\n if (priceItems && priceItems.length > 0) {\r\n priceItemsEl = priceItems.map((priceItem, index) => {\r\n return (\r\n
  • \r\n
    {priceItem.station}
    \r\n
    {priceItem.adultPrice}
    \r\n
    {priceItem.otherPrice}
    \r\n
  • \r\n );\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {title}

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n {firstColumnHeading}\r\n
    \r\n \r\n {secondColumnHeading}\r\n
    \r\n \r\n {thirdColumnHeading}\r\n
    \r\n \r\n {priceItemsEl}\r\n {linkText && (\r\n
  • \r\n \r\n {linkText}\r\n \r\n
  • \r\n )}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nPriceOverviewBlock.propTypes = {\r\n content: PropTypes.string,\r\n firstColumnHeading: PropTypes.string,\r\n linkUrl: PropTypes.string,\r\n linkText: PropTypes.string,\r\n priceItems: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n adultPrice: PropTypes.string,\r\n otherPrice: PropTypes.string,\r\n station: PropTypes.string\r\n })\r\n ),\r\n secondColumnHeading: PropTypes.string,\r\n thirdColumnHeading: PropTypes.string,\r\n title: PropTypes.string\r\n};\r\n\r\nPriceOverviewBlock.defaultProps = {\r\n isInEditMode: false\r\n};\r\n\r\nPriceOverviewBlock.propTypesMeta = 'exclude';\r\n\r\nexport default PriceOverviewBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst PromoBlock = ({\r\n imageUrl,\r\n promoTitle,\r\n imageAriaLabel,\r\n gradientAriaLabel\r\n}) => {\r\n let promoImageStyle = { backgroundImage: `url(\"${imageUrl}\")` };\r\n\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {promoTitle}

    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nPromoBlock.defaultProps = {\r\n gradientAriaLabel: 'Farge gradient over hovedbilde',\r\n triangleAriaLabel: 'Duse trekanter som animeres over hovedbilde'\r\n};\r\n\r\nPromoBlock.propTypes = {\r\n gradientAriaLabel: PropTypes.string,\r\n imageUrl: PropTypes.string.isRequired,\r\n imageAriaLabel: PropTypes.string.isRequired,\r\n promoTitle: PropTypes.string.isRequired\r\n};\r\n\r\nPromoBlock.propTypesMeta = 'exclude';\r\n\r\nexport default PromoBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport IconQuote from 'assets/icons/FT_quotemark.svg';\r\n\r\nconst QUOTE_BLOCK_TYPE = {\r\n WHITE: 0,\r\n BLUE: 1\r\n};\r\n\r\nconst QUOTE_BLOCK_TYPE_VALUE = ['type-white', 'type-blue'];\r\n\r\nconst QuoteBlock = ({ quote, name, type }) => {\r\n let extraClass = '';\r\n if (type === QUOTE_BLOCK_TYPE.BLUE) {\r\n extraClass = ' inverted';\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n {quote}\r\n

    \r\n \r\n {name}\r\n

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nQuoteBlock.defaultProps = {\r\n type: QUOTE_BLOCK_TYPE.BLUE\r\n};\r\n\r\nQuoteBlock.propTypes = {\r\n name: PropTypes.string,\r\n quote: PropTypes.string,\r\n type: PropTypes.oneOf([QUOTE_BLOCK_TYPE.WHITE, QUOTE_BLOCK_TYPE.BLUE])\r\n};\r\n\r\nQuoteBlock.propTypesMeta = 'exclude';\r\n\r\nexport default QuoteBlock;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst RadioToggle = ({ items, active, name, onChange }) => (\r\n
    \r\n {items.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n);\r\n\r\nconst numberOrString = PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string\r\n]);\r\n\r\nRadioToggle.propTypes = {\r\n items: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n name: PropTypes.string,\r\n value: numberOrString\r\n })\r\n ),\r\n active: numberOrString,\r\n name: PropTypes.string,\r\n onChange: PropTypes.func\r\n};\r\n\r\nRadioToggle.propTypesMeta = 'exclude';\r\n\r\nexport default RadioToggle;\r\n","import PropTypes from 'prop-types';\r\n\r\nconst ReactComponent = {};\r\n\r\n// Empty propTypes needed in order for ReactComponent.cs to be generated.\r\nReactComponent.propTypes = {\r\n componentName: PropTypes.string.isRequired\r\n};\r\n\r\nReactComponent.propTypesMeta = 'exclude'; // Not generated automatically, defained on BE instead.\r\n\r\n// 'ReactComponent' is used as the base class in all generated .cs-files (configurerd in CSharpWebpackPlugin options in webpack.config.js)\r\nexport default ReactComponent;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst RichTextBlock = ({ content, isInEditMode }) => (\r\n
    \r\n
    \r\n
    \r\n {(isInEditMode || content) && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nRichTextBlock.defaultProps = {\r\n isInEditMode: false\r\n};\r\n\r\nRichTextBlock.propTypes = {\r\n content: PropTypes.string,\r\n isInEditMode: PropTypes.bool\r\n};\r\n\r\nRichTextBlock.propTypesMeta = 'exclude';\r\n\r\nexport default RichTextBlock;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { generateUniqueId } from 'utils/misc';\r\n\r\n// Need to check if window is defined because window\r\n// does not exist when we server-side render this component.\r\nif (typeof window !== 'undefined') {\r\n var velocity = require('velocity-animate');\r\n}\r\n\r\nclass ServiceDisruptionsList extends Component {\r\n static propTypes = {\r\n disruptions: PropTypes.string,\r\n disruptionHeaderTitle: PropTypes.string,\r\n disruptionHeaderFromTime: PropTypes.string,\r\n disruptionHeaderToTime: PropTypes.string\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isExpandedId: -1\r\n };\r\n this.expandListItem = this.expandListItem.bind(this);\r\n this.animationEnter = this.animationEnter.bind(this);\r\n this.animationLeave = this.animationLeave.bind(this);\r\n this.uniqueId = generateUniqueId();\r\n }\r\n\r\n expandListItem(id) {\r\n if (id === this.state.isExpandedId) {\r\n this.setState({ isExpandedId: -1 });\r\n } else {\r\n this.setState({ isExpandedId: id });\r\n }\r\n }\r\n\r\n handleAnimationEnd(node, complete) {\r\n return {\r\n stop() {\r\n velocity(node, 'finish');\r\n complete();\r\n }\r\n };\r\n }\r\n\r\n animationEnter(node, done) {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n\r\n let ok = false;\r\n let self = this;\r\n var complete = function() {\r\n self.setState({\r\n hasAnimated: true\r\n });\r\n if (!ok) {\r\n ok = 1;\r\n done();\r\n }\r\n };\r\n\r\n node.style.display = 'none';\r\n\r\n velocity(node, 'slideDown', {\r\n duration: 500,\r\n easing: 'easeOutSine',\r\n complete\r\n });\r\n return this.handleAnimationEnd(node, complete);\r\n }\r\n\r\n animationLeave(node, done) {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n let ok = false;\r\n\r\n var complete = function() {\r\n if (!ok) {\r\n ok = 1;\r\n done();\r\n }\r\n };\r\n\r\n node.style.display = 'block';\r\n\r\n this.setState(\r\n {\r\n hasAnimated: false\r\n },\r\n () => {\r\n velocity(node, 'slideUp', {\r\n duration: 500,\r\n easing: 'easeOutSine',\r\n delay: 300,\r\n complete\r\n });\r\n }\r\n );\r\n return this.handleAnimationEnd(node, complete);\r\n }\r\n\r\n render() {\r\n const {\r\n disruptionHeaderTitle,\r\n disruptionHeaderFromTime,\r\n disruptionHeaderToTime\r\n } = this.props;\r\n let { disruptions } = this.props;\r\n\r\n let disruptionsEls = [];\r\n\r\n disruptions = JSON.parse(disruptions);\r\n let noDeviationsText = disruptions.noDeviationsText;\r\n disruptions = disruptions.disruptions;\r\n\r\n if (disruptions) {\r\n disruptionsEls = disruptions.map(disruption => {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {disruption.header}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n });\r\n }\r\n\r\n disruptionsEls.unshift(\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {disruptionHeaderTitle}\r\n
    \r\n
    \r\n
    \r\n \r\n {disruptionHeaderFromTime}\r\n
    \r\n \r\n {disruptionHeaderToTime}\r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n
    \r\n
      \r\n {disruptionsEls}\r\n
    \r\n {disruptionsEls.length <= 1 && (\r\n
    {noDeviationsText}
    \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nServiceDisruptionsList.propTypesMeta = 'exclude';\r\n\r\nexport default ServiceDisruptionsList;\r\n","import React from 'react';\r\n\r\nimport Checkmark from 'assets/icons/FT_Checkmark.svg';\r\n\r\n/////////////////////////\r\n// THIS IS ONLY A MOCK //\r\n/////////////////////////\r\n\r\nconst ShopInfo = () => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Flytoget Airport express takes you from Oslo Airport Gardermoen to\r\n the Oslo city centre in only 19 minutes\r\n

    \r\n

    Our promise to you

    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n Departure every 10 minutes to and from Oslo Aiport\r\n
    • \r\n
    • \r\n \r\n Only 19 minutes to or from the city centre\r\n
    • \r\n
    • \r\n \r\n Most comfortable transport\r\n
    • \r\n
    • \r\n \r\n Unique travel guarantee\r\n
    • \r\n
    • \r\n \r\n Service Excellence\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nShopInfo.propTypesMeta = 'exclude';\r\n\r\nexport default ShopInfo;\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const Image = {\r\n propTypes: {\r\n url: PropTypes.string,\r\n altText: PropTypes.string\r\n }\r\n};\r\n\r\nexport const Lang = {\r\n propTypes: {\r\n track: PropTypes.string.isRequired,\r\n collapse: PropTypes.string.isRequired,\r\n expand: PropTypes.string.isRequired,\r\n swap: PropTypes.string.isRequired,\r\n calendar: PropTypes.string.isRequired,\r\n today: PropTypes.string.isRequired,\r\n tomorrow: PropTypes.string.isRequired,\r\n monday: PropTypes.string.isRequired,\r\n tuesday: PropTypes.string.isRequired,\r\n wednesday: PropTypes.string.isRequired,\r\n thursday: PropTypes.string.isRequired,\r\n friday: PropTypes.string.isRequired,\r\n saturday: PropTypes.string.isRequired,\r\n sunday: PropTypes.string.isRequired,\r\n january: PropTypes.string.isRequired,\r\n february: PropTypes.string.isRequired,\r\n march: PropTypes.string.isRequired,\r\n april: PropTypes.string.isRequired,\r\n may: PropTypes.string.isRequired,\r\n june: PropTypes.string.isRequired,\r\n july: PropTypes.string.isRequired,\r\n august: PropTypes.string.isRequired,\r\n september: PropTypes.string.isRequired,\r\n october: PropTypes.string.isRequired,\r\n november: PropTypes.string.isRequired,\r\n december: PropTypes.string.isRequired,\r\n prevMonth: PropTypes.string.isRequired,\r\n nextMonth: PropTypes.string.isRequired,\r\n arrival: PropTypes.string.isRequired,\r\n departure: PropTypes.string.isRequired,\r\n back: PropTypes.string.isRequired,\r\n loadMore: PropTypes.string.isRequired,\r\n minutes: PropTypes.string.isRequired,\r\n retry: PropTypes.string.isRequired,\r\n noMoreRoutes: PropTypes.string.isRequired,\r\n addToCalendar: PropTypes.string.isRequired,\r\n from: PropTypes.string.isRequired,\r\n to: PropTypes.string.isRequired,\r\n cancelled: PropTypes.string.isRequired,\r\n walk: PropTypes.string.isRequired,\r\n minutesShort: PropTypes.string.isRequired,\r\n showInMap: PropTypes.string.isRequired,\r\n showStops: PropTypes.string.isRequired,\r\n hideStops: PropTypes.string.isRequired,\r\n changeTransport: PropTypes.string.isRequired,\r\n buyTicket: PropTypes.string.isRequired\r\n }\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Select from 'react-select';\r\n\r\nimport Switch from 'assets/icons/FT_arrows_switch.svg';\r\nimport Expand from 'assets/icons/FT_arrow_small_up.svg';\r\nimport IconCheck from 'assets/icons/FT_Checkmark.svg';\r\n\r\nimport {\r\n documentIsDefined,\r\n TravelInputChangeType\r\n} from 'components/travel-planner/constants';\r\nimport { Lang } from 'components/travel-planner/models';\r\n\r\nclass TravelInput extends Component {\r\n static propTypes = {\r\n airportStation: PropTypes.string.isRequired,\r\n station: PropTypes.string,\r\n isLoading: PropTypes.bool,\r\n lang: PropTypes.shape(Lang.propTypes).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n stops: PropTypes.arrayOf(PropTypes.shape({})),\r\n towardsAirport: PropTypes.bool.isRequired\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n checkStatePropsChanged = prevProps => {\r\n return (\r\n prevProps.station != this.props.station ||\r\n prevProps.airportStation != this.props.airportStation ||\r\n prevProps.towardsAirport != this.props.towardsAirport\r\n );\r\n };\r\n\r\n buildStateFromProps = () => {\r\n return {\r\n from: this.props.towardsAirport\r\n ? this.props.station\r\n : this.props.airportStation,\r\n to: this.props.towardsAirport\r\n ? this.props.airportStation\r\n : this.props.station,\r\n towardsAirport: this.props.towardsAirport\r\n };\r\n };\r\n\r\n state = this.buildStateFromProps();\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.checkStatePropsChanged(prevProps)) {\r\n this.setState(this.buildStateFromProps());\r\n }\r\n\r\n if (prevState.from != this.state.from || prevState.to != this.state.to) {\r\n const changeType =\r\n prevState.from != this.state.from && prevState.to != this.state.to\r\n ? TravelInputChangeType.DirectionChanged\r\n : prevState.from != this.state.from\r\n ? TravelInputChangeType.FromUpdated\r\n : TravelInputChangeType.ToUpdated;\r\n const stationId = this.state.towardsAirport\r\n ? this.state.from\r\n : this.state.to;\r\n this.props.onChange({\r\n changeType: changeType,\r\n station: this.props.stops.find(x => x.value === stationId) || {},\r\n direction: this.state.towardsAirport\r\n });\r\n }\r\n }\r\n\r\n arrowRenderer = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n optionRenderer = direction => {\r\n return item => {\r\n return item.value == this.state[direction] ? (\r\n \r\n \r\n {item.name}\r\n \r\n ) : (\r\n item.name\r\n );\r\n };\r\n };\r\n\r\n onOpenDropdown = () => {\r\n documentIsDefined && document.body.classList.add('no-scroll-mobile');\r\n };\r\n\r\n onCloseDropdown = () => {\r\n documentIsDefined && document.body.classList.remove('no-scroll-mobile');\r\n };\r\n\r\n onChangeLocationFrom = e => {\r\n let fromLocation = e.value;\r\n\r\n if (fromLocation === this.state.from) return;\r\n\r\n if (fromLocation === this.state.to) {\r\n this.changeDirection();\r\n } else if (this.state.from === this.props.airportStation) {\r\n this.setState({\r\n to: this.props.airportStation,\r\n from: fromLocation,\r\n towardsAirport: true\r\n });\r\n } else {\r\n this.setState({\r\n from: fromLocation\r\n });\r\n }\r\n };\r\n\r\n onChangeLocationTo = e => {\r\n let toLocation = e.value;\r\n\r\n if (toLocation === this.state.to) return;\r\n\r\n if (toLocation === this.state.from) {\r\n this.changeDirection();\r\n } else if (this.state.to === this.props.airportStation) {\r\n this.setState({\r\n to: toLocation,\r\n from: this.props.airportStation,\r\n towardsAirport: false\r\n });\r\n } else {\r\n this.setState({\r\n to: toLocation\r\n });\r\n }\r\n };\r\n\r\n onChangeDirection = () => {\r\n this.changeDirection();\r\n };\r\n\r\n onKeyDownDirection = e => {\r\n let code = e.which;\r\n if (code === 13 || code === 32) {\r\n e.preventDefault();\r\n this.changeDirection();\r\n }\r\n };\r\n\r\n changeDirection = () => {\r\n this.toField.focusOption(this.props.stops[this.state.from]);\r\n this.fromField.focusOption(this.props.stops[this.state.to]);\r\n\r\n this.setState(state => ({\r\n from: state.to,\r\n to: state.from,\r\n towardsAirport: !this.state.towardsAirport\r\n }));\r\n };\r\n\r\n render() {\r\n const { lang, stops, isLoading } = this.props;\r\n\r\n return (\r\n
    \r\n \r\n (this.fromField = node)}\r\n name=\"form-field-from\"\r\n autosize={false}\r\n clearable={false}\r\n searchable={false}\r\n scrollMenuIntoView={false}\r\n value={this.state.from}\r\n valueRenderer={value => lang.from + ' ' + value.name}\r\n options={stops}\r\n isLoading={isLoading}\r\n onOpen={this.onOpenDropdown}\r\n onClose={this.onCloseDropdown}\r\n onChange={this.onChangeLocationFrom}\r\n arrowRenderer={this.arrowRenderer}\r\n optionRenderer={this.optionRenderer('from')}\r\n aria-label={this.props.lang && this.props.lang.from} //added aria-label to fix WCAG issue https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label\r\n />\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n (this.toField = node)}\r\n name=\"form-field-to\"\r\n autosize={false}\r\n clearable={false}\r\n searchable={false}\r\n scrollMenuIntoView={false}\r\n value={this.state.to}\r\n valueRenderer={value => lang.to + ' ' + value.name}\r\n options={stops}\r\n isLoading={isLoading}\r\n onOpen={this.onOpenDropdown}\r\n onClose={this.onCloseDropdown}\r\n onChange={this.onChangeLocationTo}\r\n arrowRenderer={this.arrowRenderer}\r\n optionRenderer={this.optionRenderer('to')}\r\n aria-label={this.props.lang && this.props.lang.to}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TravelInput;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\n/* eslint-disable react/no-multi-comp */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nconst Step = ({ children, disabled, onClick, tabIndex }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nStep.propTypes = {\r\n children: PropTypes.node,\r\n disabled: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n tabIndex: PropTypes.number\r\n};\r\n\r\nconst StepperRow = ({\r\n waitingForApiResponse,\r\n isSelectable,\r\n notSelectableText,\r\n productName,\r\n productPrice,\r\n currencyCode,\r\n quantity,\r\n actualPrice,\r\n onUpdateAmount,\r\n maxTickets,\r\n sumTickets,\r\n tabIndex,\r\n translations,\r\n discountActive\r\n}) => {\r\n /* this */\r\n return (\r\n
    \r\n
    \r\n
    \r\n {productName}\r\n
    \r\n {translations.perItemPriceIndicator} {productPrice} {currencyCode}\r\n
    \r\n
    \r\n\r\n
    \r\n onUpdateAmount(-1)}\r\n >\r\n -\r\n \r\n {!isSelectable ? '-' : quantity}\r\n = maxTickets}\r\n onClick={() => onUpdateAmount(1)}\r\n >\r\n +\r\n \r\n
    \r\n\r\n \r\n {actualPrice} {currencyCode}\r\n
    \r\n
    \r\n {!isSelectable ? (\r\n
    {notSelectableText}
    \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nStepperRow.propTypes = {\r\n waitingForApiResponse: PropTypes.bool,\r\n isSelectable: PropTypes.bool,\r\n notSelectableText: PropTypes.string,\r\n productName: PropTypes.string,\r\n productPrice: PropTypes.string,\r\n currencyCode: PropTypes.string,\r\n quantity: PropTypes.number,\r\n actualPrice: PropTypes.string,\r\n onUpdateAmount: PropTypes.func,\r\n maxTickets: PropTypes.number,\r\n sumTickets: PropTypes.number,\r\n tabIndex: PropTypes.number,\r\n translations: PropTypes.object,\r\n discountActive: PropTypes.bool\r\n};\r\n\r\nStepperRow.propTypesMeta = 'exclude';\r\n\r\nexport default StepperRow;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\n\r\nimport StepperRow from 'components/stepper-row/stepper-row';\r\nimport ErrorBlock from 'components/error-block';\r\n\r\nimport Expand from 'assets/icons/FT_arrow_small_up.svg';\r\n\r\nclass ShoppingProductList extends Component {\r\n static propTypes = {\r\n currencyCode: PropTypes.string,\r\n discountActive: PropTypes.bool,\r\n discountText: PropTypes.string,\r\n expandProducts: PropTypes.bool,\r\n fareTypesUrl: PropTypes.string,\r\n maxTickets: PropTypes.number,\r\n onUpdateAmount: PropTypes.func,\r\n products: PropTypes.array,\r\n sumTickets: PropTypes.number,\r\n translations: PropTypes.object,\r\n waitingForApiResponse: PropTypes.bool\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n changingSize: false,\r\n showAllFares: props.expandProducts\r\n };\r\n }\r\n\r\n getProducts = (sumTickets, filter, setTabIndex) => {\r\n const {\r\n translations,\r\n maxTickets,\r\n currencyCode,\r\n waitingForApiResponse,\r\n onUpdateAmount,\r\n discountActive\r\n } = this.props;\r\n return this.props.products\r\n .map((product, i) => {\r\n const tab = setTabIndex\r\n ? {\r\n tabIndex: this.state.showAllFares ? 0 : -1\r\n }\r\n : {};\r\n if (filter(product)) {\r\n return (\r\n \r\n );\r\n }\r\n })\r\n .filter(p => p != null);\r\n };\r\n\r\n toggleList = () => {\r\n this.setState({ changingSize: true }, () => {\r\n setTimeout(() => {\r\n // need this to handle contraction properly\r\n this.setState({ showAllFares: !this.state.showAllFares }, () => {\r\n setTimeout(() => {\r\n this.setState({ changingSize: false });\r\n }, 300); // css animation duration\r\n });\r\n }, 1);\r\n });\r\n };\r\n\r\n getHeight = () => {\r\n if (this.state.changingSize)\r\n return this.state.showAllFares ? this.listElement.scrollHeight : 0;\r\n return this.state.showAllFares ? 'auto' : 0;\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n !prevProps.expandProducts &&\r\n this.props.expandProducts &&\r\n !this.state.showAllFares\r\n )\r\n this.toggleList();\r\n }\r\n\r\n render() {\r\n const {\r\n translations,\r\n discountText,\r\n maxTickets,\r\n fareTypesUrl,\r\n sumTickets\r\n } = this.props;\r\n const { showAllFares } = this.state;\r\n const {\r\n lessTickets,\r\n moreTickets,\r\n readMoreAboutOurFareTypes,\r\n maxTicketsWarning\r\n } = translations;\r\n const errorMessage =\r\n sumTickets >= maxTickets ? (\r\n \r\n ) : null;\r\n const discountMessage = discountText ? (\r\n \r\n ) : null;\r\n const productList = this.getProducts(sumTickets, p => !p.isHidden);\r\n const moreProducts = this.getProducts(sumTickets, p => p.isHidden, true);\r\n return (\r\n
    \r\n {errorMessage}\r\n {discountMessage}\r\n {productList}\r\n (this.listElement = node)}\r\n style={{ height: this.getHeight() }}\r\n >\r\n {moreProducts}\r\n
    \r\n\r\n {moreProducts.length > 0 ? (\r\n {\r\n var code = e.which;\r\n if (code === 32 || code === 13) {\r\n e.preventDefault();\r\n this.toggleList();\r\n }\r\n }}\r\n tabIndex=\"0\"\r\n onClick={this.toggleList}\r\n >\r\n {showAllFares ? lessTickets : moreTickets}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
    \r\n \r\n {readMoreAboutOurFareTypes}\r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ShoppingProductList;\r\n","export const doNotTrack = () =>\r\n (window.external &&\r\n window.external.msTrackingProtectionEnabled &&\r\n window.external.msTrackingProtectionEnabled()) ||\r\n (window.doNotTrack && window.doNotTrack == '1') ||\r\n (navigator.doNotTrack &&\r\n (navigator.doNotTrack == 'yes' || navigator.doNotTrack == '1')) ||\r\n (navigator.msDoNotTrack && navigator.msDoNotTrack == '1');\r\n\r\nexport const trackStateWithGoogle = (action, label, category, event) => {\r\n if (doNotTrack()) return;\r\n var data = {\r\n event_category: category || '',\r\n event_action: action || '',\r\n event_label: label || '',\r\n event: event || 'interaction'\r\n };\r\n // eslint-disable-next-line no-undef\r\n typeof dataLayer !== 'undefined' && dataLayer.push(data);\r\n};\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\n/* eslint-disable react/no-multi-comp */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport { doNotTrack } from 'utils/tracking.js';\r\n\r\nif (typeof window !== 'undefined') {\r\n // eslint-disable-next-line no-unused-vars\r\n const FormData = require('formdata-polyfill');\r\n}\r\n\r\nclass ErrorMessage extends Component {\r\n static propTypes = {\r\n error: PropTypes.bool,\r\n message: PropTypes.string\r\n };\r\n\r\n static defaultProps = {\r\n countryCodes: [{ name: 'NO', code: '47' }]\r\n };\r\n\r\n render() {\r\n const { message } = this.props;\r\n const expandedStyle = {\r\n height: this.props.error ? this.error.scrollHeight : 0\r\n };\r\n\r\n return (\r\n (this.error = error)}\r\n style={expandedStyle}\r\n >\r\n {message}\r\n \r\n );\r\n }\r\n}\r\n\r\nclass ShoppingCartForm extends Component {\r\n static propTypes = {\r\n antiForgeryToken: PropTypes.string,\r\n countryCode: PropTypes.string,\r\n countryCodes: PropTypes.arrayOf(\r\n PropTypes.exact({\r\n fullName: PropTypes.string,\r\n name: PropTypes.string,\r\n code: PropTypes.string\r\n })\r\n ),\r\n customerId: PropTypes.string,\r\n email: PropTypes.string,\r\n language: PropTypes.string,\r\n mobilePhone: PropTypes.string,\r\n privacyPolicyUrl: PropTypes.string,\r\n storableState: PropTypes.object,\r\n sumTickets: PropTypes.number,\r\n translations: PropTypes.object,\r\n termsAndConditionUrl: PropTypes.string,\r\n updateCartAndCallback: PropTypes.func,\r\n updateForm: PropTypes.func,\r\n url: PropTypes.string\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n static defaultProps = {\r\n updateCartAndCallback: () => {},\r\n updateForm: () => {}\r\n };\r\n\r\n state = {\r\n errorStates: {}\r\n };\r\n\r\n componentWillReceiveProps(newProps) {\r\n if (this.props.sumTickets !== newProps.sumTickets) {\r\n let errorStates = { ...this.state.errorStates };\r\n if (newProps.sumTickets === 0) errorStates['sumTickets'] = true;\r\n else delete errorStates['sumTickets'];\r\n this.setState({ errorStates });\r\n }\r\n }\r\n\r\n noSubmit = e => {\r\n e.preventDefault();\r\n return false;\r\n };\r\n\r\n purchaseTickets = e => {\r\n var component = this;\r\n this.props.updateCartAndCallback(() => component.submitForm(e));\r\n };\r\n\r\n submitForm = e => {\r\n const { storableState } = this.props;\r\n const formData = new FormData(this.form);\r\n let errorStates = {};\r\n\r\n if (formData.get('countryCode') === '-') errorStates['countryCode'] = true;\r\n if (!this.validateMobile(formData.get('mobilePhone'))) {\r\n this.trackState('mobilePhone');\r\n errorStates['mobilePhone'] = true;\r\n }\r\n if (!this.validateEmail(formData.get('email'))) {\r\n this.trackState('email');\r\n errorStates['email'] = true;\r\n }\r\n if (formData.get('checkbox') === null) {\r\n this.trackState('checkbox');\r\n errorStates['checkbox'] = true;\r\n }\r\n if (this.props.sumTickets === 0) errorStates['sumTickets'] = true;\r\n if (Object.keys(errorStates).length > 0) {\r\n e.preventDefault();\r\n this.setState({ errorStates });\r\n return false;\r\n }\r\n // store form data\r\n var formJson = {};\r\n formData.forEach(function(value, key) {\r\n formJson[key] = value;\r\n });\r\n\r\n // tracking\r\n if (\r\n !doNotTrack() &&\r\n typeof dataLayer !== 'undefined' &&\r\n typeof ga !== 'undefined'\r\n ) {\r\n const productList = storableState.products.filter(\r\n product => product.quantity > 0\r\n );\r\n\r\n // create data to send to GTM\r\n let products = productList.map(product => {\r\n const id =\r\n storableState.fromStationCode +\r\n '-' +\r\n storableState.toStationCode +\r\n '-' +\r\n (storableState.includeReturn ? 'RETUR' : 'ENKEL');\r\n return {\r\n id: id.toUpperCase(),\r\n name: product.productName,\r\n brand: 'Flytoget',\r\n price: product.productPrice,\r\n quantity: product.quantity,\r\n dimension1: storableState.fromStationCode,\r\n dimension2: storableState.toStationCode\r\n };\r\n });\r\n\r\n // eslint-disable-next-line no-undef\r\n dataLayer.push({\r\n event: 'checkout',\r\n ecommerce: {\r\n checkout: {\r\n actionField: {\r\n step: 2\r\n },\r\n products: products\r\n }\r\n },\r\n eventCallback: () => {\r\n this.form.submit();\r\n }\r\n });\r\n } else {\r\n this.form.submit();\r\n }\r\n };\r\n\r\n validateMobile = value =>\r\n value && value.length > 5 && !isNaN(parseFloat(value)) && isFinite(value);\r\n\r\n validateEmail = value =>\r\n // regex taken from http://emailregex.com/ (JS version)\r\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\r\n value\r\n );\r\n\r\n validateSelect = value => value !== '-';\r\n\r\n handleError = (validate, e) => {\r\n const { errorStates } = this.state;\r\n let newErrorStates = { ...errorStates };\r\n\r\n const valid = validate(e.target.value);\r\n if (valid && newErrorStates[e.target.name]) {\r\n delete newErrorStates[e.target.name];\r\n } else if (!valid) {\r\n this.trackState(e.target.name);\r\n newErrorStates[e.target.name] = true;\r\n }\r\n this.setState({\r\n errorStates: newErrorStates\r\n });\r\n };\r\n\r\n trackState = name => {\r\n let action =\r\n {\r\n email: 'epost',\r\n mobilePhone: 'mobil',\r\n checkbox: 'vilkår'\r\n }[name] || '';\r\n var event = {\r\n event_category: 'skjemafeil',\r\n event_action: action,\r\n event_label: '-',\r\n event: 'errormessage'\r\n };\r\n // eslint-disable-next-line no-undef\r\n typeof dataLayer !== 'undefined' && dataLayer.push(event);\r\n };\r\n\r\n handleChange = e =>\r\n this.props.updateForm({\r\n [e.target.name]: e.target.value\r\n });\r\n\r\n onChangeCheckbox = e => {\r\n const { errorStates } = this.state;\r\n let newErrorStates = { ...errorStates };\r\n\r\n if (e.target.checked && newErrorStates[e.target.name]) {\r\n delete newErrorStates[e.target.name];\r\n this.setState({\r\n errorStates: newErrorStates\r\n });\r\n } else if (!e.target.checked) {\r\n this.trackState(e.target.name);\r\n newErrorStates[e.target.name] = true;\r\n }\r\n\r\n this.setState({\r\n errorStates: newErrorStates\r\n });\r\n this.props.updateForm({\r\n [e.target.name]: e.target.checked\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n url,\r\n language,\r\n customerId,\r\n translations,\r\n countryCodes,\r\n termsAndConditionUrl,\r\n privacyPolicyUrl,\r\n antiForgeryToken,\r\n countryCode,\r\n mobilePhone,\r\n email\r\n } = this.props;\r\n const { errorStates } = this.state;\r\n const {\r\n acceptTermsLinkPrefixText,\r\n acceptTermsLinkText,\r\n privacyPolicyLinkPrefixText,\r\n privacyPolicyLinkText,\r\n privacyPolicyLinkSuffixText,\r\n placeholderMobile,\r\n placeholderEmail,\r\n cardOptions,\r\n validateMobilePhone,\r\n validateEmail,\r\n validateCheckbox,\r\n noTicketsMessage,\r\n mobileRegisterText,\r\n pickCountryCodeMessage,\r\n emailRegisterText\r\n } = translations;\r\n\r\n const noTicketsError = (\r\n \r\n );\r\n const countryCodeError = (\r\n \r\n );\r\n const mobileError = (\r\n \r\n );\r\n const emailError = (\r\n \r\n );\r\n const checkboxError = (\r\n \r\n );\r\n\r\n // Determine selected code\r\n let selectedCode = countryCode;\r\n const codes = [{ name: '-', code: '-', label: '-' }].concat(\r\n countryCodes.map(item => {\r\n // set new selected language\r\n if (\r\n selectedCode === '-' &&\r\n 'no' === language.toLowerCase() &&\r\n item.code === '47'\r\n )\r\n selectedCode = item.code;\r\n return { ...item, label: '+' + item.code };\r\n })\r\n );\r\n\r\n return (\r\n
    \r\n (this.form = node)}\r\n onSubmit={this.noSubmit}\r\n action={url}\r\n method=\"POST\"\r\n >\r\n
    \r\n \r\n
    {noTicketsError}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.handleError(this.validateMobile, e)}\r\n />\r\n
    \r\n \r\n {mobileError}\r\n {countryCodeError}\r\n
    \r\n
    \r\n this.handleError(this.validateEmail, e)}\r\n />\r\n \r\n {emailError}\r\n
    \r\n
    \r\n \r\n \r\n {acceptTermsLinkPrefixText}{' '}\r\n \r\n {acceptTermsLinkText}\r\n \r\n {'.'}\r\n
    \r\n {privacyPolicyLinkPrefixText}{' '}\r\n \r\n {privacyPolicyLinkText}\r\n {' '}\r\n {privacyPolicyLinkSuffixText}\r\n
    \r\n {checkboxError}\r\n
    \r\n
    \r\n \r\n {translations.continueToCheckout}\r\n \r\n
    \r\n
    \r\n
    {cardOptions}
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ShoppingCartForm;\r\n","import React from 'react';\r\nimport cn from 'classnames';\r\n\r\nimport Checkmark from 'assets/icons/checkmark_orange.svg';\r\n\r\nconst entryModal = (entryModal, action) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {entryModal.image && }\r\n
    \r\n {entryModal.listTitle &&

    {entryModal.listTitle}

    }\r\n
    \r\n
      \r\n {entryModal.list &&\r\n entryModal.list.map((item, index) => (\r\n
    • \r\n \r\n {item}\r\n
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n);\r\n\r\nentryModal.propTypesMeta = 'exclude';\r\n\r\nexport default entryModal;\r\n","import React from 'react';\r\n\r\nconst currencyModal = (\r\n changeCurrencyModal,\r\n action,\r\n dropdownAction,\r\n currentValue\r\n) => (\r\n
    \r\n

    {changeCurrencyModal.title}

    \r\n

    {changeCurrencyModal.text}

    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n);\r\n\r\ncurrencyModal.propTypesMeta = 'exclude';\r\n\r\nexport default currencyModal;\r\n","function getParameter(name) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n if (urlParams.has(name)) {\r\n return decodeURIComponent(urlParams.get(name));\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction setParameters(params) {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n for (var name in params) {\r\n const value = params[name];\r\n if (value) {\r\n urlParams.set(name, value);\r\n } else {\r\n urlParams.delete(name, value);\r\n }\r\n }\r\n\r\n const queryString = '?' + urlParams.toString() + window.location.hash;\r\n window.history.replaceState({}, document.title, queryString);\r\n}\r\n\r\nfunction setParameter(name, value) {\r\n var params = {};\r\n params[name] = value;\r\n setParameters(params);\r\n}\r\n\r\nexport default {\r\n getParameter,\r\n setParameter,\r\n setParameters\r\n};\r\n","import { windowIsDefined } from 'components/travel-planner/constants';\r\nimport pageQueryHelper from './page-query-helper';\r\n\r\nfunction getData({ defaultLocation, defaultDirection }) {\r\n var storedLocation = undefined;\r\n var storedDirection = undefined;\r\n\r\n if (windowIsDefined) {\r\n storedLocation =\r\n pageQueryHelper.getParameter('location') ||\r\n localStorage.getItem('location');\r\n\r\n var queryDirection = pageQueryHelper.getParameter('direction');\r\n var sessionDirection = sessionStorage.getItem('direction');\r\n\r\n if (\r\n queryDirection == 'from' ||\r\n (!queryDirection && sessionDirection === 'toAirport')\r\n ) {\r\n storedDirection = true;\r\n }\r\n\r\n if (\r\n queryDirection == 'to' ||\r\n (!queryDirection && sessionDirection === 'fromAirport')\r\n ) {\r\n storedDirection = false;\r\n }\r\n }\r\n\r\n return {\r\n location: storedLocation || defaultLocation,\r\n direction:\r\n storedDirection !== undefined ? storedDirection : defaultDirection\r\n };\r\n}\r\n\r\nfunction setData({ location, direction, skipQueryUpdate = false }) {\r\n if (windowIsDefined) {\r\n var sessionDirection = direction ? 'toAirport' : 'fromAirport';\r\n var queryDirection = direction ? 'from' : 'to';\r\n\r\n if (location) {\r\n localStorage.setItem('location', location);\r\n } else {\r\n localStorage.removeItem('location');\r\n }\r\n\r\n if (sessionDirection) {\r\n sessionStorage.setItem('direction', sessionDirection);\r\n } else {\r\n sessionStorage.removeItem('direction');\r\n }\r\n\r\n if (!skipQueryUpdate) {\r\n pageQueryHelper.setParameters({\r\n location: location,\r\n direction: queryDirection\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default { getData, setData };\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport debounce from 'lodash/debounce';\r\n\r\nimport CartTotalAmount from 'components/cart-total-amount/cart-total-amount';\r\nimport TravelInput from 'components/travel-input/travel-input';\r\nimport ShoppingProductList from 'components/shopping-product-list/shopping-product-list';\r\nimport ShoppingCartForm from 'components/shopping-cart-form/shopping-cart-form';\r\nimport RadioToggle from 'components/radio-toggle/radio-toggle';\r\nimport Modal from 'components/modal/modal';\r\nimport { entryModal, currencyModal } from 'components/modal/modals';\r\nimport ErrorBlock from 'components/error-block';\r\n\r\nimport { trackStateWithGoogle } from 'utils/tracking.js';\r\n\r\nimport { TravelInputChangeType } from 'components/travel-planner/constants';\r\nimport travelPlannerStore from 'components/travel-planner/travel-planner-store';\r\n\r\nconst stationPropType = PropTypes.exact({\r\n name: PropTypes.string,\r\n id: PropTypes.string,\r\n value: PropTypes.string\r\n});\r\n\r\nclass ShoppingCart extends Component {\r\n static propTypes = {\r\n antiForgeryToken: PropTypes.string,\r\n changeCurrencyModal: PropTypes.object,\r\n checkoutPostUrl: PropTypes.string,\r\n countryCodes: PropTypes.array,\r\n customerId: PropTypes.string,\r\n defaultFromStation: stationPropType,\r\n defaultToStation: stationPropType,\r\n discountActive: PropTypes.bool,\r\n discountText: PropTypes.string,\r\n entryModal: PropTypes.object,\r\n expandProducts: PropTypes.bool,\r\n fareTypesUrl: PropTypes.string,\r\n fromStation: stationPropType,\r\n language: PropTypes.string,\r\n maxNoOfTickets: PropTypes.number,\r\n privacyPolicyUrl: PropTypes.string,\r\n products: PropTypes.exact({\r\n currencyCode: PropTypes.string,\r\n discount: PropTypes.string,\r\n estimatedTotalPriceText: PropTypes.string,\r\n fromStationCode: PropTypes.string,\r\n includeReturn: PropTypes.bool,\r\n products: PropTypes.array,\r\n selectedCurrencyCode: PropTypes.string,\r\n totalPrice: PropTypes.string,\r\n toStationCode: PropTypes.string\r\n }),\r\n returnError: PropTypes.exact({\r\n active: PropTypes.bool,\r\n message: PropTypes.string,\r\n title: PropTypes.string\r\n }),\r\n rootUrl: PropTypes.string,\r\n showMoneySaved: PropTypes.bool,\r\n stations: PropTypes.arrayOf(stationPropType),\r\n termsAndConditionUrl: PropTypes.string,\r\n to: PropTypes.bool,\r\n toStation: stationPropType,\r\n translations: PropTypes.shape({\r\n return: PropTypes.string,\r\n single: PropTypes.string,\r\n validTicketsDuration: PropTypes.string,\r\n validTicketsDurationForCampaign: PropTypes.string\r\n }),\r\n updateCartUrl: PropTypes.string\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n static defaultProps = {\r\n discountText: null,\r\n to: false\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n // handle mock url for development\r\n const rootUrl =\r\n typeof window !== 'undefined' &&\r\n window.location.host.indexOf('localhost:3001') > -1\r\n ? 'http://epi-dev.flytoget.no'\r\n : props.rootUrl;\r\n const { selectedCurrencyCode, includeReturn } = props.products;\r\n let modalOpen = false;\r\n if (props.entryModal.active) {\r\n // check referrer\r\n if (\r\n typeof document !== 'undefined' &&\r\n !document.referrer.match(/^https?:\\/\\/([^/]+\\.)?flytoget\\.no(\\/|$)/i)\r\n ) {\r\n modalOpen = true;\r\n const modalValue = localStorage.getItem('flytoget-entry-modal');\r\n if (modalValue) {\r\n // read value from store\r\n modalOpen = !JSON.parse(modalValue).hide;\r\n } else {\r\n // set initial value\r\n localStorage.setItem(\r\n 'flytoget-entry-modal',\r\n JSON.stringify({ hide: false })\r\n );\r\n }\r\n }\r\n }\r\n\r\n this.state = {\r\n fromStationId: props.defaultFromStation.value,\r\n toStationId: props.defaultToStation.value,\r\n fromStationValue: props.defaultFromStation.id,\r\n toStationValue: props.defaultToStation.id,\r\n type: includeReturn ? 2 : 1,\r\n products: props.products,\r\n root: rootUrl,\r\n waitingForApiResponse: false,\r\n dropdownCurrency: selectedCurrencyCode,\r\n currentModal: modalOpen ? 'entry' : '',\r\n modalOpen: modalOpen,\r\n countryCode: '-',\r\n mobilePhone: '',\r\n email: '',\r\n expandProducts: props.expandProducts,\r\n totalPrice: '0',\r\n estimatedTotalPriceText: '',\r\n to: props.to,\r\n discountActive: props.discountActive\r\n };\r\n this.updateCartApiDebounced = debounce(this.updateCart, 300);\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.modalOpen) document.body.classList.add('no-scroll-modal');\r\n const loadFromLocalstorage =\r\n this.props.returnError && this.props.returnError.active;\r\n if (loadFromLocalstorage) this.loadAfterError();\r\n }\r\n\r\n getClientSideCart = () => {\r\n const toStation = this.props.stations.find(\r\n station => station.value === this.travelInput.state.to\r\n ).id;\r\n const fromStation = this.props.stations.find(\r\n station => station.value === this.travelInput.state.from\r\n ).id;\r\n\r\n return {\r\n fromStationCode: fromStation,\r\n toStationCode: toStation,\r\n includeReturn: this.state.type == 2,\r\n selectedCurrencyCode: this.state.dropdownCurrency,\r\n products: this.state.products.products\r\n };\r\n };\r\n\r\n updateQueryStringParameter(uri, key, value) {\r\n var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\r\n var separator = uri.indexOf('?') !== -1 ? '&' : '?';\r\n if (uri.match(re)) return uri.replace(re, '$1' + key + '=' + value + '$2');\r\n return uri + separator + key + '=' + value;\r\n }\r\n\r\n updateCart = () => this.updateCartAndCallback();\r\n\r\n updateCartAndCallback = callback => {\r\n var cart = this.getClientSideCart();\r\n const { language, customerId, updateCartUrl } = this.props;\r\n var component = this;\r\n this.setLoading(() =>\r\n fetch(updateCartUrl + customerId + '/' + language.toLowerCase(), {\r\n method: 'POST',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(cart)\r\n })\r\n .then(res => res.json())\r\n .then(data => {\r\n component.updateClientCart(data);\r\n let newUrl = component.updateQueryStringParameter(\r\n location.href,\r\n 'from',\r\n data.fromStationId\r\n );\r\n newUrl = component.updateQueryStringParameter(\r\n newUrl,\r\n 'to',\r\n data.toStationId\r\n );\r\n history.replaceState(history.state, document.title, newUrl);\r\n })\r\n .then(() => {\r\n if (typeof callback !== 'undefined') callback();\r\n })\r\n .then(this.stopLoading)\r\n .catch(() => {\r\n this.stopLoading();\r\n })\r\n );\r\n };\r\n\r\n updateClientCart = data =>\r\n this.setState(\r\n {\r\n fromStationId: data.fromStationCode,\r\n toStationId: data.toStationCode,\r\n to: data.toStationCode == 'GAR',\r\n type: data.includeReturn ? 2 : 1,\r\n products: {\r\n selectedCurrencyCode: data.selectedCurrencyCode,\r\n includeReturn: data.includeReturn,\r\n fromStationCode: data.fromStationCode,\r\n fromStationId: data.fromStationId,\r\n toStationCode: data.toStationCode,\r\n toStationId: data.toStationId,\r\n currencyCode: data.currencyCode,\r\n discount: data.discount,\r\n totalPrice: data.totalPrice,\r\n products: data.products,\r\n estimatedTotalPriceText: data.estimatedTotalPriceText,\r\n discountActive: data.discountActive\r\n }\r\n },\r\n this.saveStateToLocalStorage()\r\n );\r\n\r\n updateForm = data => this.setState(data);\r\n\r\n saveStateToLocalStorage = () => {\r\n let saveableState = {\r\n ...this.state,\r\n modalOpen: false,\r\n modalClosing: false\r\n };\r\n localStorage.setItem('flytoget-client-cart', JSON.stringify(saveableState));\r\n };\r\n\r\n loadStateFromLocalStorage = () =>\r\n JSON.parse(localStorage.getItem('flytoget-client-cart'));\r\n\r\n loadAfterError() {\r\n const data = this.loadStateFromLocalStorage();\r\n if (typeof data === 'undefined') return;\r\n let expandProducts = data.products.products.some(\r\n product => product.isHidden && product.quantity > 0\r\n );\r\n data &&\r\n this.setState({\r\n ...data,\r\n waitingForApiResponse: false,\r\n expandProducts: expandProducts\r\n });\r\n }\r\n\r\n onInputChange = e => {\r\n switch (e.changeType) {\r\n case TravelInputChangeType.FromUpdated:\r\n trackStateWithGoogle('fra', e.station.id, 'endre stasjon');\r\n break;\r\n case TravelInputChangeType.ToUpdated:\r\n trackStateWithGoogle('til', e.station.id, 'endre stasjon');\r\n break;\r\n case TravelInputChangeType.DirectionChanged:\r\n trackStateWithGoogle('reiseretning', '', 'endre stasjon');\r\n break;\r\n }\r\n\r\n this.updateCart();\r\n travelPlannerStore.setData({\r\n location: e.station.value,\r\n direction: e.direction,\r\n skipQueryUpdate: true\r\n });\r\n };\r\n\r\n onChangeType = e => {\r\n trackStateWithGoogle(\r\n e.currentTarget.value == 2 ? 'RETUR' : 'ENKEL',\r\n '',\r\n 'turtype'\r\n );\r\n this.setState({ type: e.currentTarget.value }, this.updateCart);\r\n };\r\n\r\n onUpdateAmount = index => {\r\n return value => {\r\n const products = this.state.products;\r\n let newProducts = [...products.products];\r\n trackStateWithGoogle(\r\n newProducts[index].productName,\r\n value > 0 ? '+' : '-',\r\n 'billettype'\r\n );\r\n // update the product quantity\r\n newProducts[index].quantity = Math.max(\r\n 0,\r\n newProducts[index].quantity + value\r\n );\r\n this.setState(\r\n {\r\n products: {\r\n ...products,\r\n products: newProducts // overwrite the list with the new list\r\n },\r\n waitingForApiResponse: true\r\n },\r\n () => this.updateCartApiDebounced(products.products[index])\r\n );\r\n };\r\n };\r\n\r\n openModal = type => () => {\r\n this.setState({ modalOpen: true, currentModal: type });\r\n document.body.classList.add('no-scroll-modal');\r\n };\r\n\r\n closeModal = e => {\r\n e && e.preventDefault();\r\n e && e.stopPropagation();\r\n if (this.state.currentModal === 'entry')\r\n localStorage.setItem(\r\n 'flytoget-entry-modal',\r\n JSON.stringify({ hide: true })\r\n );\r\n // delay closing by 300ms - same as css animation\r\n this.setState({ modalClosing: true }, () =>\r\n setTimeout(() => {\r\n this.setState({ modalOpen: false, modalClosing: false });\r\n }, 300)\r\n );\r\n document.body.classList.remove('no-scroll-modal');\r\n };\r\n\r\n updateCurrency = () => {\r\n trackStateWithGoogle('fra', this.state.dropdownCurrency, 'endre valuta');\r\n this.updateCart();\r\n this.closeModal();\r\n };\r\n\r\n setCurrencyDropdownValue = e =>\r\n this.setState({ dropdownCurrency: e.currentTarget.value });\r\n\r\n setLoading = callback =>\r\n this.setState({ waitingForApiResponse: true }, callback);\r\n\r\n stopLoading = () => this.setState({ waitingForApiResponse: false });\r\n\r\n render() {\r\n const {\r\n customerId,\r\n translations,\r\n stations,\r\n language,\r\n checkoutPostUrl,\r\n maxNoOfTickets,\r\n privacyPolicyUrl,\r\n termsAndConditionUrl,\r\n changeCurrencyModal,\r\n entryModal: entryModalContent,\r\n countryCodes,\r\n discountText,\r\n fareTypesUrl,\r\n returnError,\r\n antiForgeryToken,\r\n showMoneySaved\r\n } = this.props;\r\n\r\n const {\r\n root,\r\n waitingForApiResponse,\r\n type,\r\n products,\r\n countryCode,\r\n mobilePhone,\r\n email,\r\n expandProducts\r\n } = this.state;\r\n const {\r\n estimatedTotalPriceText,\r\n currencyCode,\r\n discount,\r\n totalPrice,\r\n discountActive\r\n } = products;\r\n const {\r\n return: returnText,\r\n single,\r\n validTicketsDuration,\r\n validTicketsDurationForCampaign\r\n } = translations;\r\n\r\n const checkoutUrl = root + checkoutPostUrl;\r\n\r\n let modal =\r\n this.state.currentModal === 'entry'\r\n ? entryModal(entryModalContent, this.closeModal)\r\n : currencyModal(\r\n changeCurrencyModal,\r\n this.updateCurrency,\r\n this.setCurrencyDropdownValue,\r\n this.state.dropdownCurrency\r\n );\r\n\r\n const sumTickets = products.products.reduce(\r\n (accumulator, current) =>\r\n (isNaN(accumulator) ? accumulator.quantity : accumulator) +\r\n current.quantity\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {returnError && returnError.active ? (\r\n \r\n ) : null}\r\n
    \r\n (this.travelInput = travelInput)}\r\n station={\r\n this.state.to\r\n ? (products && products.fromStationId) ||\r\n (this.props.fromStation && this.props.fromStation.id) ||\r\n (this.props.defaultFromStation &&\r\n this.props.defaultFromStation.id)\r\n : (products && products.toStationId) ||\r\n (this.props.toStation && this.props.toStation.id) ||\r\n (this.props.defaultToStation &&\r\n this.props.defaultToStation.id)\r\n }\r\n stops={stations}\r\n towardsAirport={this.state.to}\r\n airportStation={this.props.defaultToStation.id}\r\n isLoading={false}\r\n onChange={this.onInputChange}\r\n lang={translations}\r\n />\r\n\r\n
    \r\n {(discountActive && validTicketsDurationForCampaign) ||\r\n validTicketsDuration}\r\n
    \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n ref && ref.focus()}\r\n >\r\n {modal}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ShoppingCart;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst translationDefaults = {\r\n bookingConfirmation: 'Booking confirmation',\r\n ticketsSentTo: 'The tickets have been sent to',\r\n from: 'From',\r\n to: 'To',\r\n type: 'Type',\r\n tickets: 'Tickets',\r\n ticketText: 'og kan lagres som bokmerke ved å klikke her:',\r\n ticketLinkText: 'Nettside for billett(er)',\r\n validFrom: 'Valid from',\r\n validTo: 'Valid to',\r\n orderNumber: 'Order number',\r\n anyProblems: 'Any problems we can help with?',\r\n contactUs:\r\n \"Please contact us on chat on flytoget.no or email at flytoget@flytoget.no\"\r\n};\r\n\r\nconst ShoppingCartResponse = ({\r\n email,\r\n from,\r\n to,\r\n type,\r\n tickets,\r\n ticketUrl,\r\n orderNumber,\r\n translations = translationDefaults\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {translations.bookingConfirmation}

    \r\n

    {translations.ticketsSentTo}

    \r\n

    \r\n {email}\r\n

    \r\n

    {translations.ticketText}

    \r\n \r\n {translations.ticketLinkText}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {translations.from}{from}
    {translations.to}{to}
    {translations.type}{type}
    {translations.tickets}{tickets}
    {translations.orderNumber}{orderNumber}
    \r\n
    \r\n

    \r\n {translations.anyProblems}\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nShoppingCartResponse.propTypes = {\r\n email: PropTypes.string,\r\n from: PropTypes.string,\r\n to: PropTypes.string,\r\n type: PropTypes.string,\r\n tickets: PropTypes.string,\r\n ticketUrl: PropTypes.string,\r\n orderNumber: PropTypes.string,\r\n translations: PropTypes.shape({\r\n anyProblems: PropTypes.string,\r\n bookingConfirmation: PropTypes.string,\r\n contactUs: PropTypes.string,\r\n from: PropTypes.string,\r\n orderNumber: PropTypes.string,\r\n tickets: PropTypes.string,\r\n ticketsSentTo: PropTypes.string,\r\n ticketLinkText: PropTypes.string,\r\n ticketText: PropTypes.string,\r\n to: PropTypes.string,\r\n type: PropTypes.string\r\n })\r\n};\r\n\r\nShoppingCartResponse.defaultProps = {\r\n email: '',\r\n from: '',\r\n to: '',\r\n type: '',\r\n tickets: '',\r\n validFrom: '',\r\n validTo: '',\r\n ticketUrl: '',\r\n translations: translationDefaults\r\n};\r\n\r\nShoppingCartResponse.propTypesMeta = 'exclude';\r\n\r\nexport default ShoppingCartResponse;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nconst SkipToMain = ({ text }) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nSkipToMain.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default SkipToMain;\r\n","import React from 'react';\r\nimport cn from 'classnames';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst themes = {\r\n light: 'light',\r\n dark: 'dark'\r\n};\r\n\r\nconst Spinner = ({ theme = themes.dark, className }) => (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nSpinner.propTypes = {\r\n theme: PropTypes.oneOf(Object.values(themes)),\r\n className: PropTypes.string\r\n};\r\n\r\nSpinner.propTypesMeta = 'exclude';\r\n\r\nexport default Spinner;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst SuperMegaHeadingBlock = ({ title, content, isInEditMode }) => (\r\n
    \r\n
    \r\n {(isInEditMode || title) && (\r\n \r\n {title}\r\n \r\n )}\r\n {(isInEditMode || content) && (\r\n
    \r\n {content}\r\n
    \r\n )}\r\n
    \r\n
    \r\n);\r\n\r\nSuperMegaHeadingBlock.defaultProps = {\r\n isInEditMode: false\r\n};\r\n\r\nSuperMegaHeadingBlock.propTypes = {\r\n title: PropTypes.string,\r\n content: PropTypes.string,\r\n isInEditMode: PropTypes.bool\r\n};\r\n\r\nSuperMegaHeadingBlock.propTypesMeta = 'exclude';\r\n\r\nexport default SuperMegaHeadingBlock;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\n\r\nimport { Direction, View } from 'components/travel-planner/constants';\r\nimport { Image } from 'components/travel-planner/models';\r\n\r\nconst TravelPlannerImages = ({\r\n airportImage,\r\n trainImage,\r\n direction,\r\n viewMode\r\n}) => (\r\n
    \r\n \r\n {trainImage && (\r\n
    \r\n \r\n
    \r\n )}\r\n {airportImage && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n);\r\n\r\nTravelPlannerImages.propTypes = {\r\n airportImage: PropTypes.exact(Image.propTypes),\r\n trainImage: PropTypes.exact(Image.propTypes),\r\n direction: PropTypes.oneOf(Object.values(Direction)),\r\n viewMode: PropTypes.oneOf(Object.values(View))\r\n};\r\n\r\nTravelPlannerImages.propTypesMeta = 'exclude';\r\n\r\nexport default TravelPlannerImages;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport cn from 'classnames';\r\nimport Spinner from 'components/spinner';\r\n\r\nconst onEnterKeyDown = callback => e => {\r\n if (e.which === 13) {\r\n e.preventDefault();\r\n callback();\r\n }\r\n};\r\n\r\nconst BottomBar = ({\r\n disabled,\r\n disabledText,\r\n isLoading,\r\n onClick,\r\n onEnterPress,\r\n text\r\n}) => (\r\n \r\n \r\n
    \r\n {disabled ? (\r\n {disabledText}\r\n ) : (\r\n \r\n {text}\r\n \r\n )}\r\n
    \r\n
    \r\n);\r\n\r\nBottomBar.propTypes = {\r\n disabled: PropTypes.bool,\r\n disabledText: PropTypes.string,\r\n isLoading: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n onEnterPress: PropTypes.func,\r\n text: PropTypes.string\r\n};\r\n\r\nBottomBar.propTypesMeta = 'exclude';\r\n\r\nexport default BottomBar;\r\n","import moment from 'moment-timezone';\r\n\r\nimport { fullDate, timeZone } from 'components/travel-planner/constants';\r\n\r\n/**\r\n * Parses date/time from strings to the 'moment' object.\r\n * @param {string} date\r\n * @param {string} time\r\n * @returns {moment}\r\n */\r\nfunction parseMoment(date, time = null) {\r\n let dateTime = moment(\r\n time ? date.substring(0, 10) + time.substring(0, 5) : date,\r\n fullDate,\r\n timeZone\r\n );\r\n return dateTime;\r\n}\r\n\r\nexport default {\r\n parseMoment\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport timeHelper from 'components/travel-planner/timeHelper';\r\nimport cn from 'classnames';\r\n\r\nimport IconCheck from 'assets/icons/FT_Checkmark.svg';\r\nimport Expand from 'assets/icons/FT_arrow_small_up.svg';\r\n\r\nimport {\r\n fullDate,\r\n timeFormat,\r\n View\r\n} from 'components/travel-planner/constants';\r\nimport { Lang } from 'components/travel-planner/models';\r\n\r\nclass TravelResult extends Component {\r\n static propTypes = {\r\n id: PropTypes.string.isRequired,\r\n lang: PropTypes.exact(Lang.propTypes).isRequired,\r\n children: PropTypes.node,\r\n diffTime: PropTypes.number.isRequired, // server/client time difference\r\n dateTime: PropTypes.string.isRequired,\r\n arrival: PropTypes.string.isRequired,\r\n viewMode: PropTypes.number.isRequired,\r\n current: PropTypes.bool,\r\n selected: PropTypes.bool,\r\n track: PropTypes.number,\r\n trackArrival: PropTypes.number,\r\n maxCountdown: PropTypes.number,\r\n valid: PropTypes.bool,\r\n alternative: PropTypes.bool\r\n };\r\n\r\n static defaultProps = {\r\n current: false,\r\n selected: false,\r\n details: false\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n let timeDeparture = timeHelper.parseMoment(this.props.dateTime);\r\n let timeArrival = timeHelper.parseMoment(\r\n this.props.dateTime,\r\n this.props.arrival\r\n );\r\n\r\n // reference to real time\r\n let timeState = {\r\n timeDeparture: timeDeparture,\r\n timeArrival: timeArrival\r\n };\r\n\r\n this.state = {\r\n ...timeState\r\n };\r\n }\r\n\r\n // returns calculated time left, taking server/client time difference into account\r\n getDepartureTime = () => {\r\n const { timeDeparture } = this.state;\r\n\r\n if (this.props.valid && this.props.maxCountdown > 0) {\r\n // time until departure\r\n let secondsLeft = Math.ceil(\r\n timeDeparture.diff(moment(), 'seconds') - this.props.diffTime\r\n );\r\n let minutesLeft = Math.ceil(secondsLeft / 60);\r\n\r\n // output in correct format\r\n if (secondsLeft > 60 && secondsLeft < this.props.maxCountdown * 60) {\r\n return minutesLeft + ' ' + this.props.lang.minutes;\r\n } else if (secondsLeft >= 0 && secondsLeft <= 60) {\r\n return '< 1 ' + this.props.lang.minutes;\r\n }\r\n }\r\n return timeDeparture.format(timeFormat);\r\n };\r\n\r\n // returns arrival time\r\n getArrivalTime = () => {\r\n return this.state.timeArrival.format(timeFormat);\r\n };\r\n\r\n onClick = () => {\r\n return this.props[\r\n 'onClick' + (this.props.viewMode === View.Single ? 'Single' : 'List')\r\n ](this.props.id, null, true);\r\n };\r\n\r\n onKeyDown = e => {\r\n var code = e.which;\r\n // 13 = Return, 32 = Space\r\n if (code === 13 || code === 32) {\r\n e.preventDefault();\r\n this.onClick();\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n lang,\r\n track,\r\n trackArrival,\r\n selected,\r\n current,\r\n viewMode,\r\n valid,\r\n alternative\r\n } = this.props;\r\n\r\n const todayDate = moment().format(fullDate);\r\n\r\n return (\r\n \r\n
    \r\n \r\n {this.getDepartureTime()}\r\n
    \r\n
    \r\n {!valid ? (\r\n {lang.cancelled}\r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n {this.getArrivalTime()}\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {track !== 0 ? lang.track + ' ' + track : ''}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {trackArrival !== 0 ? lang.track + ' ' + trackArrival : ''}\r\n
    \r\n
    \r\n
    \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nTravelResult.propTypesMeta = 'exclude';\r\n\r\nexport default TravelResult;\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport moment from 'moment';\r\nimport timeHelper from 'components/travel-planner/timeHelper';\r\n\r\nimport IconCal from 'assets/icons/FT__kal_small.svg';\r\nimport IconPlane from 'assets/icons/FT_airplane.svg';\r\nimport IconWalk from 'assets/icons/FT_walk.svg';\r\nimport Expand from 'assets/icons/FT_arrow_small_up.svg';\r\n\r\n// constants\r\nimport {\r\n Direction,\r\n fullDate,\r\n shortDateFormat,\r\n shortDateFormatEn\r\n} from 'components/travel-planner/constants';\r\n\r\nclass TravelResultDetails extends Component {\r\n static propTypes = {\r\n dateTime: PropTypes.string,\r\n locale: PropTypes.string,\r\n lang: PropTypes.object,\r\n legs: PropTypes.array,\r\n stops: PropTypes.array,\r\n alternative: PropTypes.bool.isRequired,\r\n valid: PropTypes.bool.isRequired,\r\n description: PropTypes.string.isRequired,\r\n direction: PropTypes.number.isRequired\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n static defaultProps = {\r\n alternative: false,\r\n description: 'Innstilt avvik'\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n componentWillUnmount() {}\r\n\r\n onClick = () => {\r\n return;\r\n };\r\n\r\n onKeyDown = e => {\r\n var code = e.which;\r\n // 13 = Return, 32 = Space\r\n if (code === 13 || code === 32) {\r\n e.preventDefault();\r\n this.onClick();\r\n }\r\n };\r\n\r\n toggleStops = e => {\r\n let btn = e.target;\r\n if (!btn) {\r\n return;\r\n }\r\n if (!btn.classList.contains('toggle-list')) {\r\n btn = btn.parentNode;\r\n }\r\n const list = btn.parentNode.parentNode.nextSibling;\r\n if (!list) {\r\n return;\r\n }\r\n if (btn.classList.contains('visible')) {\r\n btn.classList.remove('visible');\r\n list.classList.remove('visible');\r\n } else {\r\n btn.classList.add('visible');\r\n list.classList.add('visible');\r\n }\r\n };\r\n\r\n getTimeType = isOSL => {\r\n const { direction } = this.props;\r\n if (isOSL) return direction === Direction.TO ? 'arrTime' : 'depTime';\r\n\r\n return direction === Direction.TO ? 'depTime' : 'arrTime';\r\n };\r\n\r\n // no deviations\r\n parseStops = inPast => {\r\n const { stops, legs, direction, lang } = this.props;\r\n if (!stops) {\r\n return [];\r\n }\r\n return stops.map((stop, i) => {\r\n let timeType = this.getTimeType(\r\n direction == Direction.TO ? i == stops.length - 1 : i == 0\r\n );\r\n\r\n let track;\r\n let time = stop[timeType] ? moment(stop[timeType], 'HH:mm:ss') : null;\r\n\r\n if (i === 0) {\r\n track = legs[0].origin.rtTrack;\r\n } else if (i === stops.length - 1) {\r\n track = legs[0].destination.rtTrack;\r\n }\r\n\r\n let svg = '';\r\n // inject plane icon\r\n if (i === (direction === Direction.TO ? stops.length - 1 : 0)) {\r\n svg = ;\r\n }\r\n\r\n let prevStopCancelled = i > 0 ? stops[i - 1].cancelled : false;\r\n let nextStopCancelled =\r\n i <= stops.length - 2 ? stops[i + 1].cancelled : false;\r\n let classNames = {\r\n first: i === 0,\r\n last: i === stops.length - 1,\r\n 'to-last': i === stops.length - 2,\r\n cancelled: !!stop.cancelled,\r\n 'to-cancelled': nextStopCancelled,\r\n 'from-cancelled': prevStopCancelled,\r\n 'in-past': inPast\r\n };\r\n return (\r\n
    \r\n
    {time ? time.format('HH:mm') : ''}
    \r\n
    \r\n {svg}\r\n \r\n
    \r\n
    \r\n {stop.name}\r\n {typeof track !== 'undefined' && track > 0 && (\r\n \r\n {lang.track} {track}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n });\r\n };\r\n\r\n // deviations - different dataset from api\r\n parseLegs = () => {\r\n const { lang, direction, legs } = this.props;\r\n\r\n const getCategory = leg =>\r\n leg ? (leg.type === 'WALK' ? 'WALK' : leg.category) : null;\r\n let result = [];\r\n\r\n const show = type => {\r\n switch (type) {\r\n case 'TOG': // flytog\r\n case 'WALK': // gange\r\n case 'Lt': // lokal tog\r\n case 'IC': // intercity tog\r\n case 'BUS': // buss\r\n case 'TAX': // taxi\r\n case 'U': // t-bane\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n const templateStop = ({\r\n time,\r\n name,\r\n key,\r\n track,\r\n svg = null,\r\n cancelled = false,\r\n first = false,\r\n last = false\r\n }) => {\r\n let classNames = {\r\n cancelled: cancelled,\r\n first: first,\r\n last: last\r\n };\r\n return (\r\n
    \r\n
    {time ? time.format('HH:mm') : ''}
    \r\n
    \r\n {svg}\r\n \r\n
    \r\n
    \r\n {name}\r\n {typeof track !== 'undefined' && track > 0 && (\r\n \r\n {lang.track} {track}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n let startIndex = 1;\r\n for (let i = startIndex; i < legs.length; i++) {\r\n let _svgStart = '';\r\n let _svgEnd = '';\r\n let prevLeg = legs[i - 1];\r\n let leg = legs[i];\r\n let nextLeg = legs[i + 1];\r\n\r\n // inject plane icon\r\n if (direction === Direction.TO && i === legs.length - 1) {\r\n _svgEnd = ;\r\n } else if (direction === Direction.FROM && i === startIndex) {\r\n _svgStart = ;\r\n }\r\n\r\n let type = getCategory(leg);\r\n let prevType = getCategory(prevLeg);\r\n let nextType = getCategory(nextLeg);\r\n\r\n // can switch from TOG to Lt or IC and all other variations, but not TOG to BUS etc.\r\n // on the other hand, BUS to BUS needs to be validated properly, as do TAXI to TAXI and U to U\r\n let types = [null, 'TOG', 'Lt', 'IC'];\r\n\r\n let switchTransport = false;\r\n if (!!leg && !!nextLeg) {\r\n const sameStation = leg.destination.name === nextLeg.origin.name;\r\n const differentTransport = leg.name !== nextLeg.name;\r\n const validTransports =\r\n (types.indexOf(type) > -1 && types.indexOf(nextType) > -1) ||\r\n type === nextType;\r\n switchTransport = validTransports && sameStation && differentTransport;\r\n }\r\n\r\n let originTime = timeHelper.parseMoment(leg.origin.date, leg.origin.time);\r\n\r\n let destinationTime = timeHelper.parseMoment(\r\n leg.destination.date,\r\n leg.destination.time\r\n );\r\n\r\n const template = (content, _showOrigin, _showDestination) => {\r\n const first = i === startIndex,\r\n last = i === legs.length - 1;\r\n const showOrigin =\r\n typeof _showOrigin === 'undefined' ? show(prevType) : _showOrigin,\r\n showDestination =\r\n switchTransport ||\r\n (typeof _showOrigin === 'undefined'\r\n ? show(nextType)\r\n : _showDestination);\r\n\r\n return (\r\n \r\n {showOrigin\r\n ? templateStop({\r\n time: originTime,\r\n name: leg.origin.name,\r\n track: leg.origin.rtTrack,\r\n first: first,\r\n svg: _svgStart\r\n })\r\n : null}\r\n {/* output content, or run if it's a function */}\r\n {typeof content === 'function'\r\n ? content(showOrigin, showDestination)\r\n : content}\r\n {showDestination\r\n ? templateStop({\r\n time: destinationTime,\r\n name: leg.destination.name,\r\n track: leg.destination.rtTrack,\r\n last: last,\r\n svg: _svgEnd\r\n })\r\n : null}\r\n
    \r\n );\r\n };\r\n let section;\r\n const description = leg.text;\r\n const switchDescription = leg.switchText || lang.changeTransport;\r\n const mapUrl =\r\n 'https://www.google.com/maps/?q=' +\r\n leg.destination.lat +\r\n ',' +\r\n leg.destination.lon;\r\n const stops = leg.stops ? leg.stops : [];\r\n\r\n switch (type) {\r\n case 'WALK': // gange\r\n section = template((showOrigin, showDestination) => {\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    {description}
    \r\n \r\n
    \r\n
    \r\n );\r\n });\r\n break;\r\n case 'TOG': // flytog (tog for tog)\r\n case 'Lt': // lokal tog\r\n case 'IC': // intercity tog\r\n case 'BUS': // buss\r\n case 'TAX': // taxi\r\n case 'U': // t-bane\r\n section = template(\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {description}
    \r\n {stops.length > 2 ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n {stops.length > 2 ? (\r\n
    \r\n {stops\r\n .filter(\r\n (item, index) => index > 0 && index < stops.length - 1\r\n )\r\n .map((item, index) => {\r\n const timeType = this.getTimeType(\r\n direction == Direction.TO\r\n ? index == stops.length - 1\r\n : index == 0\r\n );\r\n return templateStop({\r\n time: item[timeType]\r\n ? moment(item[timeType], 'HH:mm:ss')\r\n : null,\r\n name: item.name,\r\n key: i + '_' + index\r\n });\r\n })}\r\n
    \r\n ) : null}\r\n
    ,\r\n true,\r\n true\r\n );\r\n break;\r\n default:\r\n section = template(\r\n stops.length > 2 ? (\r\n
    \r\n {stops\r\n .filter(\r\n (item, index) => index > 0 && index < stops.length - 1\r\n )\r\n .map((item, index) => {\r\n const timeType = this.getTimeType(\r\n direction == Direction.TO\r\n ? index == stops.length - 1\r\n : index == 0\r\n );\r\n return templateStop({\r\n time: item[timeType]\r\n ? moment(item[timeType], 'HH:mm:ss')\r\n : null,\r\n name: item.name,\r\n key: i + '_' + index\r\n });\r\n })}\r\n
    \r\n ) : null\r\n );\r\n break;\r\n }\r\n\r\n result.push(section);\r\n\r\n if (switchTransport) {\r\n result.push(\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    {switchDescription}
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n render() {\r\n const {\r\n dateTime,\r\n locale,\r\n valid,\r\n alternative,\r\n direction,\r\n description\r\n } = this.props;\r\n // TODO: think about implementaation of DateFormatsProvider like dateFormats.forLocale() {date, shortDate, time... }\r\n const dateFormat = locale.startsWith('en')\r\n ? shortDateFormatEn\r\n : shortDateFormat;\r\n const date = moment(dateTime, fullDate).format(dateFormat);\r\n\r\n const time = moment(dateTime, fullDate).format(fullDate);\r\n const currentTime = moment().format(fullDate);\r\n\r\n let result =
    ;\r\n if (!alternative) {\r\n result = this.parseStops(time < currentTime);\r\n } else if (alternative) {\r\n result = this.parseLegs();\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n {date}\r\n
    \r\n
    \r\n {description ? (\r\n
    \r\n {description}\r\n
    \r\n ) : null}\r\n \r\n {result}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default TravelResultDetails;\r\n","function NoDataError(message) {\r\n this.name = 'NoDataError';\r\n this.message = message || 'Default Message';\r\n this.stack = new Error().stack;\r\n}\r\nNoDataError.prototype = Object.create(Error.prototype);\r\nNoDataError.prototype.constructor = NoDataError;\r\n\r\nexport default NoDataError;\r\n","import { fullDate } from 'components/travel-planner/constants';\r\n\r\nimport NoDataError from 'utils/no-data-error';\r\nimport parseTrip from './parse-trip';\r\nimport moment from 'moment-timezone';\r\n\r\nexport default (\r\n url,\r\n originId,\r\n destId,\r\n date,\r\n time,\r\n lang,\r\n from,\r\n to,\r\n currentTrips,\r\n shouldMerge\r\n) => {\r\n const fetchUrl = `${url}?originId=${originId}&destId=${destId}&date=${date}&time=${time}&lang=${lang}`;\r\n\r\n return fetch(fetchUrl)\r\n .then(response => {\r\n if (\r\n response.headers.get('content-type').indexOf('application/json') < 0\r\n ) {\r\n throw new TypeError('not json');\r\n }\r\n\r\n return response.json();\r\n })\r\n .then(json => {\r\n if (json.log) {\r\n // eslint-disable-next-line no-console\r\n console.log('Fetch trips log:', json.log);\r\n }\r\n if (json.error) {\r\n throw new NoDataError(json.error);\r\n }\r\n\r\n let newTrips = json.trips.map(parseTrip(fullDate, from, to));\r\n\r\n const tripExists = item => {\r\n for (var i = 0; i < currentTrips.length; i++) {\r\n if (currentTrips[i].id == item.id) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n return {\r\n newTrips: shouldMerge\r\n ? [\r\n ...currentTrips,\r\n ...newTrips.filter(t => !tripExists(t))\r\n ].sort((a, b) =>\r\n moment(a.dateTime, fullDate).diff(\r\n moment(b.dateTime, fullDate),\r\n 'minutes'\r\n )\r\n )\r\n : newTrips,\r\n json\r\n };\r\n });\r\n};\r\n","import moment from 'moment';\r\n\r\n/**\r\n * Converts api data\r\n * Generated an id for each trip if none are specified\r\n */\r\nexport default (fullDate, from, to) => trip => {\r\n const format = date => date.format(fullDate);\r\n\r\n const [firstLeg] = trip.legs;\r\n const { origin, destination } = firstLeg;\r\n\r\n const time = moment(origin.time, 'H:m:s');\r\n const dateTime = moment(origin.date)\r\n .hour(time.hour())\r\n .minute(time.minute());\r\n\r\n const arrivalTime = moment(destination.time, 'H:m:s');\r\n const arrivalDateTime = moment(destination.date)\r\n .hour(arrivalTime.hour())\r\n .minute(arrivalTime.minute());\r\n\r\n const id =\r\n firstLeg.tripId ||\r\n `${format(dateTime)}_${from}_${to}_${format(arrivalDateTime)}`;\r\n\r\n // get validity (deviations / cancelled)\r\n const valid = typeof trip.valid === 'undefined' ? true : trip.valid;\r\n const alternative =\r\n typeof trip.alternative === 'undefined' ? false : trip.alternative;\r\n\r\n return {\r\n id: id,\r\n key: 'k' + id,\r\n dateTime: format(dateTime),\r\n date: origin.date,\r\n departure: origin.time,\r\n track: origin.rtTrack,\r\n arrival: destination.time,\r\n trackArrival: destination.rtTrack,\r\n valid,\r\n alternative,\r\n description: trip.description || '',\r\n legs: trip.legs,\r\n stops: firstLeg.stops\r\n };\r\n};\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\nimport cn from 'classnames';\r\n\r\nimport IconCal from 'assets/icons/FT__kal_small.svg';\r\nimport BottomBar from './bottom-bar';\r\nimport TravelResult from 'components/travel-result/travel-result';\r\nimport TravelResultDetails from 'components/travel-result-details/travel-result-details';\r\n\r\nimport { computeDisplayDate } from './compute-display-date';\r\nimport fetchTrips from './fetch-trips';\r\nimport NoDataError from 'utils/no-data-error';\r\nimport parseMouseWheelEvent from 'utils/parse-mouse-wheel-event';\r\nimport { windowIsDefined } from 'components/travel-planner/constants';\r\nimport Spinner from 'components/spinner';\r\n\r\nimport {\r\n documentIsDefined,\r\n isLocalHost,\r\n fullDate,\r\n dateFormat,\r\n timeFormat,\r\n View\r\n} from 'components/travel-planner/constants';\r\n\r\nclass TravelResults extends Component {\r\n static propTypes = {\r\n setViewingMode: PropTypes.func.isRequired,\r\n lang: PropTypes.object.isRequired,\r\n locale: PropTypes.string,\r\n date: PropTypes.object.isRequired,\r\n viewMode: PropTypes.number.isRequired,\r\n handleError: PropTypes.func.isRequired,\r\n exception: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n maxCountdown: PropTypes.number,\r\n from: PropTypes.string,\r\n showDatePicker: PropTypes.func.isRequired,\r\n pastTripsAllowed: PropTypes.bool.isRequired,\r\n to: PropTypes.string,\r\n trip: PropTypes.object,\r\n direction: PropTypes.number\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n static defaultProps = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.dom = null;\r\n this.resultsView = null;\r\n this.resultsViewContainer = null;\r\n\r\n let now = moment();\r\n this.time = props.date.hour(now.hour()).minute(now.minute());\r\n\r\n this.state = {\r\n diffTime: 0,\r\n selected: -1,\r\n items: [],\r\n tick: 0,\r\n isLoading: false,\r\n isLoadingPastResults: false,\r\n error: props.exception ? true : false,\r\n fetchTripsAsyncMarker: null,\r\n lastSearch: {\r\n from: null,\r\n to: null,\r\n date: null\r\n }\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.getTrips();\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('scroll', this.onScroll, false);\r\n window.addEventListener('resize', this.onResize, false);\r\n\r\n this.scrollTo(this.props);\r\n\r\n this.timer = setInterval(() => {\r\n this.setState(state => ({ tick: state.tick + 1 }));\r\n }, 1000);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n (prevProps.viewMode !== this.props.viewMode &&\r\n (this.props.viewMode === View.List ||\r\n this.props.viewMode === View.Details)) ||\r\n this.props.date.format(dateFormat) !== prevProps.date.format(dateFormat)\r\n ) {\r\n this.scrollTo(this.props);\r\n } else if (\r\n this.props.viewMode === View.Single &&\r\n prevProps.viewMode !== View.Single\r\n ) {\r\n this.onResize();\r\n }\r\n this.onScroll();\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('scroll', this.onScroll);\r\n window.removeEventListener('resize', this.onResize);\r\n clearInterval(this.timer);\r\n }\r\n\r\n getLanguage() {\r\n if (typeof window === 'undefined')\r\n return this.props.locale.startsWith('en') ? 'en' : 'no';\r\n var path = window.location.pathname;\r\n return path === '/en' || path.startsWith('/en/') ? 'en' : 'no';\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n // if there's an exception - reset time\r\n if (nextProps.exception) {\r\n let now = moment();\r\n this.time = nextProps.date.hour(now.hour()).minute(now.minute());\r\n return;\r\n }\r\n\r\n // get trips if the relevant props differ\r\n if (\r\n this.props.from !== nextProps.from ||\r\n this.props.to !== nextProps.to ||\r\n this.props.date.format(dateFormat) !== nextProps.date.format(dateFormat)\r\n ) {\r\n // new props differ\r\n this.fetchTrips(nextProps.from, nextProps.to, nextProps.date, true);\r\n }\r\n\r\n if (\r\n nextProps.viewMode === View.List ||\r\n nextProps.viewMode === View.Details\r\n ) {\r\n if (\r\n nextProps.date.format(dateFormat) !==\r\n this.props.date.format(dateFormat) ||\r\n nextProps.viewMode !== this.props.viewMode\r\n ) {\r\n this.scrollTo(nextProps);\r\n }\r\n }\r\n }\r\n\r\n scrollTo(props) {\r\n if (this.state.selected === -1) {\r\n this.scrollToX(props, '.travel-result-current');\r\n } else {\r\n this.scrollToX(props, '.travel-result-selected');\r\n }\r\n }\r\n\r\n scrollToX(props, className) {\r\n const list = this.resultsView;\r\n const current = documentIsDefined && list && list.querySelector(className);\r\n\r\n if (!current) return;\r\n\r\n // focus first - if not it will overshoot the scroll\r\n if (!props.datePickerOpen && document.activeElement !== current) {\r\n current.focus();\r\n }\r\n\r\n // Magic number to account for date label\r\n list.scrollTop = current.offsetTop ? current.offsetTop - 42 : 0;\r\n }\r\n\r\n getTrips = (prev = false) => {\r\n if (this.state.isLoading) {\r\n return;\r\n }\r\n\r\n if (prev) {\r\n const prevTripsLoaded = () =>\r\n !!this.state.items.find(x =>\r\n moment()\r\n .add(-1, 'hours')\r\n .isAfter(moment(x.dateTime, fullDate))\r\n );\r\n const todaysTripsPresented = () =>\r\n !!this.state.items.find(x =>\r\n moment().isSame(moment(x.dateTime, fullDate), 'day')\r\n );\r\n if (\r\n !this.props.pastTripsAllowed ||\r\n prevTripsLoaded() ||\r\n !todaysTripsPresented()\r\n ) {\r\n return; // skip loading previous trips\r\n }\r\n }\r\n\r\n this.fetchTrips(\r\n this.props.from,\r\n this.props.to,\r\n !prev ? this.time : moment().add(-1, 'days'),\r\n false,\r\n prev\r\n );\r\n };\r\n\r\n // Calculates difference between client and server time to display the correct countdown\r\n parseTime = json => {\r\n if (json.serverTime) {\r\n let serverTime = moment(json.serverTime);\r\n let now = moment();\r\n let diff = serverTime.diff(now, 'seconds');\r\n return { serverTime: serverTime, clientTime: now, diffTime: diff };\r\n }\r\n return {};\r\n };\r\n\r\n // 'set' is set to true from TravelResult's onClick function\r\n selectTrip = (id, items, set) => {\r\n const _items = items || this.state.items;\r\n let trip = _items.filter(o => {\r\n if (o.id === id) {\r\n return true;\r\n }\r\n });\r\n if (trip.length > 0) {\r\n trip = trip[0];\r\n } else {\r\n return;\r\n }\r\n\r\n let selected = { selected: id, error: false };\r\n if (set) {\r\n this.props.setViewingMode(View.Details);\r\n this.setState(selected);\r\n }\r\n return selected;\r\n };\r\n\r\n fetchTrips = (originId, destId, date, clear, prev) => {\r\n if (originId === null || destId === null) {\r\n return;\r\n }\r\n\r\n let today = moment(),\r\n sameDate = !clear,\r\n newState = { error: false, isLoading: true, isLoadingPastResults: prev };\r\n\r\n let language = this.getLanguage();\r\n\r\n // override data\r\n if (clear) {\r\n // reset time to prop\r\n date = moment(date)\r\n .hour(0)\r\n .minute(0);\r\n\r\n // is today?\r\n if (date.format(dateFormat) === today.format(dateFormat)) {\r\n date.hour(today.hour()).minute(today.minute());\r\n }\r\n\r\n this.time = date;\r\n // reset trip selection\r\n newState = { ...newState, selected: -1, items: [] };\r\n }\r\n\r\n this.setState(newState);\r\n\r\n const url = isLocalHost\r\n ? 'http://localhost:3000/getTrip'\r\n : '/api/travelplanner/trip';\r\n\r\n if (!originId || !destId || !windowIsDefined) {\r\n return;\r\n }\r\n\r\n const fetchTripsAsyncMarker = new Object();\r\n this.setState({ fetchTripsAsyncMarker: fetchTripsAsyncMarker });\r\n\r\n fetchTrips(\r\n url,\r\n originId,\r\n destId,\r\n date.format(dateFormat),\r\n date.format(timeFormat),\r\n language,\r\n this.props.from,\r\n this.props.to,\r\n this.state.items,\r\n sameDate\r\n )\r\n .then(({ newTrips, json }) => {\r\n if (this.state.fetchTripsAsyncMarker !== fetchTripsAsyncMarker) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n ...this.getNewTripsState(originId, destId, newTrips),\r\n ...this.parseTime(json)\r\n },\r\n () => {\r\n if (today > date) {\r\n this.scrollTo(this.props);\r\n }\r\n }\r\n );\r\n })\r\n .catch(e => {\r\n if (this.state.fetchTripsAsyncMarker !== fetchTripsAsyncMarker) {\r\n return;\r\n }\r\n this.setState({\r\n error: true,\r\n isLoading: false,\r\n isLoadingPastResults: false\r\n });\r\n if (e instanceof NoDataError) {\r\n this.props.handleError(e.message);\r\n }\r\n if (\r\n this.state.items.length === 0 &&\r\n this.props.viewMode === View.List\r\n ) {\r\n this.props.setViewingMode(View.Single);\r\n }\r\n });\r\n };\r\n\r\n getNewTripsState = (originId, destId, trips) => {\r\n let time = moment(this.time);\r\n\r\n // set the updated time to search from\r\n this.time = moment(trips[trips.length - 1].dateTime, fullDate).add(\r\n 1,\r\n 'minutes'\r\n );\r\n\r\n return {\r\n error: false,\r\n items: trips,\r\n isLoading: false,\r\n isLoadingPastResults: false,\r\n lastSearch: { date: time, from: originId, to: destId }\r\n };\r\n };\r\n\r\n // Calculates which trip to display as next departure\r\n getNextTrip = () => {\r\n const { items, diffTime, selected } = this.state;\r\n const time = Date.now() / 1000 - diffTime / 1000;\r\n\r\n // return selected trip if any\r\n if (selected !== -1) {\r\n let trips = items.filter(o => o.id === selected);\r\n if (trips.length === 1) {\r\n return trips[0];\r\n }\r\n }\r\n\r\n // extract first trip that has a positive time left\r\n let trip = (() => {\r\n let result = null;\r\n items.some(o =>\r\n time - moment(o.dateTime, fullDate).unix() <= 0\r\n ? ((result = o), true)\r\n : false\r\n );\r\n return result;\r\n })();\r\n\r\n // last ditch attempt to get the first valid trip\r\n if (trip === null) {\r\n trip = items.filter(o => o.valid)[0];\r\n }\r\n return trip;\r\n };\r\n\r\n getDateLabel = trips => {\r\n const date = !trips.length\r\n ? this.props.date\r\n : moment(trips[0].dateTime, fullDate);\r\n\r\n return computeDisplayDate(date, this.props.lang, this.props.locale);\r\n };\r\n\r\n goToView = view => () => {\r\n this.props.setViewingMode(view);\r\n };\r\n\r\n onResultsScroll = () => {\r\n this.onListScroll({ target: this.resultsView });\r\n\r\n var lastScrollTop = 0;\r\n var dom = this.resultsView;\r\n var st = dom.scrollTop;\r\n\r\n if (st <= lastScrollTop && st <= 41) {\r\n this.getTrips(true);\r\n }\r\n\r\n lastScrollTop = st <= 0 ? 0 : st;\r\n };\r\n\r\n onListScroll = e => {\r\n if (this.props.viewMode === View.Details) {\r\n return;\r\n }\r\n\r\n if (\r\n !e.target ||\r\n e.target.className !== 'travel-results' ||\r\n this.dom === null ||\r\n this.resultsViewContainer === null\r\n ) {\r\n return false;\r\n }\r\n // lazy load if on bottom in listview\r\n if (!this.state.error) {\r\n if (this.props.viewMode === View.List) {\r\n if (\r\n e.target.scrollTop + e.target.offsetHeight >=\r\n e.target.scrollHeight - 200\r\n ) {\r\n this.getTrips();\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n handleResultsWheel = e => {\r\n let dom = this.resultsView;\r\n let normalized = parseMouseWheelEvent(e.nativeEvent);\r\n if (normalized.spinY < 0 && dom.scrollTop == 0) {\r\n this.getTrips(true);\r\n }\r\n\r\n dom.scrollTop = Math.min(\r\n dom.scrollHeight - dom.offsetHeight,\r\n Math.max(0, dom.scrollTop + normalized.pixelY)\r\n );\r\n\r\n return false;\r\n };\r\n\r\n onScroll = () => {\r\n // pass along fake event target\r\n this.onListScroll({ target: this.resultsView });\r\n };\r\n\r\n // resize handler - resizes sticky labels when window is resized\r\n onResize = () => {\r\n if (this.resultsView) {\r\n this.onScroll({ target: this.resultsView.parentNode });\r\n }\r\n };\r\n\r\n onBottomBarInteract = () => {\r\n const { viewMode } = this.props;\r\n if (this.state.error) {\r\n this.getTrips();\r\n } else {\r\n this.goToView(viewMode === View.List ? View.Single : View.List)();\r\n }\r\n };\r\n\r\n onKeyDownDatepicker = e => {\r\n if (e.which === 13) {\r\n this.props.showDatePicker();\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n lang,\r\n locale,\r\n direction,\r\n from,\r\n to,\r\n errorMessage,\r\n exception,\r\n maxCountdown,\r\n viewMode\r\n } = this.props;\r\n\r\n const {\r\n error,\r\n isLoading,\r\n isLoadingPastResults,\r\n items,\r\n diffTime,\r\n selected\r\n } = this.state;\r\n\r\n const isLoadingForReal =\r\n (isLoading && !isLoadingPastResults) || from === null || to === null;\r\n\r\n const bottomBar = (\r\n \r\n );\r\n\r\n let trips = [...items];\r\n\r\n // filter out selected trip - if any\r\n const showTrip = this.getNextTrip();\r\n if (\r\n showTrip &&\r\n (viewMode === View.Single || viewMode === View.Details) &&\r\n items.length\r\n ) {\r\n trips = [showTrip];\r\n }\r\n\r\n // NOTE: Creates object with date strings as keys and lists of trips as arrays.\r\n const tripsGroupedByDay = trips.reduce((accum, trip) => {\r\n const day = accum[trip.date] || [];\r\n return Object.assign(accum, { [trip.date]: day.concat(trip) });\r\n }, {});\r\n\r\n return (\r\n (this.dom = node)}\r\n className={cn('travel-results-block-container', {\r\n 'view-list': viewMode === View.List,\r\n 'view-single': viewMode === View.Single,\r\n 'view-details': viewMode === View.Details\r\n })}\r\n >\r\n {// hide list if there are no trips or an error\r\n (!error || (error && trips.length > 0)) && (\r\n {\r\n this.resultsViewContainer = i;\r\n }}\r\n >\r\n {viewMode !== View.Details ? (\r\n {\r\n this.resultsView = i;\r\n }}\r\n selected={selected}\r\n onScroll={this.onResultsScroll}\r\n onWheel={this.handleResultsWheel}\r\n >\r\n {Object.entries(tripsGroupedByDay).map(([date, trips]) => (\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {' '}\r\n {this.getDateLabel(trips)}\r\n
    \r\n
    \r\n
    \r\n
      \r\n {trips.map(item => (\r\n \r\n {viewMode === View.Single ? bottomBar : ''}\r\n \r\n ))}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n ) : null}\r\n\r\n {showTrip && viewMode === View.Details && (\r\n \r\n )}\r\n
    \r\n )}\r\n\r\n {(error || exception) && (\r\n
    \r\n {errorMessage}\r\n
    \r\n )}\r\n\r\n {isLoadingForReal || viewMode !== View.Single ? bottomBar : []}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TravelResults;\r\n","import moment from 'moment';\r\nimport 'moment/locale/nb';\r\n\r\nconst getDateWithSuffix = date => {\r\n let j = date % 10,\r\n k = date % 100;\r\n if (j == 1 && k != 11) {\r\n return date + 'st';\r\n }\r\n if (j == 2 && k != 12) {\r\n return date + 'nd';\r\n }\r\n if (j == 3 && k != 13) {\r\n return date + 'rd';\r\n }\r\n return date + 'th';\r\n};\r\n\r\nexport const computeDisplayDate = (date, lang, locale) => {\r\n const dateFormat = 'YYYY-MM-DD';\r\n let weekday = [\r\n lang.sunday,\r\n lang.monday,\r\n lang.tuesday,\r\n lang.wednesday,\r\n lang.thursday,\r\n lang.friday,\r\n lang.saturday\r\n ];\r\n let months = [\r\n lang.january,\r\n lang.february,\r\n lang.march,\r\n lang.april,\r\n lang.may,\r\n lang.june,\r\n lang.july,\r\n lang.august,\r\n lang.september,\r\n lang.october,\r\n lang.november,\r\n lang.december\r\n ];\r\n let displayDate = [];\r\n\r\n let isToday = day => day.format(dateFormat) === moment().format(dateFormat);\r\n let isTomorrow = day =>\r\n day.format(dateFormat) ===\r\n moment()\r\n .add(1, 'day')\r\n .format(dateFormat);\r\n let getWeekday = day => weekday[day.day()];\r\n\r\n if (isToday(date)) {\r\n displayDate.push(lang.today);\r\n } else if (isTomorrow(date)) {\r\n displayDate.push(lang.tomorrow);\r\n } else {\r\n displayDate.push(getWeekday(date));\r\n }\r\n\r\n if (locale === 'en-us' || locale === 'en') {\r\n displayDate.push(months[date.month()], getDateWithSuffix(date.date()));\r\n } else {\r\n displayDate.push(date.date() + '.', months[date.month()]);\r\n }\r\n\r\n return displayDate.join(' ');\r\n};\r\n","export default event => {\r\n var PIXEL_STEP = 10;\r\n var LINE_HEIGHT = 40;\r\n var PAGE_HEIGHT = 800;\r\n var sX = 0,\r\n sY = 0, // spinX, spinY\r\n pX = 0,\r\n pY = 0; // pixelX, pixelY\r\n\r\n // Legacy\r\n if ('detail' in event) {\r\n sY = event.detail;\r\n }\r\n if ('wheelDelta' in event) {\r\n sY = -event.wheelDelta / 120;\r\n }\r\n if ('wheelDeltaY' in event) {\r\n sY = -event.wheelDeltaY / 120;\r\n }\r\n if ('wheelDeltaX' in event) {\r\n sX = -event.wheelDeltaX / 120;\r\n }\r\n\r\n // side scrolling on FF with DOMMouseScroll\r\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\r\n sX = sY;\r\n sY = 0;\r\n }\r\n\r\n pX = sX * PIXEL_STEP;\r\n pY = sY * PIXEL_STEP;\r\n\r\n if ('deltaY' in event) {\r\n pY = event.deltaY;\r\n }\r\n if ('deltaX' in event) {\r\n pX = event.deltaX;\r\n }\r\n\r\n if ((pX || pY) && event.deltaMode) {\r\n if (event.deltaMode == 1) {\r\n // delta in LINE units\r\n pX *= LINE_HEIGHT;\r\n pY *= LINE_HEIGHT;\r\n } else {\r\n // delta in PAGE units\r\n pX *= PAGE_HEIGHT;\r\n pY *= PAGE_HEIGHT;\r\n }\r\n }\r\n\r\n // Fall-back if spin cannot be determined\r\n if (pX && !sX) {\r\n sX = pX < 1 ? -1 : 1;\r\n }\r\n if (pY && !sY) {\r\n sY = pY < 1 ? -1 : 1;\r\n }\r\n\r\n return {\r\n spinX: sX,\r\n spinY: sY,\r\n pixelX: pX,\r\n pixelY: pY\r\n };\r\n};\r\n","const modifyStopLocationData = o => {\r\n return { ...o, value: o.extId, label: o.name };\r\n};\r\n\r\nconst splitLocationObject = json => {\r\n const osl = [json.to].map(modifyStopLocationData)[0];\r\n const options = json.from.map(modifyStopLocationData);\r\n\r\n return { options: [...options, osl], OSL: osl };\r\n};\r\n\r\nconst setStopLocations = (stops, currentLocationId) => {\r\n let locationResult = stops.options[0];\r\n\r\n const osloAirportId = stops.OSL.extId;\r\n\r\n if (currentLocationId) {\r\n // find stops.options with matching value\r\n locationResult = stops.options.filter(o => {\r\n return (\r\n o.value === currentLocationId && currentLocationId !== osloAirportId\r\n );\r\n });\r\n locationResult = locationResult.length\r\n ? locationResult[0]\r\n : stops.options[0];\r\n }\r\n\r\n const locationState = {\r\n location: locationResult\r\n };\r\n\r\n return {\r\n ...locationState,\r\n stops: stops.options,\r\n OSL: stops.OSL,\r\n isLoadingStops: false\r\n };\r\n};\r\n\r\nexport { splitLocationObject, setStopLocations };\r\n","/* eslint-disable @creuna/prop-types-csharp/all */\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cn from 'classnames';\r\nimport querystring from 'querystring';\r\nimport PubSub from 'pubsub-js';\r\nimport moment from 'moment';\r\nimport 'moment/locale/nb';\r\n\r\nimport DatePickerWrapper from 'components/date-picker-wrapper/date-picker-wrapper';\r\nimport TravelInput from 'components/travel-input/travel-input';\r\nimport TravelPlannerImages from 'components/travel-planner-images/travel-planner-images';\r\nimport TravelResults from 'components/travel-results/travel-results';\r\n\r\nimport { splitLocationObject, setStopLocations } from './stop-location';\r\nimport travelPlannerStore from 'components/travel-planner/travel-planner-store';\r\n\r\nimport {\r\n Direction,\r\n windowIsDefined,\r\n documentIsDefined,\r\n isLocalHost,\r\n View\r\n} from 'components/travel-planner/constants';\r\nimport { Image, Lang } from 'components/travel-planner/models';\r\nclass TravelPlanner extends Component {\r\n static propTypes = {\r\n locale: PropTypes.string, // locale (used for displaing dates)\r\n lang: PropTypes.exact(Lang.propTypes).isRequired, // translation texts\r\n\r\n shopLink: PropTypes.string, // link to shop\r\n\r\n date: PropTypes.string, // optional date. defaults to today\r\n pastTripsAllowed: PropTypes.bool, // allows loading tips in the past\r\n location: PropTypes.string, // extId\r\n to: PropTypes.bool, // to OSL or from OSL\r\n\r\n stops: PropTypes.object, // prefetched api call GetStopLocations\r\n\r\n exception: PropTypes.string, // if HAFAS fails\r\n errorMessage: PropTypes.string, // if HAFAS fails\r\n\r\n maxCountdown: PropTypes.number, // max minutes into future to apply countdown to\r\n\r\n airportImage: PropTypes.exact(Image.propTypes),\r\n trainImage: PropTypes.exact(Image.propTypes)\r\n };\r\n\r\n static propTypesMeta = 'exclude';\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.list = null;\r\n this.dom = null;\r\n\r\n if (props.locale === 'no-nb') {\r\n moment.locale('nb');\r\n } else {\r\n moment.locale('en');\r\n }\r\n\r\n this.state = {\r\n /* main state */\r\n alert: false, // toggles background on destination input row\r\n viewMode: View.Single,\r\n errorMessage: props.errorMessage,\r\n fetchDataError: false,\r\n warning: null,\r\n isActive: false,\r\n\r\n /* date picker state */\r\n datePickerOpen: false, // toggles datepicker inline view\r\n date: props.date ? moment(props.date) : moment(), // the current date,\r\n maxDate: moment().add(90, 'days'),\r\n datePickerIsShowingLastMonth: false,\r\n\r\n /* input state */\r\n OSL: props.stops.to,\r\n stops: [],\r\n location:\r\n props.stops.from.find(stop => stop.extId === this.props.location) || {},\r\n direction: this.props.to === false ? Direction.FROM : Direction.TO, // defaulting to TO\r\n isLoadingStops: true\r\n };\r\n this.setBodyClass();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchWarning();\r\n this.fetchMaxDate();\r\n var storedData = travelPlannerStore.getData({\r\n defaultLocation: this.props.location,\r\n defaultDirection: this.props.to\r\n });\r\n\r\n if (this.props.stops) {\r\n this.setState({\r\n ...setStopLocations(\r\n splitLocationObject(this.props.stops),\r\n storedData.location\r\n )\r\n });\r\n }\r\n\r\n const mode = this.getModeFromHash();\r\n this.setState(\r\n {\r\n viewMode: mode,\r\n isActive: mode != View.Single,\r\n direction: storedData.direction ? Direction.TO : Direction.FROM\r\n },\r\n () => this.setBodyClass()\r\n );\r\n\r\n window.addEventListener('hashchange', this.hashChange, false);\r\n // force rerender as long as we are in single view\r\n this.interval = window.setInterval(() => {\r\n if (this.state.viewMode === View.Single) this.setState(this.state);\r\n }, 10000);\r\n\r\n PubSub.subscribe('buyTicketsButtonAdded', () => {\r\n this.publishShopLink(this.getShopLink());\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('hashchange', this.hashChange, false);\r\n clearInterval(this.interval);\r\n }\r\n\r\n getLanguage() {\r\n if (typeof window === 'undefined')\r\n return this.props.locale.startsWith('en') ? 'en' : 'no';\r\n var path = window.location.pathname;\r\n return path === '/en' || path.startsWith('/en/') ? 'en' : 'no';\r\n }\r\n\r\n fetchWarning() {\r\n const url = isLocalHost\r\n ? 'http://localhost:3000/planner-warning'\r\n : '/api/travelplanner/warning?lang=' + this.getLanguage();\r\n\r\n this.hideFetchDataError();\r\n fetch(url)\r\n .then(responce => {\r\n if (responce.ok) return responce.json();\r\n throw Error(responce.statusText);\r\n })\r\n .then(text => {\r\n this.setState({ warning: text });\r\n })\r\n .catch(() => this.showFetchDataError());\r\n }\r\n\r\n fetchMaxDate() {\r\n const url = isLocalHost\r\n ? 'http://localhost:3000/planner-max-date'\r\n : '/api/travelplanner/max-date';\r\n\r\n this.hideFetchDataError();\r\n fetch(url)\r\n .then(responce => {\r\n if (responce.ok) return responce.json();\r\n throw Error(responce.statusText);\r\n })\r\n .then(date => this.setState({ maxDate: moment(date) }))\r\n .catch(() => {\r\n this.setState({ maxDate: moment() });\r\n this.showFetchDataError();\r\n });\r\n }\r\n\r\n hideFetchDataError() {\r\n this.setState({ fetchDataError: false });\r\n }\r\n\r\n showFetchDataError() {\r\n this.setState({ fetchDataError: true }, () =>\r\n setTimeout(() => this.setState({ fetchDataError: false }), 10 * 1000)\r\n );\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n if (\r\n this.state.isActive !== nextState.isActive ||\r\n this.state.location !== nextState.location ||\r\n this.state.direction != nextState.direction\r\n ) {\r\n travelPlannerStore.setData({\r\n location: nextState.location ? nextState.location.extId : undefined,\r\n direction: nextState.direction == Direction.TO,\r\n skipQueryUpdate: !nextState.isActive\r\n });\r\n }\r\n\r\n return true;\r\n }\r\n\r\n hashChange = () => {\r\n this.setState({ viewMode: this.getModeFromHash(), isActive: true });\r\n this.setBodyClass();\r\n };\r\n\r\n setBodyClass = () => {\r\n const { viewMode } = this.state;\r\n const key = viewMode === View.Single ? 'single' : 'list';\r\n\r\n if (documentIsDefined) {\r\n document.body.classList.remove('travel-planner-list-view');\r\n document.body.classList.remove('travel-planner-single-view');\r\n document.body.classList.remove('travel-planner-details-view');\r\n document.body.classList.add('travel-planner-' + key + '-view');\r\n }\r\n };\r\n\r\n onSomeClickOrKeyUp = () => {\r\n if (!this.state.isActive) {\r\n this.setState({ isActive: true });\r\n }\r\n };\r\n\r\n onInputChange = e => {\r\n let newState = {\r\n location: e.station,\r\n datePickerOpen: false,\r\n direction: e.direction ? Direction.TO : Direction.FROM\r\n };\r\n\r\n let viewMode =\r\n this.state.viewMode === View.Details ? View.List : this.state.viewMode;\r\n\r\n this.setViewingMode(viewMode);\r\n this.setState(newState);\r\n };\r\n\r\n getFromId = () => {\r\n const { direction, location, OSL } = this.state;\r\n if (location === null || OSL === null) {\r\n return null;\r\n }\r\n return direction === Direction.TO ? location.extId : OSL.extId;\r\n };\r\n\r\n getToId = () => {\r\n const { direction, location, OSL } = this.state;\r\n if (location === null || OSL === null) {\r\n return null;\r\n }\r\n return direction === Direction.TO ? OSL.extId : location.extId;\r\n };\r\n\r\n setViewingMode = mode => {\r\n if (!windowIsDefined) {\r\n return;\r\n }\r\n window.location.hash =\r\n mode === 0 ? '' : Object.keys(View)[mode].toLowerCase();\r\n };\r\n\r\n getModeFromHash = () => {\r\n if (!windowIsDefined) {\r\n return View.Single; // default\r\n }\r\n switch (window.location.hash.substring(1)) {\r\n case '':\r\n case 'single':\r\n return View.Single;\r\n case 'list':\r\n return View.List;\r\n case 'details':\r\n return View.Details;\r\n }\r\n };\r\n\r\n getShopLink = () => {\r\n const { location, direction, OSL } = this.state;\r\n const { shopLink } = this.props;\r\n\r\n if (!shopLink || (typeof shopLink === 'string' && shopLink.length === 0)) {\r\n return false;\r\n }\r\n\r\n let query = {\r\n from: location.extId,\r\n to: OSL.extId\r\n };\r\n if (direction === Direction.FROM) {\r\n query = {\r\n from: OSL.extId,\r\n to: location.extId\r\n };\r\n }\r\n\r\n const link = shopLink + '?' + querystring.stringify(query);\r\n return link;\r\n };\r\n\r\n onDatePickerUpdate = ({ date, datePickerIsShowingLastMonth }) =>\r\n this.setState(state => ({\r\n date: date || state.date,\r\n datePickerIsShowingLastMonth\r\n }));\r\n\r\n hideDatePicker = () => this.setState({ datePickerOpen: false });\r\n\r\n showDatePicker = () => {\r\n this.setState({ datePickerOpen: true });\r\n this.setViewingMode(View.List);\r\n };\r\n\r\n publishShopLink = link => {\r\n // We need this to enable sharing between component with different roots\r\n if (windowIsDefined) {\r\n PubSub.publish('buyTicketsUrlUpdate', link);\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n locale,\r\n lang,\r\n exception,\r\n maxCountdown,\r\n airportImage,\r\n trainImage,\r\n pastTripsAllowed\r\n } = this.props;\r\n const {\r\n warning,\r\n fetchDataError,\r\n stops,\r\n date,\r\n maxDate,\r\n location,\r\n direction,\r\n OSL,\r\n isLoadingStops,\r\n errorMessage,\r\n datePickerOpen,\r\n datePickerIsShowingLastMonth,\r\n alert,\r\n viewMode\r\n } = this.state;\r\n\r\n let from = this.getFromId();\r\n let to = this.getToId();\r\n\r\n const shopLink = this.getShopLink();\r\n this.publishShopLink(shopLink);\r\n\r\n return (\r\n (this.dom = node)}\r\n onClick={this.outsideClick}\r\n onKeyDown={this.onKeyDownDatepicker}\r\n className={cn('travel-planner', {\r\n 'list-view': viewMode === View.List,\r\n 'single-view': viewMode === View.Single,\r\n 'details-view': viewMode === View.Details,\r\n 'date-picker': datePickerOpen\r\n })}\r\n >\r\n \r\n
    \r\n \r\n {warning &&
    {warning}
    }\r\n \r\n \r\n
    \r\n {\r\n this.list = i;\r\n }}\r\n setViewingMode={this.setViewingMode}\r\n showDatePicker={this.showDatePicker}\r\n pastTripsAllowed={pastTripsAllowed}\r\n datePickerOpen={datePickerOpen}\r\n locale={locale}\r\n viewMode={viewMode}\r\n direction={direction}\r\n exception={exception || fetchDataError}\r\n errorMessage={errorMessage}\r\n handleError={e => {\r\n this.setState({ errorMessage: e });\r\n }}\r\n setDate={this.handleChange}\r\n maxCountdown={maxCountdown}\r\n date={date}\r\n from={from}\r\n to={to}\r\n lang={lang}\r\n />\r\n
    \r\n
    \r\n {viewMode === View.Single && shopLink !== false && (\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TravelPlanner;\r\n","// NOTE: Do not edit this file. It is built by running `/codegen/components.js`\n// NOTE: The imported/exported components are exposed to the global scope\n\nimport Breadcrumbs from './components/breadcrumbs/breadcrumbs.jsx';\nimport BuyTicketsLink from './components/buy-tickets-link/buy-tickets-link.jsx';\nimport CartTotalAmount from './components/cart-total-amount/cart-total-amount.jsx';\nimport ChatButton from './components/chat-button/chat-button.jsx';\nimport ContactBlock from './components/contact-block/contact-block.jsx';\nimport ContentArea from './components/content-area/content-area.jsx';\nimport DatePickerWrapper from './components/date-picker-wrapper/date-picker-wrapper.jsx';\nimport EmergencyBlock from './components/emergency-block/emergency-block.jsx';\nimport ErrorBlock from './components/error-block/error-block.jsx';\nimport FactBlock from './components/fact-block/fact-block.jsx';\nimport FeatureBlock from './components/feature-block/feature-block.jsx';\nimport FileListBlock from './components/file-list-block/file-list-block.jsx';\nimport FooterBlock from './components/footer-block/footer-block.jsx';\nimport FooterLinkList from './components/footer-link-list/footer-link-list.jsx';\nimport FooterTextBlock from './components/footer-text-block/footer-text-block.jsx';\nimport GriddedBlock from './components/gridded-block/gridded-block.jsx';\nimport HighlightBlock from './components/highlight-block/highlight-block.jsx';\nimport HighlightBlocks from './components/highlight-blocks/highlight-blocks.jsx';\nimport Icon from './components/icon/icon.jsx';\nimport Image from './components/image/image.jsx';\nimport ImageGalleryBlock from './components/image-gallery-block/image-gallery-block.jsx';\nimport ImageListBlock from './components/image-list-block/image-list-block.jsx';\nimport LanguageSelector from './components/language-selector/language-selector.jsx';\nimport Link from './components/link/link.jsx';\nimport ListBlock from './components/list-block/list-block.jsx';\nimport ListBlockContainer from './components/list-block-container/list-block-container.jsx';\nimport Logo from './components/logo/logo.jsx';\nimport MenuItem from './components/menu-item/menu-item.jsx';\nimport MenuLink from './components/menu-link/menu-link.jsx';\nimport MenuSection from './components/menu-section/menu-section.jsx';\nimport Modal from './components/modal/modal.jsx';\nimport PageHeader from './components/page-header/page-header.jsx';\nimport PaymentSpinner from './components/payment-spinner/payment-spinner.jsx';\nimport PaymentSpinnerAnimation from './components/payment-spinner-animation/payment-spinner-animation.jsx';\nimport PictureBlock from './components/picture-block/picture-block.jsx';\nimport PriceOverviewBlock from './components/price-overview-block/price-overview-block.jsx';\nimport PromoBlock from './components/promo-block/promo-block.jsx';\nimport QuickSearch from './components/quick-search/quick-search.jsx';\nimport QuoteBlock from './components/quote-block/quote-block.jsx';\nimport RadioToggle from './components/radio-toggle/radio-toggle.jsx';\nimport ReactComponent from './components/react-component/react-component.jsx';\nimport ReactDatepicker from './components/react-datepicker/react-datepicker.jsx';\nimport ResponsiveImage from './components/responsive-image/responsive-image.jsx';\nimport RichTextBlock from './components/rich-text-block/rich-text-block.jsx';\nimport ServiceDisruptionsList from './components/service-disruptions-list/service-disruptions-list.jsx';\nimport ShopInfo from './components/shop-info/shop-info.jsx';\nimport ShoppingCart from './components/shopping-cart/shopping-cart.jsx';\nimport ShoppingCartForm from './components/shopping-cart-form/shopping-cart-form.jsx';\nimport ShoppingCartResponse from './components/shopping-cart-response/shopping-cart-response.jsx';\nimport ShoppingProductList from './components/shopping-product-list/shopping-product-list.jsx';\nimport SkipToMain from './components/skip-to-main/skip-to-main.jsx';\nimport Spinner from './components/spinner/spinner.jsx';\nimport StepperRow from './components/stepper-row/stepper-row.jsx';\nimport SuperMegaHeadingBlock from './components/super-mega-heading-block/super-mega-heading-block.jsx';\nimport ToggleMenuButton from './components/toggle-menu-button/toggle-menu-button.jsx';\nimport TravelInput from './components/travel-input/travel-input.jsx';\nimport TravelPlanner from './components/travel-planner/travel-planner.jsx';\nimport TravelPlannerImages from './components/travel-planner-images/travel-planner-images.jsx';\nimport TravelResult from './components/travel-result/travel-result.jsx';\nimport TravelResultDetails from './components/travel-result-details/travel-result-details.jsx';\nimport TravelResults from './components/travel-results/travel-results.jsx';\n\nexport {\n Breadcrumbs,\n BuyTicketsLink,\n CartTotalAmount,\n ChatButton,\n ContactBlock,\n ContentArea,\n DatePickerWrapper,\n EmergencyBlock,\n ErrorBlock,\n FactBlock,\n FeatureBlock,\n FileListBlock,\n FooterBlock,\n FooterLinkList,\n FooterTextBlock,\n GriddedBlock,\n HighlightBlock,\n HighlightBlocks,\n Icon,\n Image,\n ImageGalleryBlock,\n ImageListBlock,\n LanguageSelector,\n Link,\n ListBlock,\n ListBlockContainer,\n Logo,\n MenuItem,\n MenuLink,\n MenuSection,\n Modal,\n PageHeader,\n PaymentSpinner,\n PaymentSpinnerAnimation,\n PictureBlock,\n PriceOverviewBlock,\n PromoBlock,\n QuickSearch,\n QuoteBlock,\n RadioToggle,\n ReactComponent,\n ReactDatepicker,\n ResponsiveImage,\n RichTextBlock,\n ServiceDisruptionsList,\n ShopInfo,\n ShoppingCart,\n ShoppingCartForm,\n ShoppingCartResponse,\n ShoppingProductList,\n SkipToMain,\n Spinner,\n StepperRow,\n SuperMegaHeadingBlock,\n ToggleMenuButton,\n TravelInput,\n TravelPlanner,\n TravelPlannerImages,\n TravelResult,\n TravelResultDetails,\n TravelResults\n};\n","import isRunningOnClient from '@creuna/utils/is-running-on-client';\r\n\r\nif (isRunningOnClient) {\r\n const WOW = require('wowjs');\r\n\r\n new WOW.WOW({\r\n live: false\r\n }).init({\r\n mobile: false\r\n });\r\n}\r\n","import isRunningOnClient from '@creuna/utils/is-running-on-client';\r\nimport moment from 'moment-timezone';\r\n\r\nif (isRunningOnClient) {\r\n moment.tz.setDefault('Europe/Oslo');\r\n //console.log(moment.tz.names());\r\n}\r\n","import imageLoader from 'utils/image-loader';\r\n\r\nimageLoader.activate();\r\n","/*\r\n * Minimal classList shim for IE 9\r\n * By Devon Govett\r\n * MIT LICENSE\r\n */\r\n\r\n// NOTE: https://gist.github.com/devongovett/1381839\r\n\r\nfunction activate() {\r\n if (\r\n !('classList' in document.documentElement) &&\r\n Object.defineProperty &&\r\n typeof HTMLElement !== 'undefined'\r\n ) {\r\n Object.defineProperty(HTMLElement.prototype, 'classList', {\r\n get: function() {\r\n var self = this;\r\n function update(fn) {\r\n return function(value) {\r\n var classes = self.className.split(/\\s+/),\r\n index = classes.indexOf(value);\r\n\r\n fn(classes, index, value);\r\n self.className = classes.join(' ');\r\n };\r\n }\r\n\r\n var ret = {\r\n add: update(function(classes, index, value) {\r\n ~index || classes.push(value);\r\n }),\r\n\r\n remove: update(function(classes, index) {\r\n ~index && classes.splice(index, 1);\r\n }),\r\n\r\n toggle: update(function(classes, index, value) {\r\n ~index ? classes.splice(index, 1) : classes.push(value);\r\n }),\r\n\r\n contains: function(value) {\r\n return !!~self.className.split(/\\s+/).indexOf(value);\r\n },\r\n\r\n item: function(i) {\r\n return self.className.split(/\\s+/)[i] || null;\r\n }\r\n };\r\n\r\n Object.defineProperty(ret, 'length', {\r\n get: function() {\r\n return self.className.split(/\\s+/).length;\r\n }\r\n });\r\n\r\n return ret;\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default {\r\n activate\r\n};\r\n","import classListPolyfill from './polyfills/class-list';\r\n\r\n/* NOTE: https://www.html5rocks.com/en/mobile/touchandmouse/\r\n First, you have to be careful when designing more advanced touch interactions:\r\n when the user uses a mouse it will respond via a click event, but when the user\r\n touches the screen both touch and click events will occur.\r\n\r\n For a single click the order of events is:\r\n\r\n 1. touchstart\r\n 2. touchmove\r\n 3. touchend\r\n 4. mouseover\r\n 5. mousemove\r\n 6. mousedown\r\n 7. mouseup\r\n 8. click\r\n*/\r\n\r\nfunction activate() {\r\n let touchEndHappened = false;\r\n\r\n classListPolyfill.activate();\r\n\r\n const onMouseDown = () => {\r\n if (touchEndHappened) {\r\n return;\r\n }\r\n\r\n document.documentElement.classList.add('mouse-user');\r\n document.documentElement.classList.add('no-touchevents');\r\n document.documentElement.classList.remove('touchevents');\r\n };\r\n\r\n const onTouchEnd = () => {\r\n touchEndHappened = true;\r\n setTimeout(() => {\r\n touchEndHappened = false;\r\n }, 100);\r\n };\r\n\r\n const onTouchStart = () => {\r\n document.documentElement.classList.add('mouse-user');\r\n document.documentElement.classList.add('touchevents');\r\n document.documentElement.classList.remove('no-touchevents');\r\n };\r\n\r\n document.addEventListener('touchstart', onTouchStart);\r\n document.addEventListener('touchend', onTouchEnd);\r\n document.addEventListener('mousedown', onMouseDown);\r\n\r\n const keyCodeWhiteList = [9, 33, 34, 35, 36, 37, 38, 39, 40];\r\n\r\n document.addEventListener('keydown', e => {\r\n if (keyCodeWhiteList.indexOf(e.which) !== -1) {\r\n document.documentElement.classList.remove('mouse-user');\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n activate\r\n};\r\n","import inputDetection from './input-detection';\r\n\r\ninputDetection.activate();\r\n","'use strict';\r\n\r\nObject.defineProperty(exports, '__esModule', {\r\n value: true\r\n});\r\nexports.isSameDay = isSameDay;\r\nexports.isDayInRange = isDayInRange;\r\nexports.isDayDisabled = isDayDisabled;\r\nexports.allDaysDisabledBefore = allDaysDisabledBefore;\r\nexports.allDaysDisabledAfter = allDaysDisabledAfter;\r\nexports.getEffectiveMinDate = getEffectiveMinDate;\r\nexports.getEffectiveMaxDate = getEffectiveMaxDate;\r\n\r\nvar _moment = require('moment');\r\n\r\nvar _moment2 = _interopRequireDefault(_moment);\r\n\r\nfunction _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction isSameDay(moment1, moment2) {\r\n if (moment1 && moment2) {\r\n return moment1.isSame(moment2, 'day');\r\n } else {\r\n return !moment1 && !moment2;\r\n }\r\n}\r\n\r\nfunction isDayInRange(day, startDate, endDate) {\r\n var before = startDate\r\n .clone()\r\n .startOf('day')\r\n .subtract(1, 'seconds');\r\n var after = endDate\r\n .clone()\r\n .startOf('day')\r\n .add(1, 'seconds');\r\n return day\r\n .clone()\r\n .startOf('day')\r\n .isBetween(before, after);\r\n}\r\n\r\nfunction isDayDisabled(day) {\r\n var _ref =\r\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\r\n minDate = _ref.minDate,\r\n maxDate = _ref.maxDate,\r\n excludeDates = _ref.excludeDates,\r\n includeDates = _ref.includeDates,\r\n filterDate = _ref.filterDate;\r\n\r\n return (\r\n (minDate && day.isBefore(minDate, 'day')) ||\r\n (maxDate && day.isAfter(maxDate, 'day')) ||\r\n (excludeDates &&\r\n excludeDates.some(function(excludeDate) {\r\n return isSameDay(day, excludeDate);\r\n })) ||\r\n (includeDates &&\r\n !includeDates.some(function(includeDate) {\r\n return isSameDay(day, includeDate);\r\n })) ||\r\n (filterDate && !filterDate(day.clone())) ||\r\n false\r\n );\r\n}\r\n\r\nfunction allDaysDisabledBefore(day, unit) {\r\n var _ref2 =\r\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\r\n minDate = _ref2.minDate,\r\n includeDates = _ref2.includeDates;\r\n\r\n var dateBefore = day.clone().subtract(1, unit);\r\n return (\r\n (minDate && dateBefore.isBefore(minDate, unit)) ||\r\n (includeDates &&\r\n includeDates.every(function(includeDate) {\r\n return dateBefore.isBefore(includeDate, unit);\r\n })) ||\r\n false\r\n );\r\n}\r\n\r\nfunction allDaysDisabledAfter(day, unit) {\r\n var _ref3 =\r\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\r\n maxDate = _ref3.maxDate,\r\n includeDates = _ref3.includeDates;\r\n\r\n var dateAfter = day.clone().add(1, unit);\r\n return (\r\n (maxDate && dateAfter.isAfter(maxDate, unit)) ||\r\n (includeDates &&\r\n includeDates.every(function(includeDate) {\r\n return dateAfter.isAfter(includeDate, unit);\r\n })) ||\r\n false\r\n );\r\n}\r\n\r\nfunction getEffectiveMinDate(_ref4) {\r\n var minDate = _ref4.minDate,\r\n includeDates = _ref4.includeDates;\r\n\r\n if (includeDates && minDate) {\r\n return _moment2.default.min(\r\n includeDates.filter(function(includeDate) {\r\n return minDate.isSameOrBefore(includeDate, 'day');\r\n })\r\n );\r\n } else if (includeDates) {\r\n return _moment2.default.min(includeDates);\r\n } else {\r\n return minDate;\r\n }\r\n}\r\n\r\nfunction getEffectiveMaxDate(_ref5) {\r\n var maxDate = _ref5.maxDate,\r\n includeDates = _ref5.includeDates;\r\n\r\n if (includeDates && maxDate) {\r\n return _moment2.default.max(\r\n includeDates.filter(function(includeDate) {\r\n return maxDate.isSameOrAfter(includeDate, 'day');\r\n })\r\n );\r\n } else if (includeDates) {\r\n return _moment2.default.max(includeDates);\r\n } else {\r\n return maxDate;\r\n }\r\n}\r\n","var React = require('react');\n\nfunction CloseIcon (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"data-name\":\"Group 20\"},[React.createElement(\"line\",{\"data-name\":\"Line 1\",\"x1\":\"16\",\"y1\":\"1\",\"x2\":\"1\",\"y2\":\"16\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"2\",\"key\":0}),React.createElement(\"line\",{\"data-name\":\"Line 2\",\"x1\":\"1\",\"y1\":\"1\",\"x2\":\"16\",\"y2\":\"16\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeLinecap\":\"round\",\"strokeWidth\":\"2\",\"key\":1})]));\n}\n\nCloseIcon.defaultProps = {\"data-name\":\"Layer 1\",\"width\":\"17\",\"height\":\"17\",\"viewBox\":\"0 0 17 17\"};\n\nmodule.exports = CloseIcon;\n\nCloseIcon.default = CloseIcon;\n","var React = require('react');\n\nfunction FTKalSmall (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",null,[React.createElement(\"rect\",{\"x\":\"8\",\"y\":\"1\",\"width\":\"4\",\"height\":\"2\",\"key\":0}),React.createElement(\"path\",{\"d\":\"M18,7h2V5V4.5C20,2.6,18.4,1,16.5,1H16V0h-2v1v2h2h0.5C17.3,3,18,3.7,18,4.5V5H2V4.5C2,3.7,2.7,3,3.5,3H4h2V1V0H4v1H3.5\\r\\n\\t\\tC1.6,1,0,2.6,0,4.5V5v2h2H18z\",\"key\":1}),React.createElement(\"polygon\",{\"points\":\"7.7,11 6.3,12.4 9.3,15.4 13.3,10.7 11.8,9.3 9.2,12.4 \\t\",\"key\":2}),React.createElement(\"polygon\",{\"points\":\"17.9,9 17.9,17.9 2.1,17.9 2.1,9 -0.1,9 -0.1,20.1 20.1,20.1 20.1,9 \\t\",\"key\":3})]));\n}\n\nFTKalSmall.defaultProps = {\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 20 20\",\"enableBackground\":\"new 0 0 20 20\",\"xmlSpace\":\"preserve\"};\n\nmodule.exports = FTKalSmall;\n\nFTKalSmall.default = FTKalSmall;\n","var React = require('react');\n\nfunction FTAirplane (props) {\n return React.createElement(\"svg\",props,React.createElement(\"g\",{\"transform\":\"translate(0 -60.771)\"},[React.createElement(\"g\",{\"transform\":\"translate(0.298 60.771)\",\"key\":0},React.createElement(\"g\",{\"transform\":\"translate(0 0)\"},React.createElement(\"path\",{\"fill\":\"#2C3D47\",\"d\":\"M27.4,8.2c-0.4-0.5-3.9-0.5-3.5-0.7L19,10.4l-7.3-2.3l-2.1,1l4.9,4l-4.9,3L7.3,15l-2.2,1.3l3.3,2.3l2.8,0.1\\r\\n\\t\\t\\t\\tl14.5-8C26.5,9.7,27.8,8.7,27.4,8.2z\"}))),React.createElement(\"g\",{\"transform\":\"translate(0 73)\",\"key\":1},React.createElement(\"g\",{\"transform\":\"translate(0 0)\"},React.createElement(\"rect\",{\"x\":\"5.1\",\"y\":\"9.3\",\"fill\":\"#2C3D47\",\"width\":\"21.9\",\"height\":\"1.4\"})))]));\n}\n\nFTAirplane.defaultProps = {\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 32 32\"};\n\nmodule.exports = FTAirplane;\n\nFTAirplane.default = FTAirplane;\n"],"sourceRoot":""}