{"version":3,"sources":["webpack:///./src/apps/midttrafik/assets/images/store_apple.png","webpack:///./src/api/modules/products/zonetickets.js","webpack:///./src/store/modules/products/zoneticket.js","webpack:///./src/api/modules/products/fixedpricetickets.js","webpack:///./src/store/modules/products/fixedpriceticket.js","webpack:///./src/apps/midttrafik/assets/images/cards/applepay.svg","webpack:///./src/apps/midttrafik/components/elements/Spinner.vue?6e2c","webpack:///src/apps/midttrafik/components/elements/Spinner.vue","webpack:///./src/apps/midttrafik/components/elements/Spinner.vue?b679","webpack:///./src/apps/midttrafik/components/elements/Spinner.vue","webpack:///./src/apps/midttrafik/components/elements/ErrorImage.vue?6431","webpack:///src/apps/midttrafik/components/elements/ErrorImage.vue","webpack:///./src/apps/midttrafik/components/elements/ErrorImage.vue?ef88","webpack:///./src/apps/midttrafik/components/elements/ErrorImage.vue","webpack:///./src/apps/midttrafik/components/elements/Logo.vue?c146","webpack:///src/apps/midttrafik/components/elements/Logo.vue","webpack:///./src/apps/midttrafik/components/elements/Logo.vue?bef9","webpack:///./src/apps/midttrafik/components/elements/Logo.vue","webpack:///./src/apps/midttrafik/components/elements/Breadcrumb.vue?8597","webpack:///src/apps/midttrafik/components/elements/Breadcrumb.vue","webpack:///./src/apps/midttrafik/components/elements/Breadcrumb.vue?d8e7","webpack:///./src/apps/midttrafik/components/elements/Breadcrumb.vue","webpack:///./src/apps/midttrafik/globals.js","webpack:///./src/i18n/translations/en.generated.js","webpack:///./src/api/modules/products/controlFees.js","webpack:///./src/store/modules/products/controlfee.js","webpack:///./src/i18n/index.js","webpack:///./src/apps/midttrafik/App.vue?0aaa","webpack:///./src/apps/midttrafik/components/blocks/BlockHeader.vue?baaa","webpack:///src/apps/midttrafik/components/blocks/BlockHeader.vue","webpack:///./src/apps/midttrafik/components/blocks/BlockHeader.vue?7539","webpack:///./src/apps/midttrafik/components/blocks/BlockHeader.vue","webpack:///./src/apps/midttrafik/components/blocks/BlockFooter.vue?6409","webpack:///src/apps/midttrafik/components/blocks/BlockFooter.vue","webpack:///./src/apps/midttrafik/components/blocks/BlockFooter.vue?3dac","webpack:///./src/apps/midttrafik/components/blocks/BlockFooter.vue","webpack:///src/apps/midttrafik/App.vue","webpack:///./src/apps/midttrafik/App.vue?59df","webpack:///./src/apps/midttrafik/App.vue","webpack:///./src/components/blocks/BlockSection.vue?a7e2","webpack:///./src/api/modules/products/retireetickets.js","webpack:///./src/store/modules/products/retireeticket.js","webpack:///./src/components/elements/TextHeadlinePrimary.vue?0101","webpack:///./src/store/modules/system.js","webpack:///./src/api/modules/basket.js","webpack:///./src/api/modules/customer.js","webpack:///./src/store/modules/order.js","webpack:///./src/i18n/translations/de.generated.js","webpack:///./src/apps/midttrafik/assets/images/cards/dankort.png","webpack:///./src/components/layouts/LayoutModal.vue?a372","webpack:///./src/components/elements/TextHeadlineSecondary.vue?e8d7","webpack:///./src/router/paths.js","webpack:///./src/apps/midttrafik/App.vue?2970","webpack:///./src/store/modules/index.js","webpack:///./src/store/index.js","webpack:///./src/api/modules/system.js","webpack:///./src/i18n/languages/da.js","webpack:///./src/api/modules/customerid.js","webpack:///./src/store/modules/identification.js","webpack:///./src/api/modules/content.js","webpack:///./src/store/modules/content.js","webpack:///./src/components/elements/TextButton.vue?964b","webpack:///src/components/elements/TextButton.vue","webpack:///./src/components/elements/TextButton.vue?e410","webpack:///./src/components/elements/TextButton.vue","webpack:///./src/utilities/polyfills/promise.js","webpack:///./src/utilities/polyfills/index.js","webpack:///./src/Bootstrap.vue?2f69","webpack:///./src/components/modals/ModalError.vue?560e","webpack:///./src/components/elements/SplitRowAll.vue?a0f2","webpack:///src/components/elements/SplitRowAll.vue","webpack:///./src/components/elements/SplitRowAll.vue?6d80","webpack:///./src/components/elements/SplitRowAll.vue","webpack:///src/components/modals/ModalError.vue","webpack:///./src/components/modals/ModalError.vue?b315","webpack:///./src/components/modals/ModalError.vue","webpack:///src/Bootstrap.vue","webpack:///./src/Bootstrap.vue?10b6","webpack:///./src/Bootstrap.vue","webpack:///./src/router/index.js","webpack:///./src/filters/MomentFilters.js","webpack:///./src/filters/PricingFilters.js","webpack:///./src/filters/PassengerFilters.js","webpack:///./src/directives/ClickOutsideDirective.js","webpack:///./src/plugins/font-awesome.js","webpack:///./src/components/elements/Spacer.vue?717c","webpack:///src/components/elements/Spacer.vue","webpack:///./src/components/elements/Spacer.vue?a4ef","webpack:///./src/components/elements/Spacer.vue","webpack:///./src/components/elements/TextHeadlinePrimary.vue?f22a","webpack:///./src/components/elements/TextHeadlinePrimary.vue","webpack:///./src/components/elements/TextHeadlineSecondary.vue?001a","webpack:///./src/components/elements/TextHeadlineSecondary.vue","webpack:///./src/components/layouts/LayoutSplit.vue?aefe","webpack:///src/components/layouts/LayoutSplit.vue","webpack:///./src/components/layouts/LayoutSplit.vue?a7c8","webpack:///./src/components/layouts/LayoutSplit.vue","webpack:///./src/components/layouts/LayoutSingle.vue?f6c8","webpack:///src/components/layouts/LayoutSingle.vue","webpack:///./src/components/layouts/LayoutSingle.vue?46b3","webpack:///./src/components/layouts/LayoutSingle.vue","webpack:///./src/components/layouts/LayoutSquared.vue?075d","webpack:///src/components/layouts/LayoutSquared.vue","webpack:///./src/components/layouts/LayoutSquared.vue?c027","webpack:///./src/components/layouts/LayoutSquared.vue","webpack:///./src/components/blocks/BlockSection.vue?1f1b","webpack:///./src/components/blocks/BlockSection.vue","webpack:///./src/plugins/mainComponents.js","webpack:///./src/plugins/errorhandler.js","webpack:///./src/plugins/analytics.js","webpack:///./src/main.js","webpack:///./src/apps/midttrafik/components/elements/Logo.vue?eddb","webpack:///./src/components/elements/Spacer.vue?4445","webpack:///./src/apps/midttrafik/routes.js","webpack:///./src/apps/midttrafik/assets/images/cards/mastercard.png","webpack:///./src/assets/images/flags/de.png","webpack:///./src/store/modules/flow.js","webpack:///./src/apps/midttrafik/components/blocks/BlockHeader.vue?59b7","webpack:///./src/api/modules/confirm.js","webpack:///./src/components/selectors/SelectorLocaleFlag.vue?7389","webpack:///src/components/selectors/SelectorLocaleFlag.vue","webpack:///./src/components/selectors/SelectorLocaleFlag.vue?0445","webpack:///./src/components/selectors/SelectorLocaleFlag.vue","webpack:///./src/apps/midttrafik/assets/images/cards/diners.png","webpack:///./src/apps/midttrafik/assets/images/cards/amercian-express.png","webpack:///./src/components/modals/ModalError.vue?98bb","webpack:///./src/i18n/languages/de.js","webpack:///./src/components/layouts/LayoutSquared.vue?a96c","webpack:///./src/apps/midttrafik/components/elements/Breadcrumb.vue?9dd2","webpack:///./src/apps/midttrafik/assets/images/cards/jcb.png","webpack:///./src/i18n/languages eager ^\\.\\/.*$ namespace object","webpack:///./src/apps/midttrafik/paths.js","webpack:///./src/assets/images/flags/en.png","webpack:///./src/utilities/chars.js","webpack:///./src/apps/midttrafik/assets/images/store_google.png","webpack:///./src/components/layouts/LayoutSplit.vue?e453","webpack:///./src/api/modules/passenger.js","webpack:///./src/store/modules/passenger.js","webpack:///./src/components/layouts/LayoutModal.vue?3ed0","webpack:///src/components/layouts/LayoutModal.vue","webpack:///./src/components/layouts/LayoutModal.vue?3414","webpack:///./src/components/layouts/LayoutModal.vue","webpack:///./src/apps/midttrafik/assets/images/error_bus.svg","webpack:///./src/components/elements/TextButton.vue?4e70","webpack:///./src/i18n/languages/en.js","webpack:///index|\\.unit\\.).)*\\.js$","webpack:///./src/store/modules/date.js","webpack:///./src/apps/midttrafik/components/blocks/BlockFooter.vue?3dce","webpack:///./src/version.js","webpack:///./src/api/api-core.js","webpack:///./src/utilities/time.js","webpack:///./src/apps/midttrafik/components/elements/Spinner.vue?66e7","webpack:///./src/apps/midttrafik/assets/images/cards/maestro.png","webpack:///./src/utilities/featuredetection/modernizr-webp.js","webpack:///./src/components/layouts/LayoutSingle.vue?ac70","webpack:///./src/i18n/languages lazy ^\\.\\/.*$ namespace object","webpack:///./src/apps/midttrafik/assets/images/cards/visa.png","webpack:///./src/store/modules/error.js","webpack:///./src/i18n/translations/da.generated.js","webpack:///./src/apps/midttrafik/assets/images/loading.svg","webpack:///./src/apps/midttrafik/assets/images/cards/mobilepay.png","webpack:///./src/api/modules/locations.js","webpack:///./src/store/modules/location.js","webpack:///./src/store/modules/customer.js","webpack:///./src/components/elements/SplitRowAll.vue?c981","webpack:///./src/apps/midttrafik/assets/images/logo.svg","webpack:///./src/api/modules/delivery.js","webpack:///./src/components/selectors/SelectorLocaleFlag.vue?41fe","webpack:///./src/assets/images/flags/da.png"],"names":["module","exports","fetchInfo","ownerHandlesFailure","callApi","undefined","createOrder","passengers","startZoneNumber","viaZoneNumber","endZoneNumber","startStopId","viaStopId","endStopId","validFromInstant","requestData","salesChannelIdentifier","Passengers","StartZoneNumber","ViaZoneNumber","EndZoneNumber","StartStopId","ViaStopId","EndStopId","ValidFromInstant","InfoModel","info","this","identifier","productTypeIdentifier","allowedPassengerTypeIds","map","id","parseInt","maximumNumberOfPassengersPerItem","maximumStartValidityDaysFromNow","minZoneDistance","maxZoneDistance","startStopAndEndStopMode","StartStopAndEndStopModeModel","startZoneAndEndZoneMode","startStopAndZoneDistanceMode","StartStopAndZoneDistanceMode","startZoneAndZoneDistanceMode","mode","available","tripSelectionRequired","viaStopAvailable","state","mutations","updateInfo","payload","getters","actions","context","then","response","ok","Error","responseBody","json","commit","productType","root","prepareOrder","serverTime","makeUtcDate","rootGetters","getServerDateAsMoment","periodStart","add","endOf","periodEnd","startOf","passengerTypeIds","maximumPassengers","dispatch","passenger","passengerTypeId","passengerType","passengerTypeCount","count","validFromInstance","startLocation","LOCATION_FROM","viaLocation","LOCATION_VIA","endLocation","LOCATION_TO","zoneNumber","status","error","errorType","JSON","stringify","orderId","priceOre","details","validFrom","validTo","validToInstant","productVariantId","moment","isMoment","products","buyableProductVariants","product","ProductModel","productData","type","restrictToDate","imageAvailable","passengerTypePrices","pType","price","passengerTypePriceOre","texts","Object","keys","forEach","language","ProductLanguageModel","name","descriptionPlainText","validityText","validDurationMinutes","validWindowStartInstance","validWindowStartInstant","validWindowEndInstance","validWindowEndInstant","description","Promise","resolve","wasProductValidToBuyInThePast","isSameOrBefore","render","_vm","_h","$createElement","_c","_self","staticClass","class","spinner","small","attrs","image","_v","_s","message","_e","staticRenderFns","component","alt","_l","crumb","key","step","route","path","on","$event","preventDefault","navigate","title","Spinner","logo","Logo","ErrorImage","breadcrumb","Breadcrumb","getPriceAndDate","referenceNumber","initialState","feeNumber","feeNumberExists","feeDate","getNumberError","_state","_rootState","value","ERROR_FEE_NUMBER_INVALID","ERROR_REQUIRED","getNumberInvalidChars","ERROR_INVALID_CHARS","ERROR_FEE_NUMBER_LENGTH","setNumber","number","setFeeDate","date","updateFeeNumberExists","getNumber","getFeeDate","feeExsist","exists","Vue","use","VueI18n","instance","fallbackLocale","availableLanguages","parse","process","loadedLanguages","setI18nLanguage","lang","i18nInstance","locale","document","querySelector","setAttribute","store","loadLanguage","langModulePromise","langModule","default","messages","setLocaleMessage","push","navigatorLocale","navigator","userLanguage","split","includes","e","cookieLocale","$cookies","get","saveLocale","set","Infinity","defaultLocale","localeFromCookie","localeFromNavigator","loadLanguageAsync","storeInCookie","console","ref","loadingMessage","directives","rawName","loading","expression","$route","fullPath","onLoading","_t","open","menuOpen","$t","menus","active","currentFlowType","zoneTicketType","paths","newZoneTicket","retireeTicketType","retireeProducts","fixedPriceTicketType","fixedPriceProducts","controlFeeType","controlfee","applePay","dankort","mobilepay","mastercard","maestro","visa","diners","jcb","americanExpress","store_apple","store_google","amountOfDays","productVariants","municipalityId","updateProductVariant","updateValidFrom","from","tz","toDate","updateValidTo","to","getMunicipalities","unique","p","municipality","filter","m","length","getAvailableProductVariants","getSelectedProductVariant","find","getValidFrom","getValidTo","getAmountOfDays","diff","getTotalPriceOre","dayPriceInOre","getTotalPriceOreWithDelivery","rootState","deliveryPrice","ticketPrice","isValid","Boolean","totalPriceOre","_priceOre","SystemConfig","config","self","company","trips","stops","payments","paymentProviders","stringCharacterSets","snailmailDelivery","fixedPriceTicketProducts","zoneTicketProducts","retireeTicketProducts","system","snailmail","stopProductTypes","updateSystemConfig","updateSnailmailConfig","addStopProductType","getMaxStopSearchLength","stopNameMaxLength","getStopProductTypes","getDibsMerchantId","dibs","merchantId","getEpayMerchantId","epay","getNetaxeptMerchantId","netaxept","clientMerchantId","webshopMerchantId","getApplePayMerchantId","getApplePayMerchantCapabilities","merchantCapabilities","getApplePaySupportedNetworks","supportedNetworks","getCompanyName","companyName","getApplePayEnabled","enabled","getNetaxeptEnabled","enabledProductsModuleMapping","mapping","getDepartureInstantThresholdMinutes","orderingDepartureInstantThresholdMinutes","alphaNumericCharacterSet","alphaNumeric","commonCharacterSet","common","mailAddressCharacterSet","mailAddress","snailmailShipmentDelayDayCount","shipmentDelayDayCount","snailmailShipmentFeeInOre","shipmentFeeInOre","loadSnailmail","a","fetchSnailmailInfo","loadConfig","fetchSystemInfo","promises","setDepartureDate","controlFeeProducts","all","claimBasket","customerName","email","newsletterSubscribe","platform","transactionId","claimed","deliveryMethod","downloadToken","paymentProvider","paymentProviderError","applePayToken","reset","setPaymentProvider","provider","setOrderId","setPaymentProviderError","code","setTransactionId","setPriceOre","setDetails","setDownloadToken","token","setClaimed","val","setDeliveryMethod","setApplePayToken","getProductType","getOrderId","getEpayPaymentId","epayPaymentId","getDibsEasyPaymentId","dibsEasyPaymentId","getPriceOre","getDetails","getDeliveryMethod","getDownloadToken","getPaymentProvider","getPaymentProviderError","getApplePayToken","prepare","rest","create","claim","identificationType","controlNumbers","delivery","address","cityName","zipCode","countryName","performDelivery","setEmailDelivery","setSnailmailDelivery","setControlFeeDelivery","newsletterAccept","catch","confirm","paymentConfirmPromise","finalizeNetaxept","payAnonymousDeveloper","payAnonymousFree","log","reject","itemDownloadToken","statusText","exchangeDownloadTokenDeveloper","exchangeDownloadTokenFree","appPaths","require","payment","confirmOrder","orderConfirmed","modulesCache","storeData","modules","getNamespace","subtree","namespace","shift","namespaced","requireModule","fileName","moduleDefinition","modulePath","replace","pop","Vuex","Store","strict","moduleName","init","fetchServerTime","messagesPromise","generatedLanguageModule","listIdTypes","IdentificationType","displayNameDanish","displayNameEnglish","displayNameGerman","numberOfControlDigits","useDigitsFromEnd","da","en","de","identificationTypes","setIdentificationTypes","getIdentificationTypes","getIdentificationTypeFromId","item","updateIdentificationTypes","types","nameDanish","nameEnglish","nameGerman","numCharactersRequired","useCharactersFromEnd","getContent","languageCode","ContentModel","body","ContentNotFoundError","contentPages","startupMessageShownStatus","setContentPage","model","setStartupMessageShownStatus","startupMessageHasBeenShown","getContentPage","contents","content","page","disabled","click","window","prototype","finally","shouldUsePolyfill","objectAssign","assign","arrayIncludes","Array","arrayFrom","numberIsInteger","Number","isInteger","windowFetch","fetch","myModule","bootstrapped","handlePageLoading","beforeClose","scopedSlots","_u","fn","reload","restart","isHard","close","showDetails","v","k","proxy","useMaximize","oneLine","reverse","PageNotFound","PagePayment","PageConfirmOrder","PageOrderConfirmed","Router","Cookies","defaultRoutes","meta","flowStep","FLOW_STEP_PAYMENT","FLOW_STEP_CONFIRM_ORDER","FLOW_STEP_ORDER_CONFIRMED","allowReload","appRoutes","routes","flowToRoute","r","flowType","router","base","next","defaultTitle","beforeEach","inst","te","pageTitle","t","unshift","join","_from","query","reference","responseCode","match","matched","expect","zeroPadLeft","toString","install","$moment","utc","format","full","charAt","toUpperCase","slice","trip","fromDate","departureInstant","arrivalInstant","minuteDiff","hourDuration","Math","floor","minuteDuration","txts","minutes","days","hours","parts","day","hour","minute","isFinite","displayPrice","toLocaleString","maximumFractionDigits","minimumFractionDigits","translatePassengerType","passengerTypeString","namePlural","nameSingular","totalPassengers","reduce","accumulator","currentValue","directive","bind","el","binding","vNode","compName","warn","bubble","modifiers","handler","contains","target","__vueClickOutside__","addEventListener","unbind","removeEventListener","options","componentName","faLibrary","faLocationArrow","faAngleDown","faAngleUp","faArrowRight","faExchangeAlt","faInfoCircle","FontAwesomeIcon","classes","script","headline","appGlobals","dummy","h","defaultGlobals","spacer","Spacer","TextHeadlinePrimary","TextHeadlineSecondary","LayoutSplit","LayoutSingle","LayoutSquared","BlockSection","globals","VModal","FontAwesome","errorHandler","vm","_isVue","$options","_componentTag","hard","source","stack","stacktrace","onunhandledrejection","reason","onerror","_lineno","_colno","VUE_APP_GA_ID","VueAnalytics","autoTracking","transformQueryString","prependBase","skipSamePath","debug","sendHitTask","productionTip","MomentFilters","PricingFilters","PassengerFilters","ClickOutsideDirective","MainComponents","ErrorHandler","Analytics","VueCookies","VueAnnouncer","complementRoute","i18n","polyfillInit","i18nInit","Bootstrap","PageNewZoneTicket","PageRetireeProducts","PageNewRetireeTicket","PageNewFixedPriceTicket","PageFixedPriceProducts","PageCustomerInformation","PageConfirmBasket","PageControlFee","redirect","productId","FLOW_TYPE_ZONE_TICKET","FLOW_STEP_TRAVEL_INFORMATION","FLOW_TYPE_RETIREE_TICKET","newRetireeTicket","FLOW_STEP_RETIREE_TICKET_PRODUCT","FLOW_TYPE_FIXED_PRICE_TICKET","newFixedPriceTicket","customerInformation","FLOW_STEP_CUSTOMER_INFORMATION","confirmBasket","FLOW_STEP_CONFIRM_BASKET","FLOW_TYPE_CONTROLFEE","previous","throwFlowErrors","FLOW_ERROR_ZONE_DISTANCE_NO_TRIP","FLOW_ERROR_STOP_IDENTITY_CONFLICT","FLOW_ERROR_TICKET_NOT_SELLABLE","FLOW_ERROR_SERVICE_UNAVAILABLE","FLOW_ERROR_TOO_LATE_TO_ORDER_TICKET","FLOW_ERROR_DEPARTURE_DATE_INVALID","TimeoutError","ConnectionError","FLOW_ERROR_CONNECTION_FAILED","FLOW_STEP_CONTROLFEE","FLOW_STEP_CONTROLFEE_INFORMATION","FLOW_ERROR_NOT_STARTED","FLOW_ERROR_LOCATION_INVALID","FLOW_ERROR_PASSENGER_INVALID","FLOW_ERROR_CUSTOMER_INVALID","FLOW_ERROR_TERMS_NOT_ACCEPTED","FLOW_ERROR_PRODUCT_NOT_AVAILABLE","FLOW_ERROR_RETIREE_PRODUCT_INVALID","FLOW_LOADING_CREATING_ORDER","FLOW_LOADING_CLAIMING_ORDER","FLOW_LOADING_CLAIMING_PAYMENT","FLOW_LOADING_CONFIRMING_ORDER","FLOW_LOADING_CONFIRMING_PAYMENT","s","clearPrevious","addPrevious","goBack","index","destinationStep","indexOf","setType","setStep","addStep","setLoading","continueFlow","getType","getStep","getPrevious","getFullStep","isLoading","getNextStep","getStepError","_getters","isStepValid","resetFlow","startZoneTicketFlow","zoneticket","startFixedPriceTicketFlow","fixedpriceticket","startRetireeTicketFlow","retireeticket","startControlFeeFlow","gotoNextStep","stepError","currentStep","currentFlow","nextStep","setTimeout","initNetaxept","redirectUrl","initApplePay","paymentData","label","selectedLanguage","flag","webpackAsyncContext","req","webpackAsyncContextResolve","__webpack_require__","o","invalidChars","string","validChars","chars","Set","invalid","char","filterChars","output","fetchPassengerTypeList","germanSingular","backup","germanPlural","PassengerTypeModel","order","danishNameSingular","englishNameSingular","stringIdentifier","danishNamePlural","englishNamePlural","minimumAge","maximumAge","contentPageIdentifier","rejseplanenIdentifier","PassengerTypeCountModel","DEFAULT_MAXIMUM_PASSENGERS","passengerTypes","updatePassengerTypes","updatePassengers","existingPassengers","existingPassenger","allowedPassengerTypes","primary","primaryId","updatePassengerCountForType","clearPassengers","getPassengerTypes","getPassengerTypeById","getAllowedPassengerTypes","getPrimaryPassengerType","allowed","getPassengers","getPassengerCountById","getPassengerCount","getMaximumPassengers","$emit","webpackContext","webpackContextResolve","makeCorrectSelectedInterval","interval","startMinute","leftOvers","selectableDatesStart","selectableDatesEnd","isSelectedDepartureDateValid","serverDateTime","selectedDepartureDate","timeSpans","spanInterval","leaveNow","selectedSearchType","forceDateUpdate","tmp","Date","updateDepartureDate","departureDate","valueOf","updateServerTime","serverTicketTime","ticketTime","updateSelectableDatesInCalendar","updateIsSelectedDepartureDateValid","valid","updateTimeSpans","spans","updateInterval","updateLeaveNow","updateSearchType","getDepartureDateAsMoment","dateAndTime","second","getModifiedDepartureDateAsMoment","getSelectableDates","getTimeSpans","isDepartureDateToday","isToday","isSame","isLeaveNowOptionAwailable","getInterval","getLeaveNow","getSelectedSearchType","setTimeSpans","spanss","totalMinutes","totalSpans","startHour","removeSpans","i","prepareSelectableDates","determineIfSelectedDepartureDateIsValid","departureTime","today","servertime","validPeriod","start","end","isSameOrAfter","isBefore","setServerTime","utcTime","currentDepartureDate","force","setDateInterval","setLeaveNow","validateTripDepartureInstant","departureUtc","threshold","subtract","version","TIMEOUT","method","endpoint","sendData","busyCount","request","headers","Accept","cache","requestPromise","race","_resolve","responsePromise","values","responseJson","tests","ModernizrProto","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","test","cb","addTest","addAsyncTest","Modernizr","is","obj","testRunner","featureNames","feature","aliasIdx","result","nameIdx","featureName","featureNameSplit","featureIdx","hasOwnProperty","toLowerCase","aliases","hasOwnProp","docElement","documentElement","isSVG","nodeName","setClasses","className","baseVal","reJS","RegExp","last","_trigger","_hasOwnProperty","call","object","property","constructor","res","cbs","webpTests","uri","webp","Image","addResult","event","width","baseTest","onload","src","clearError","setError","getMustShowErrors","getError","searchLocations","searchString","productTypes","searchStopsById","stopIds","searchStopsByLocation","longitude","latitude","getStopByRejseplanenId","rejseplanenId","LOCATION_TYPES","AIRPORT_ZONES","locations","popularStops","setLocationByType","data","stop","setPopularStops","swapLocations","prevFrom","prevTo","unsetLocationFrom","unsetLocationVia","unsetLocationTo","unsetLocations","getLocationByType","getFromLocation","getViaLocation","getToLocation","getLocationRouteText","via","getPopularStops","hasDuplicates","locationFrom","locationVia","locationTo","stopNearAirport","setLocationByTypeAndId","stopId","setLocationByTypeAndGeo","setStopsByRejseplanenIds","stopFromId","stopToId","fromStop","toStop","searchPopularStops","search","searchResults","phone","emailConfirm","termsAccept","deliveryName","deliveryAddress","deliveryZip","deliveryCity","deliveryCountry","deliveryTermsAccept","validateName","getName","getNameInvalidChars","validateEmail","getEmail","getEmailInvalidChars","ERROR_EMAIL_INVALID","validateEmailConfirm","getEmailConfirm","other","ERROR_EMAIL_MISMATCH","validateIdentificationType","getIdentificationType","validateControlNumbers","getControlNumbers","isNaN","ERROR_CONTROL_NUMBERS_INVALID","ERROR_CONTROL_NUMBERS_LENGTH_FIRST","ERROR_CONTROL_NUMBERS_LENGTH_LAST","validatePhone","validateDelivery","Key","generic","getNameError","getPhoneError","getEmailError","getEmailConfirmError","specific","getIdentificationTypeError","getControlNumbersError","getDeliveryNameError","getDeliveryAddressError","getDeliveryZipError","getDeliveryCityError","getDeliveryCountryError","fields","charSet","validate","updateCustomer","resetCustomer","getNewsletterAccept","getTermsAccept","getDeliveryTermsAccept","cardIdentificationId","cardIdentificationCharacters","inputDeliveryAddress","termsAccepted"],"mappings":"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","file":"static/js/app.29b316c0.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","import { callApi } from \"@/api/api-core\";\r\n\r\nexport const fetchInfo = function(ownerHandlesFailure) {\r\n return callApi(\r\n \"POST\",\r\n \"v6/products/zoneticket/info\",\r\n undefined,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const createOrder = function(\r\n passengers,\r\n startZoneNumber,\r\n viaZoneNumber,\r\n endZoneNumber,\r\n startStopId,\r\n viaStopId,\r\n endStopId,\r\n validFromInstant,\r\n ownerHandlesFailure\r\n) {\r\n let requestData = {\r\n salesChannelIdentifier: \"Webshop\",\r\n Passengers: passengers,\r\n StartZoneNumber: startZoneNumber,\r\n ViaZoneNumber: viaZoneNumber,\r\n EndZoneNumber: endZoneNumber,\r\n StartStopId: startStopId,\r\n ViaStopId: viaStopId,\r\n EndStopId: endStopId,\r\n ValidFromInstant: validFromInstant\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v3/products/zoneticket/order\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n","import { fetchInfo, createOrder } from \"@/api/modules/products/zonetickets\";\r\nimport {\r\n LOCATION_FROM,\r\n LOCATION_VIA,\r\n LOCATION_TO\r\n} from \"@/store/modules/location\";\r\nimport { makeUtcDate } from \"@/utilities/time\";\r\n\r\nconst InfoModel = function(info) {\r\n this.identifier = info.productTypeIdentifier;\r\n // Javascript will interpret the result as text\r\n this.allowedPassengerTypeIds = info.allowedPassengerTypeIds.map(id =>\r\n parseInt(id)\r\n );\r\n this.maximumNumberOfPassengersPerItem =\r\n info.maximumNumberOfPassengersPerItem;\r\n this.maximumStartValidityDaysFromNow = info.maximumStartValidityDaysFromNow;\r\n this.minZoneDistance = info.minZoneDistance;\r\n this.maxZoneDistance = info.maxZoneDistance;\r\n\r\n this.startStopAndEndStopMode = new StartStopAndEndStopModeModel(\r\n info.startZoneAndEndZoneMode\r\n );\r\n this.startStopAndZoneDistanceMode = new StartStopAndZoneDistanceMode(\r\n info.startZoneAndZoneDistanceMode\r\n );\r\n};\r\n\r\nconst StartStopAndEndStopModeModel = function(mode) {\r\n this.available = mode.available;\r\n this.tripSelectionRequired = mode.tripSelectionRequired;\r\n this.viaStopAvailable = mode.viaStopAvailable;\r\n};\r\n\r\nconst StartStopAndZoneDistanceMode = function(mode) {\r\n this.available = mode.available;\r\n};\r\n\r\nexport const state = {\r\n info: null\r\n};\r\n\r\nexport const mutations = {\r\n updateInfo: (state, payload) => {\r\n state.info = new InfoModel(payload);\r\n }\r\n};\r\n\r\nexport const getters = {};\r\n\r\nexport const actions = {\r\n fetchInfo: context => {\r\n return fetchInfo(true)\r\n .then(response => {\r\n if (!response.ok) throw new Error(response.responseBody);\r\n return response.responseBody;\r\n })\r\n .then(json => {\r\n context.commit(\"updateInfo\", json);\r\n context.commit(\r\n \"system/addStopProductType\",\r\n {\r\n productType: context.state.info.identifier\r\n },\r\n { root: true }\r\n );\r\n });\r\n },\r\n prepareOrder: context => {\r\n const {\r\n allowedPassengerTypeIds,\r\n maximumNumberOfPassengersPerItem,\r\n maximumStartValidityDaysFromNow\r\n } = context.state.info;\r\n const serverTime = makeUtcDate(\r\n context.rootGetters.getServerDateAsMoment\r\n );\r\n const periodStart = makeUtcDate(serverTime)\r\n .add(-1, \"days\")\r\n .endOf(\"day\");\r\n const periodEnd = makeUtcDate(serverTime)\r\n .add(maximumStartValidityDaysFromNow, \"days\")\r\n .startOf(\"day\")\r\n .add(-1, \"second\");\r\n\r\n context.commit(\r\n \"passenger/updatePassengers\",\r\n {\r\n passengerTypeIds: allowedPassengerTypeIds,\r\n maximumPassengers: maximumNumberOfPassengersPerItem\r\n },\r\n { root: true }\r\n );\r\n context.dispatch(\r\n \"date/prepareSelectableDates\",\r\n { periodStart, periodEnd },\r\n { root: true }\r\n );\r\n },\r\n createOrder: context => {\r\n const passengers = context.rootGetters[\"passenger/getPassengers\"].map(\r\n passenger => {\r\n return {\r\n passengerTypeId: passenger.passengerType.id,\r\n passengerTypeCount: passenger.count\r\n };\r\n }\r\n );\r\n\r\n const validFromInstance =\r\n context.rootGetters[\"date/getDepartureDateAsMoment\"];\r\n const startLocation = context.rootGetters[\"location/getLocationByType\"](\r\n LOCATION_FROM\r\n );\r\n const viaLocation = context.rootGetters[\"location/getLocationByType\"](\r\n LOCATION_VIA\r\n );\r\n const endLocation = context.rootGetters[\"location/getLocationByType\"](\r\n LOCATION_TO\r\n );\r\n\r\n let viaStopId = null;\r\n let viaZoneNumber = null;\r\n\r\n if (viaLocation != null) {\r\n viaStopId = viaLocation.id;\r\n viaZoneNumber = viaLocation.zoneNumber;\r\n }\r\n\r\n // TODO This should be changed so it supports searching for a zone without a stop, when Midttrafik support is needed\r\n return createOrder(\r\n passengers,\r\n startLocation.zoneNumber,\r\n viaZoneNumber,\r\n endLocation.zoneNumber,\r\n startLocation.id,\r\n viaStopId,\r\n endLocation.id,\r\n validFromInstance,\r\n true\r\n )\r\n .then(response => {\r\n if (response.ok) {\r\n return response.responseBody;\r\n } else if (\r\n response.status === 422 &&\r\n response.responseBody.error === \"ZoneDistanceNoTripFound\"\r\n ) {\r\n throw new Error(\"ZoneDistanceNoTripFound\");\r\n } else if (\r\n response.status === 422 &&\r\n response.responseBody.error === \"StopIdentityConflict\"\r\n ) {\r\n throw new Error(\"StopIdentityConflict\");\r\n } else if (\r\n response.status === 503 &&\r\n response.responseBody.errorType === \"ServiceUnavailable\"\r\n ) {\r\n throw new Error(\"ServiceUnavailable\");\r\n } else {\r\n throw new Error(JSON.stringify(response));\r\n }\r\n })\r\n .then(({ orderId, priceOre, ...details }) => {\r\n context.commit(\"order/setOrderId\", orderId, { root: true });\r\n context.commit(\"order/setPriceOre\", priceOre, { root: true });\r\n context.commit(\r\n \"order/setDetails\",\r\n {\r\n ...details,\r\n validFrom: makeUtcDate(details.validFromInstant),\r\n validTo: makeUtcDate(details.validToInstant)\r\n },\r\n { root: true }\r\n );\r\n });\r\n }\r\n};\r\n","import { callApi } from \"@/api/api-core\";\r\nimport moment from \"moment-timezone\";\r\n\r\nexport const fetchInfo = function(ownerHandlesFailure) {\r\n return callApi(\r\n \"POST\",\r\n \"v11/products/fixedpriceticket/info\",\r\n {\r\n salesChannelIdentifier: \"Webshop\"\r\n },\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const createOrder = function(\r\n passengers,\r\n productVariantId,\r\n validFromInstant,\r\n ownerHandlesFailure\r\n) {\r\n if (!moment.isMoment(validFromInstant)) {\r\n throw new Error(\"validFromInstant is not a moment\");\r\n }\r\n\r\n const requestData = {\r\n salesChannelIdentifier: \"Webshop\",\r\n passengers,\r\n validFromInstant,\r\n productVariantId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v2/products/fixedpriceticket/order\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n","import {\r\n fetchInfo,\r\n createOrder\r\n} from \"@/api/modules/products/fixedpricetickets\";\r\nimport { makeUtcDate } from \"@/utilities/time\";\r\n\r\nconst InfoModel = function(info) {\r\n this.identifier = info.productTypeIdentifier;\r\n this.maximumNumberOfPassengersPerItem =\r\n info.maximumNumberOfPassengersPerItem;\r\n this.allowedPassengerTypeIds = info.allowedPassengerTypeIds;\r\n this.products = info.buyableProductVariants.map(\r\n product => new ProductModel(product, this.identifier)\r\n );\r\n};\r\n\r\nconst ProductModel = function(productData, identifier) {\r\n this.id = productData.id;\r\n this.type = identifier;\r\n this.restrictToDate = productData.restrictToDate;\r\n this.imageAvailable = productData.imageAvailable;\r\n this.passengerTypePrices = productData.passengerTypePrices.map(pType => ({\r\n passengerTypeId: pType.passengerTypeId,\r\n price: pType.passengerTypePriceOre\r\n }));\r\n\r\n this.texts = {};\r\n\r\n Object.keys(productData.texts).forEach(language => {\r\n this.texts[language] = new ProductLanguageModel(\r\n language,\r\n productData.texts[language].name,\r\n productData.texts[language].descriptionPlainText,\r\n productData.texts[language].validityText\r\n );\r\n });\r\n\r\n this.validDurationMinutes = productData.validDurationMinutes;\r\n this.validWindowStartInstance = productData.validWindowStartInstant;\r\n this.validWindowEndInstance = productData.validWindowEndInstant;\r\n};\r\n\r\nconst ProductLanguageModel = function(\r\n language,\r\n name,\r\n descriptionPlainText,\r\n validityText\r\n) {\r\n this.language = language;\r\n this.name = name;\r\n this.description = descriptionPlainText;\r\n this.validityText = validityText;\r\n};\r\n\r\nexport const state = {\r\n info: null\r\n};\r\n\r\nexport const mutations = {\r\n updateInfo: (state, payload) => {\r\n state.info = new InfoModel(payload.info);\r\n }\r\n};\r\n\r\nexport const getters = {};\r\n\r\nexport const actions = {\r\n fetchInfo: context => {\r\n // If we already have the list. we should not call the endpoint again\r\n if (context.state.info) {\r\n return Promise.resolve();\r\n }\r\n\r\n return fetchInfo(true)\r\n .then(response => {\r\n if (!response.ok) throw new Error(response.responseBody);\r\n return response.responseBody;\r\n })\r\n .then(response => {\r\n if (!response.buyableProductVariants) throw new Error(response);\r\n context.commit(\"updateInfo\", { info: response });\r\n });\r\n },\r\n prepareOrder: (context, { product }) => {\r\n if (!product)\r\n throw new Error(\r\n \"cannot prepare fixed price ticket order without a product\"\r\n );\r\n const {\r\n allowedPassengerTypeIds,\r\n maximumNumberOfPassengersPerItem\r\n } = context.state.info;\r\n const serverTime = makeUtcDate(\r\n context.rootGetters.getServerDateAsMoment\r\n );\r\n\r\n // we should determine if the product was valid to buy in the past\r\n // we do this to know if we should push the selectable dates forward to today\r\n const wasProductValidToBuyInThePast = makeUtcDate(\r\n product.validWindowStartInstance\r\n ).isSameOrBefore(makeUtcDate(serverTime));\r\n\r\n const periodStart = wasProductValidToBuyInThePast\r\n ? makeUtcDate(serverTime).startOf(\"day\")\r\n : makeUtcDate(product.validWindowStartInstance);\r\n const periodEnd =\r\n product.validWindowEndInstance === null\r\n ? null\r\n : makeUtcDate(product.validWindowEndInstance);\r\n\r\n context.commit(\"order/setDetails\", { product }, { root: true });\r\n context.commit(\r\n \"passenger/updatePassengers\",\r\n {\r\n passengerTypeIds: allowedPassengerTypeIds,\r\n maximumPassengers: maximumNumberOfPassengersPerItem\r\n },\r\n { root: true }\r\n );\r\n context.dispatch(\r\n \"date/prepareSelectableDates\",\r\n { periodStart, periodEnd },\r\n { root: true }\r\n );\r\n },\r\n createOrder: context => {\r\n const passengers = context.rootGetters[\"passenger/getPassengers\"].map(\r\n passenger => {\r\n return {\r\n passengerTypeId: passenger.passengerType.id,\r\n passengerTypeCount: passenger.count\r\n };\r\n }\r\n );\r\n const product = context.rootGetters[\"order/getDetails\"].product;\r\n const validFromInstance =\r\n context.rootGetters[\"date/getDepartureDateAsMoment\"];\r\n\r\n if (!product) throw new Error(\"cannot create order without a product\");\r\n\r\n return createOrder(passengers, product.id, validFromInstance)\r\n .then(response => {\r\n if (!response.ok) throw new Error(JSON.stringify(response));\r\n return response.responseBody;\r\n })\r\n .then(({ orderId, priceOre, ...details }) => {\r\n context.commit(\"order/setOrderId\", orderId, { root: true });\r\n context.commit(\"order/setPriceOre\", priceOre, { root: true });\r\n context.commit(\r\n \"order/setDetails\",\r\n {\r\n ...details,\r\n product,\r\n validFrom: makeUtcDate(details.validFromInstant),\r\n validTo: makeUtcDate(details.validToInstant)\r\n },\r\n { root: true }\r\n );\r\n });\r\n }\r\n};\r\n","module.exports = __webpack_public_path__ + \"static/img/applepay.e062e61b.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"root\"},[_c('img',{class:{ spinner: true, small: _vm.small },attrs:{\"src\":_vm.image,\"alt\":\"Loading\",\"aria-label\":\"Loading\"}}),(_vm.message)?_c('div',{staticClass:\"message\"},[_vm._v(\"\\n \"+_vm._s(_vm.message)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n
\r\n {{ message }}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Spinner.vue?vue&type=template&id=27d38948&scoped=true&\"\nimport script from \"./Spinner.vue?vue&type=script&lang=js&\"\nexport * from \"./Spinner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Spinner.vue?vue&type=style&index=0&id=27d38948&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27d38948\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{attrs:{\"src\":_vm.image,\"alt\":_vm.alt}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorImage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorImage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ErrorImage.vue?vue&type=template&id=1dca16c9&\"\nimport script from \"./ErrorImage.vue?vue&type=script&lang=js&\"\nexport * from \"./ErrorImage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{staticClass:\"logo\",attrs:{\"src\":_vm.image,\"alt\":\"Midttrafik\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Logo.vue?vue&type=template&id=40ecd867&scoped=true&\"\nimport script from \"./Logo.vue?vue&type=script&lang=js&\"\nexport * from \"./Logo.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logo.vue?vue&type=style&index=0&id=40ecd867&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40ecd867\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.breadcrumbs)?_c('nav',{attrs:{\"aria-label\":\"breadcrumb\"}},[_c('ol',{staticClass:\"list\"},_vm._l((_vm.breadcrumbs),function(crumb){return _c('li',{key:crumb.step},[_c('a',{attrs:{\"href\":crumb.route.path},on:{\"click\":function($event){$event.preventDefault();return _vm.navigate(crumb)}}},[_vm._v(_vm._s(crumb.title))])])}),0)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Breadcrumb.vue?vue&type=template&id=6e8beb75&scoped=true&\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=js&\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Breadcrumb.vue?vue&type=style&index=0&id=6e8beb75&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e8beb75\",\n null\n \n)\n\nexport default component.exports","import Spinner from \"./components/elements/Spinner\";\r\nimport ErrorImage from \"./components/elements/ErrorImage\";\r\nimport Logo from \"./components/elements/Logo\";\r\nimport Breadcrumb from \"./components/elements/Breadcrumb\";\r\n\r\nexport default {\r\n spinner: Spinner,\r\n logo: Logo,\r\n \"error-image\": ErrorImage,\r\n breadcrumb: Breadcrumb\r\n};\r\n","export default {\"loading_message\":{\"flow_loading_searching_trips\":\"Fetching departures...\",\"flow_loading_creating_order\":\"Fetching information...\",\"flow_loading_claiming_order\":\"Preparing ticket...\",\"flow_loading_claiming_payment\":\"Preparing...\",\"flow_loading_confirming_order\":\"Fetching ticket...\",\"flow_loading_confirming_payment\":\"Registering your payment...\"},\"product_zone_ticket\":{\"title\":\"Single ticket\",\"info\":\"Valid for Midtrafik buses, Letbanen and Midtjyske Jernbaner. Not valid in DSB and Arriva trains.\"},\"product_dsbstandard_ticket\":{\"title\":\"Single ticket\",\"service_standard\":\"Standard\",\"service_dsb1\":\"DSB 1`\"},\"product_dsbseat_ticket\":{\"title\":\"Seat ticket\"},\"product_orange_ticket\":{\"title\":\"Orange ticket\",\"refundable\":\"Can be refunded\",\"non_refundable\":\"Cannot be refunded\"},\"product_time_ticket\":{\"title\":\"Time ticket\"},\"product_retiree_ticket\":{\"title\":\"Senior card\"},\"field_customer_name\":{\"label\":\"Traveler’s first and last name\",\"error_required\":\"Name must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_delivery_name\":{\"label\":\"First and last name\",\"error_required\":\"Name must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_delivery_address\":{\"label\":\"Address\",\"error_required\":\"Address must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_delivery_city\":{\"label\":\"City\",\"error_required\":\"City must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_delivery_zip\":{\"label\":\"Postal code\",\"error_required\":\"Postal code must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_delivery_country\":{\"label\":\"Country\",\"error_required\":\"Country must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_phone\":{\"label\":\"Mobile number\",\"error_required\":\"Mobile number must be entered\"},\"field_customer_email\":{\"label\":\"Email\",\"error_required\":\"Enter an email address\",\"error_email_invalid\":\"The email address is not the correct form\",\"error_email_mismatch\":\"The two email addresses are not identical\",\"error_invalid_chars\":\"May not contain {invalidChars}\"},\"field_customer_email_confirm\":{\"label\":\"Repeat email\"},\"field_customer_identification\":{\"label\":\"Choose ID\",\"error_required\":\"State a type of ID\"},\"field_customer_control_numbers\":{\"label_last\":\"Last {count} digits of ID\",\"label_first\":\"First {count} digits of ID\",\"error_required\":\"The space must be filled in\",\"error_control_numbers_invalid\":\"This space should only contain {count} digits\",\"error_control_numbers_length_first\":\"Fill only the first {count} digits of ID\",\"error_control_numbers_length_last\":\"Fill only the last {count} digits of ID\"},\"field_customer_terms_accept\":{\"default_label\":\"Accept terms and conditions\",\"required\":\"You must accept the terms and conditions\"},\"field_customer_delivery_terms_accept\":{\"default_label\":\"Accept terms and conditions\",\"required\":\"You must accept the terms and conditions\"},\"field_customer_newsletter_accept\":{\"default_label\":\"Receive newsletter\"},\"field_date_time\":{\"label\":\"Departure date\",\"error\":\"This ticket is not valid on the chosen date\",\"time\":\"Time\",\"now\":\"Now\"},\"field_passenger\":{\"label\":\"Number of travellers\",\"error\":\"The number of passengers must be at least 1\"},\"free_children_tickets\":{\"info\":\"(read about free children tickets)\",\"link\":\"https://www.midttrafik.dk/kundeservice/rejseregler-bus-letbanen-og-midtjyske-jernbaner/tidsgyldighed-og-aldersgraenser/\"},\"field_stop_location_from\":{\"label\":\"From\",\"error_duplicate\":\"Stops cannot be the same\"},\"field_stop_location_via\":{\"label\":\"Via\",\"error_duplicate\":\"Stops cannot be the same\"},\"field_stop_location_to\":{\"label\":\"To\",\"error_duplicate\":\"Stops cannot be the same\"},\"field_retiree_date_range\":{\"from_label\":\"Valid from\",\"to_label\":\"Valid to\",\"from_placeholder\":\"Start date\",\"to_placeholder\":\"Expiration date\"},\"field_fee_number\":{\"label\":\"Fee number\",\"error_required\":\"Fee number must be entered\",\"error_invalid_chars\":\"May not contain {invalidChars}\",\"error_fee_number_length\":\"Fee number is too short\",\"error_fee_number_invalid\":\"Fee number is invalid\"},\"selector_stoplocation\":{\"placeholder\":\"Choose stop\",\"searching\":\"Searching\",\"search_string_too_long\":\"Search string is too long\",\"no_result\":\"No stops found\",\"search_hint\":\"Search for a stop name\",\"popular\":\"Popular\",\"search_result_title\":\"Search result\",\"geo_button_title\":\"Show my position\"},\"selector_timespan\":{\"time\":\"Time\",\"now\":\"Now\",\"departure\":\"Departure\",\"arrival\":\"Arrival\"},\"selector_locale_text\":{\"label\":\"Language:\",\"datitle\":\"Dansk\",\"detitle\":\"Deutsch\",\"entitle\":\"English\"},\"block_delivery_information\":{\"control_numbers\":\"Last {count} digits of ID\",\"control_numbers_first\":\"First {count} digits of ID\",\"delivery_form\":\"Type of delivery\",\"delivery_email\":\"Self-print ticket\",\"delivery_snailmail\":\"Printed card sent by mail\",\"delivery_address\":\"Send to\",\"email\":\"Email\",\"chosen_id\":\"ID to be presented\",\"name\":\"Your name\",\"newsletter\":\"Yes, please send me discounts and great offers by email\",\"description_email\":\"We will send your ticket and your order confirmation to your email address. Remember to bring the above ID on your trip in order for your ticket to be valid!\",\"description_snailmail\":\"We will send your card to the above address. You will receive a receipt on your email.\"},\"block_travel_information\":{\"product_type\":\"Ticket\",\"number_of_travelers\":\"Number of travellers\",\"valid_from\":\"Valid from\",\"valid_to\":\"Valid to\",\"number_of_days\":\"Number of days\",\"validity_period_info_title\":\"Validity period\",\"validity_period_info\":\"Choose when your card should be valid from and until. You can expect up to 14 days delivery time (longer time during periods of public holidays). Therefore, you can choose your start date from 14 days onwards at the earliest.\",\"day\":\"day\",\"days\":\"days\",\"date\":\"Date\",\"date_payment\":\"Date for payment\",\"fee_number\":\"Fee number\",\"fee_date\":\"Fee date\",\"description\":\"Description\",\"validity\":\"Validity\",\"from\":\"From\",\"via\":\"Via\",\"to\":\"To\",\"from_zone\":\"Start zone\",\"via_zone\":\"Via zone\",\"to_zone\":\"Destination zone\",\"total_zones\":\"Number og zones\",\"total_price\":\"Total\",\"departure\":\"Departure\",\"arrival\":\"Arrival\",\"all_day\":\"all day\",\"travellers\":\"Travellers\",\"delivery\":\"Delivery\"},\"block_fixedprice_ticket_product_information\":{\"price\":\"Price\",\"valid_period_part_one\":\"Valid for\",\"valid_period_part_two\":\"in the period\",\"valid_whole_day\":\"Valid a whole day in the period\",\"information\":\"Information about the ticket\",\"valid\":\"Validity\"},\"page_order_confirmed\":{\"title\":\"Thank you for your purchase\",\"title_controlfee\":\"Your inspection fee has now been paid\",\"email\":\"We have sent you an email with order confirmation and your ticket\",\"snailmail\":\"We have sent you an email with order confirmation\",\"controlfee\":\"We have sent you a receipt for the completion of payment for the inspection fee to the provided email.\",\"download_ticket\":\"Download ticket\"},\"page_not_found\":{\"title\":\"Ops! This page does not exists\",\"description\":\"If you need help, you can contact customer service at +45 70 210 230.\",\"button\":\"Search for a new trip\"},\"page_payment\":{\"title\":\"Payment method\",\"product_information_title\":\"Order details\",\"error_title\":\"Could not process payment\",\"error_code\":\"Error code\",\"retry\":\"Try again\",\"processing\":\"Processing payment...\"},\"modal_error\":{\"title\":\"We are sorry, an error has occured\",\"description\":\"Please try again, or contact customer service at +45 70 210 230.\",\"restart\":\"Restart\",\"close\":\"OK\",\"details\":\"Technical details\"},\"modal_error_no_trip\":{\"title\":\"Sorry!\",\"description\":\"No ticket could be issued for this journey. Please try again, or please contact customer service.\",\"close\":\"Search for a new trip\"},\"modal_error_trip_not_available\":{\"title\":\"Sorry!\",\"description\":\"It is too late to purchase tickets for this trip. Select another departue, or please contact customer service.\",\"close\":\"Select departure\"},\"modal_error_ticket_not_sellable\":{\"title\":\"Sorry!\",\"description\":\"It is no longer possible to purchase this ticket. Please try again, or please contact customer service.\",\"close\":\"Search for a new trip\"},\"modal_error_no_seats_available\":{\"title\":\"Sorry!\",\"description\":\"Not enough seattickes are available. Please try again, or please contact customer service.\",\"close\":\"Try again\"},\"modal_error_service_unavailable\":{\"title\":\"We are sorry, an error has occured\",\"description\":\"Our service is currently unavailable. Please try again in a moment.\",\"close\":\"Try again\"},\"modal_error_seat_leg_without_seat\":{\"title\":\"Sorry!\",\"description\":\"It is unfortunately not possible to issue a ticket with seating for this trip. Please purchase a ticket without seating and buy a seat ticket separately at DSB.\",\"close\":\"Søg ny rejse\"},\"modal_error_connection_failed\":{\"title\":\"We are sorry, an error has occured\",\"description\":\"There was a problem connecting to our servers. Please check your internet connection, and try again.\"},\"modal_content_page\":{\"title\":\"Ops! This page does not exists\",\"description\":\"If you need help, you can contact customer service at +45 70 210 230.\"},\"filter_passenger\":{\"choose_travellers\":\"Choose travellers\"},\"filter_moment\":{\"days\":\"days\",\"day\":\"day\",\"minutes\":\"minutes\",\"minute\":\"minute\",\"hours\":\"hours\",\"hour\":\"hour\"},\"block_header\":{\"menu\":\"Menu\",\"privacy_policy\":\"Privacy policy\",\"to_main_page\":\"Goto Midttrafik\"},\"block_footer\":{\"customer_center\":\"Midttrafik customer service\",\"phone\":\"Phone +45 70 210 230\",\"se_opening_hours\":\"Show opening hours\",\"accessibility_statement\":\"Accessibility statement\",\"payment_options\":\"Payment options\",\"get_app\":\"Download Midttrafik ticketapp\",\"get_app_apple\":\"Download app in Apple App Store\",\"get_app_google\":\"Download app in Google Play Store\"},\"block_fixedprice_product_card\":{\"button\":\"Buy ticket →\"},\"page_new_zone_ticket\":{\"title\":\"Buy zone tickets\",\"next_step_button\":\"Search for trip →\",\"add_via\":\"Add via stop\",\"goto_all_products\":\"Show all other products →\",\"airport_warning\":\"Tickets for route 925X are available at special rates and must be purchased via the menu item “Buy other tickets”\"},\"page_new_fixed_price_ticket\":{\"title\":\"Buy other tickets\",\"buttonBuy\":\"Buy ticket\",\"buttonFree\":\"Free ticket\"},\"page_retiree_products\":{\"title\":\"Buy senior card\",\"description\":\"If you are +67 years old or an early retiree, you can buy a printed senior card on cardboard, which is valid throughout your municipality. Click on your municipality to read what applies to you.\",\"select_municipality\":\"Select municipality\"},\"page_new_retiree_ticket\":{\"title\":\"Buy senior card\",\"product_information_title\":\"You are about to buy\",\"validity_span_title\":\"Validity period\",\"validity_span_description\":\"Choose when your card should be valid from and until. You can expect up to 14 days delivery time (longer time during periods of public holidays). Therefore, you can choose your start date from 14 days onwards at the earliest.\",\"product_variant_title\":\"Product\",\"next_step_button\":\"Continue\"},\"page_fixed_price_products\":{\"title\":\"Buy other tickets\",\"description\":\"Midttrafik has special offers for you who are traveling with family, a trip from east to west in the Central Jutland region or by bus to the airport in Aarhus or Billund.\"},\"page_customer_information\":{\"title\":\"Fill in information\",\"product_information_title\":\"You are about to buy\",\"product_information_title_payment\":\"You are about to pay for\",\"identification_title\":\"Presentation of ID\",\"identification_description\":\"One of the travellers must show ID during the trip in order for the ticket to be valid\",\"identification_link\":\"read why\",\"contact_title\":\"Customer information\",\"contact_description_email\":\"You can either print the ticket or display your ticket on your smartphone. You will receive your ticket as a pdf at your email address.\",\"contact_description_snailmail\":\"Please enter the traveler’s full name below. We will send you a receipt for your purchase on your email. Therefore, please enter your email below. If you do not have an email, please ask a good friend or family member, if you can use their email.\",\"contact_description_controlfee\":\"Please enter full name and email below. We will send a receipt to the email. The payment is considered completed when you have recieved the reciept.\",\"delivery_title\":\"Where should we send your card?\",\"delivery_description\":\"We will print and send your senior card by mail. You can expect up to {days} days of delivery. Enter your name and delivery address below.\",\"next_step_button\":\"Continue\"},\"page_confirm_basket\":{\"title\":\"Approve your order\",\"title_payment\":\"Confirm payment and terms of payment\",\"confirm_button_part_one\":\"I accept\",\"confirm_button_part_one_controlfee\":\"I have read and accept\",\"confirm_button_part_two\":\"of Midttrafik webshop.\",\"confirm_button_part_two_controlfee\":\"of Midttrafik inspection fee.\",\"confirm_button_link\":\"the terms\",\"confirm_button_link_controlfee\":\"the terms of payment\",\"confirm_button_part_three\":\"to complete my purchase\",\"confirm_privacy_policy_text\":\"See how your personal information is processed in Midttrafik's\",\"confirm_button_privacy_link\":\"privacy policy\",\"delivery_terms\":\"I accept that Midttrafik withdraws the payment from my payment card before the item is shipped because my senior card is personal and personalized with my personal information.\",\"delivery_terms_note\":\"*If you are ordering a card for Horsens, you have to accept the above. However, you have not provided payment card information and your card will not be deducted.\",\"retiree_ticket_bullets\":[\"Your senior card is without a picture. Therefore, always bring your ID when traveling: Passport, drivers license or health insurance card.\",\"If you are an early retiree, you must bring documentation when travelling: A valid retirement statement or ID card issued by DSB or your municipality.\",\"If you have renewed your senior card, you must replace both previous cards each time. This must be done as the control code at the bottom of both cards must be identical.\"],\"next_step_button\":\"Payment card or Mobilepay\",\"product_information_title\":\"You are about to buy\",\"message_accept_terms\":\"Please accept terms & conditions to continue\",\"message_payment_method\":\"Choose payment method\",\"approve_and_go_to_payment\":\"Approve and go to payment\",\"approve_and_go_to_free_payment\":\"Receive free ticket\"},\"page_controlfee\":{\"title\":\"Inspection fee\",\"description\":\"Fee number\",\"type_your_fee_number\":\"Type your fee number\",\"next_step_button\":\"Continue\",\"customerinfo\":{\"description\":\"The decision will be sent to you via digital post or by letter.\"}},\"modal_no_trip\":{\"help\":\"Please try again, or contact customer service at +45 70 210 230.\"},\"product_controlfee\":{\"title\":\"Payment of inspection fee\",\"description\":\"You are about to pay for inspection fee\",\"fee\":\"Fee number\"}}","import { callApi } from \"@/api/api-core\";\r\nimport moment from \"moment-timezone\";\r\n\r\nexport const fetchInfo = function (ownerHandlesFailure) {\r\n return callApi(\r\n \"POST\",\r\n \"v1/products/controlfee/info\",\r\n {},\r\n ownerHandlesFailure\r\n );\r\n};\r\nexport const getPriceAndDate = function (\r\n referenceNumber,\r\n ownerHandlesFailure\r\n) {\r\n\r\n const requestData = {\r\n referenceNumber\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/products/controlfee/get\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const createOrder = function (\r\n referenceNumber,\r\n productVariantId,\r\n ownerHandlesFailure\r\n) {\r\n\r\n const requestData = {\r\n salesChannelIdentifier: \"Webshop\",\r\n productVariantId,\r\n referenceNumber\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/products/controlfee/order\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n","import { fetchInfo, createOrder, getPriceAndDate } from \"@/api/modules/products/controlFees\";\r\nimport { invalidChars } from \"@/utilities/chars\";\r\n\r\nimport { makeUtcDate } from \"@/utilities/time\";\r\n\r\nfunction initialState() {\r\n return {\r\n feeNumber: null,\r\n feeNumberExists: true,\r\n feeDate: null\r\n };\r\n}\r\n\r\nfunction getNumberError(_state, getters, _rootState, rootGetters) {\r\n var value = state.feeNumber;\r\n if (!value) return ERROR_REQUIRED;\r\n\r\n /* Validation disabled for now, might be needed later */\r\n // if (getNumberInvalidChars(_state, getters, _rootState, rootGetters).length > 0) return ERROR_INVALID_CHARS;\r\n\r\n // if (5 > value.length) {\r\n // return ERROR_FEE_NUMBER_LENGTH;\r\n // }\r\n if (!state.feeNumberExists) {\r\n return ERROR_FEE_NUMBER_INVALID;\r\n }\r\n\r\n return null;\r\n}\r\nfunction getNumberInvalidChars(_state, getters, _rootState, rootGetters) {\r\n return [];\r\n /* Disabled for now by Midttrafik due to different format, might be needed in the future: \r\n\r\n return invalidChars(state.feeNumber, rootGetters[\"system/alphaNumericCharacterSet\"]);\r\n \r\n */\r\n}\r\nconst InfoModel = function (info) {\r\n this.identifier = info.productTypeIdentifier;\r\n this.products = new ProductModel(info.product, this.identifier);\r\n};\r\nconst ProductModel = function (productData, identifier) {\r\n this.type = identifier;\r\n};\r\n\r\nexport const ERROR_REQUIRED = \"error_required\";\r\nexport const ERROR_INVALID_CHARS = \"error_invalid_chars\";\r\nexport const ERROR_FEE_NUMBER_INVALID = \"error_fee_number_invalid\";\r\nexport const ERROR_FEE_NUMBER_LENGTH =\r\n \"error_fee_number_length\";\r\n\r\nexport const state = initialState();\r\n\r\nexport const mutations = {\r\n setNumber: (state, number) => {\r\n state.feeNumber = number;\r\n state.feeNumberExists = true\r\n },\r\n setFeeDate: (state, date) => {\r\n state.feeDate = date;\r\n },\r\n updateInfo: (state, payload) => {\r\n state.info = new InfoModel(payload.info);\r\n },\r\n updateFeeNumberExists: (state, payload) => {\r\n state.feeNumberExists = payload;\r\n }\r\n};\r\n\r\nexport const getters = {\r\n getNumber: state => state.feeNumber,\r\n getFeeDate: state => state.feeDate,\r\n getNumberInvalidChars,\r\n getNumberError\r\n};\r\n\r\nexport const actions = {\r\n fetchInfo: context => {\r\n return fetchInfo(true)\r\n .then(response => {\r\n if (!response.ok) throw new Error(response.responseBody);\r\n return response.responseBody;\r\n })\r\n .then(response => {\r\n context.commit(\"updateInfo\", { info: response });\r\n });\r\n },\r\n feeExsist: (context, { feeNumber }) => {\r\n return getPriceAndDate(feeNumber)\r\n .then(response => {\r\n return response.responseBody.exists;\r\n })\r\n },\r\n prepareOrder: (context, { product }) => {\r\n if (!product)\r\n throw new Error(\r\n \"cannot prepare fixed price ticket order without a product\"\r\n );\r\n\r\n const serverTime = makeUtcDate(\r\n context.rootGetters.getServerDateAsMoment\r\n );\r\n product.date = serverTime;\r\n\r\n const feeNumber = context.rootGetters[\"products/controlfee/getNumber\"];\r\n return getPriceAndDate(feeNumber)\r\n .then(response => {\r\n if (!response.ok) throw new Error(response.responseBody);\r\n return response.responseBody;\r\n })\r\n .then(response => {\r\n if (!response.exists) throw new Error(response);\r\n\r\n context.commit(\"order/setPriceOre\", response.price, { root: true });\r\n context.commit(\"order/setDetails\", { product }, { root: true });\r\n context.commit(\"products/controlfee/setFeeDate\", response.feeDate, { root: true });\r\n context.commit(\"order/setDeliveryMethod\", \"controlfee\", { root: true });\r\n });\r\n },\r\n createOrder: context => {\r\n const product = context.rootGetters[\"order/getDetails\"].product;\r\n const feeNumber = context.rootGetters[\"products/controlfee/getNumber\"];\r\n\r\n if (!product) throw new Error(\"cannot create order without a product\");\r\n\r\n return createOrder(feeNumber, product.id).then(response => {\r\n if (!response.ok) throw new Error(JSON.stringify(response));\r\n return response.responseBody;\r\n })\r\n .then(response => {\r\n context.commit(\"order/setOrderId\", response.orderId, { root: true });\r\n context.commit(\"order/setPriceOre\", response.priceOre, { root: true });\r\n context.commit(\r\n \"order/setDetails\",\r\n {\r\n product\r\n },\r\n { root: true }\r\n );\r\n });\r\n }\r\n};\r\n","import Vue from \"vue\";\r\nimport VueI18n from \"vue-i18n\";\r\nimport store from \"@/store\";\r\nimport moment from \"moment-timezone\";\r\n\r\nVue.use(VueI18n);\r\n\r\nconst fallbackLocale = \"da\";\r\nconst availableLanguages = JSON.parse(process.env.VUE_APP_AVAILABLE_LANGUAGES);\r\nconst loadedLanguages = [];\r\n\r\nfunction setI18nLanguage(lang) {\r\n i18nInstance().locale = lang;\r\n moment.locale(lang);\r\n document.querySelector(\"html\").setAttribute(\"lang\", lang);\r\n store.commit(\"date/forceDateUpdate\");\r\n return lang;\r\n}\r\n\r\nfunction loadLanguage(lang, langModulePromise) {\r\n return langModulePromise\r\n .then(langModule => {\r\n return langModule.default;\r\n })\r\n .then(messages => {\r\n i18nInstance().setLocaleMessage(lang, messages);\r\n loadedLanguages.push(lang);\r\n return setI18nLanguage(lang);\r\n });\r\n}\r\n\r\nfunction navigatorLocale() {\r\n try {\r\n const locale = (navigator.language || navigator.userLanguage).split(\r\n \"-\"\r\n )[0];\r\n\r\n if (locale) {\r\n if (availableLanguages.includes(locale)) {\r\n return locale;\r\n } else if (availableLanguages.includes(\"en\")) {\r\n return \"en\";\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\nfunction cookieLocale() {\r\n try {\r\n const locale = Vue.$cookies.get(\"locale\");\r\n return availableLanguages.includes(locale) ? locale : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\nfunction saveLocale(locale) {\r\n Vue.$cookies.set(\"locale\", locale, Infinity);\r\n}\r\n\r\nfunction defaultLocale() {\r\n const localeFromCookie = cookieLocale();\r\n const localeFromNavigator = navigatorLocale();\r\n return localeFromCookie || localeFromNavigator || fallbackLocale;\r\n}\r\n\r\nlet instance;\r\nexport const i18nInstance = () => {\r\n if (!instance) {\r\n instance = new VueI18n({\r\n locale: defaultLocale(),\r\n fallbackLocale,\r\n messages: {}\r\n });\r\n }\r\n return instance;\r\n};\r\n\r\nexport function loadLanguageAsync(lang, storeInCookie = false) {\r\n if (!availableLanguages.includes(lang)) {\r\n return Promise.resolve(i18nInstance().locale);\r\n }\r\n\r\n if (storeInCookie) {\r\n try {\r\n saveLocale(lang);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n if (i18nInstance().locale === lang) {\r\n return Promise.resolve(lang);\r\n }\r\n\r\n if (loadedLanguages.includes(lang)) {\r\n return Promise.resolve(setI18nLanguage(lang));\r\n }\r\n\r\n // Import is a Webpack function which can dynamically determine which files to load, and include in a bundle.\r\n // Chunkname is used to specify what the language file will be called when build occurs\r\n // For this to work it is important that the folder importet has no children or unrelated files in it\r\n // Otherwise webpack will have to bundle them all which is a waste\r\n\r\n // We use [request] which import/dynamic-import-chunkname does not support\r\n // eslint-disable-next-line import/dynamic-import-chunkname\r\n return loadLanguage(\r\n lang,\r\n import(\r\n /* webpackChunkName: \"lang-[request]\", webpackMode: \"lazy\" */ `@/i18n/languages/${lang}`\r\n )\r\n );\r\n}\r\n\r\nexport default function() {\r\n // Eager load danish as the default language, no chunk should be created\r\n const locale = i18nInstance().locale;\r\n\r\n return loadLanguage(\r\n locale,\r\n import(\r\n /* webpackChunkName: \"lang-default\", webpackMode: \"eager\" */ `@/i18n/languages/${locale}`\r\n )\r\n );\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('header',[_c('block-header')],1),_c('main',{ref:\"main\",attrs:{\"tabindex\":\"-1\"}},[(_vm.loading)?_c('div',{staticClass:\"loading\",attrs:{\"aria-label\":\"loading\",\"role\":\"alert\",\"tabindex\":\"-1\"}},[_c('spinner',{attrs:{\"message\":_vm.loadingMessage}})],1):_vm._e(),(_vm.bootstrapped)?_c('div',[_c('router-view',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],key:_vm.$route.fullPath,on:{\"loading\":_vm.onLoading}})],1):_vm._e(),_vm._t(\"default\")],2),_c('footer',[_c('block-footer')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('block-section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"identity\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('logo')],1)],1),(_vm.testMode)?_c('div',{staticClass:\"testMode\"},[_vm._v(\"\\n Test 2.0 mode\\n \")]):(_vm.stagingMode)?_c('div',{staticClass:\"testMode\"},[_vm._v(\"\\n Staging 2.0 mode\\n \")]):_vm._e(),_c('div',{staticClass:\"menu-toggle\"},[_c('button',{class:{\n 'menu-toggle-button': true,\n open: _vm.menuOpen\n },attrs:{\"aria-controls\":\"navigation\",\"aria-expanded\":_vm.menuOpen ? 'true' : 'false'},on:{\"click\":function($event){_vm.menuOpen = !_vm.menuOpen}}},[_c('span',{staticClass:\"bars\"},[_c('span'),_c('span'),_c('span'),_c('span')]),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"block_header.menu\")))])])]),_c('div',{staticClass:\"navigation\",attrs:{\"id\":\"navigation\"}},[_c('div',{class:{\n menus: true,\n open: _vm.menuOpen,\n 'not-open': !_vm.menuOpen\n }},[_c('nav',{staticClass:\"main-menu-nav\",attrs:{\"aria-label\":\"main menu\"}},[_c('ul',{staticClass:\"main-menu\"},[_c('li',{class:{\n active: _vm.currentFlowType === _vm.zoneTicketType\n }},[_c('router-link',{attrs:{\"to\":_vm.paths.newZoneTicket}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"page_new_zone_ticket.title\"))+\"\\n \")])],1),_c('li',{class:{\n active:\n _vm.currentFlowType === _vm.retireeTicketType\n }},[_c('router-link',{attrs:{\"to\":_vm.paths.retireeProducts}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"page_retiree_products.title\"))+\"\\n \")])],1),_c('li',{class:{\n active:\n _vm.currentFlowType === _vm.fixedPriceTicketType\n }},[_c('router-link',{attrs:{\"to\":_vm.paths.fixedPriceProducts}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"page_new_fixed_price_ticket.title\"))+\"\\n \")])],1),_c('li',{class:{\n active:\n _vm.currentFlowType === _vm.controlFeeType\n }},[_c('router-link',{attrs:{\"to\":_vm.paths.controlfee}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"page_controlfee.title\"))+\"\\n \")])],1)])]),_c('nav',{staticClass:\"secondary-menu-nav\",attrs:{\"aria-label\":\"secondary menu\"}},[_c('ul',{staticClass:\"secondary-menu\"},[_c('li',[_c('a',{attrs:{\"href\":\"https://www.midttrafik.dk/\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"block_header.to_main_page\")))])]),_c('li',[_c('a',{attrs:{\"href\":\"https://www.midttrafik.dk/kundeservice/privatlivspolitik/\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t(\"block_header.privacy_policy\")))])]),_c('li',[_c('selector-locale')],1)])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Test 2.0 mode\r\n
\r\n
\r\n Staging 2.0 mode\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","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockHeader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockHeader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BlockHeader.vue?vue&type=template&id=63b2aa2e&scoped=true&\"\nimport script from \"./BlockHeader.vue?vue&type=script&lang=js&\"\nexport * from \"./BlockHeader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BlockHeader.vue?vue&type=style&index=0&id=63b2aa2e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63b2aa2e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('block-section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"contact\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"block_footer.customer_center\"))+\"\\n \")]),_c('div',[_vm._v(\"Fredensgade 45\"),_c('br'),_vm._v(\"8000 Aarhus C\")]),_c('div',{staticClass:\"title phone\"},[_vm._v(_vm._s(_vm.$t(\"block_footer.phone\")))]),_c('div',[_c('a',{staticClass:\"textlink\",attrs:{\"target\":\"_blank\",\"href\":\"https://www.midttrafik.dk/kundeservice/kontakt-os/\"}},[_vm._v(_vm._s(_vm.$t(\"block_footer.se_opening_hours\")))])]),_c('div',[_c('a',{staticClass:\"textlink\",attrs:{\"target\":\"_blank\",\"href\":\"https://www.was.digst.dk/webshop-midttrafik-dk\"}},[_vm._v(_vm._s(_vm.$t(\"block_footer.accessibility_statement\")))])])]),_c('div',{staticClass:\"payment\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"block_footer.payment_options\"))+\"\\n \")]),_c('div',{staticClass:\"options\"},[_c('img',{attrs:{\"src\":_vm.applePay,\"alt\":\"Apple Pay\"}}),_c('img',{attrs:{\"src\":_vm.dankort,\"alt\":\"Dankort\"}}),_c('img',{attrs:{\"src\":_vm.mobilepay,\"alt\":\"MobilePay\"}}),_c('img',{attrs:{\"src\":_vm.mastercard,\"alt\":\"Mastercard Express\"}}),_c('img',{attrs:{\"src\":_vm.maestro,\"alt\":\"Maestro\"}}),_c('img',{attrs:{\"src\":_vm.visa,\"alt\":\"Visa\"}}),_c('img',{attrs:{\"src\":_vm.diners,\"alt\":\"Diners\"}}),_c('img',{attrs:{\"src\":_vm.jcb,\"alt\":\"JCB\"}}),_c('img',{attrs:{\"src\":_vm.americanExpress,\"alt\":\"American Express\"}})])]),_c('div',{staticClass:\"apps\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t(\"block_footer.get_app\")))]),_c('div',{staticClass:\"options\"},[_c('div',[_c('a',{attrs:{\"href\":\"https://apps.apple.com/dk/app/midttrafik/id1101101559\",\"alt\":_vm.$t('block_footer.get_app_apple'),\"target\":\"_blank\"}},[_c('img',{attrs:{\"src\":_vm.store_apple,\"alt\":\"Apple App Store\"}})])]),_c('div',[_c('a',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=dk.midttrafik.mobilbillet\",\"alt\":\"$t('block_footer.get_app_google')\",\"target\":\"_blank\"}},[_c('img',{attrs:{\"src\":_vm.store_google,\"alt\":\"Google Play Store\"}})])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalError.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalError.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalError.vue?vue&type=template&id=1c0b10c8&scoped=true&\"\nimport script from \"./ModalError.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalError.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalError.vue?vue&type=style&index=0&id=1c0b10c8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c0b10c8\",\n null\n \n)\n\nexport default component.exports","\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Bootstrap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./Bootstrap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Bootstrap.vue?vue&type=template&id=288be1be&scoped=true&\"\nimport script from \"./Bootstrap.vue?vue&type=script&lang=js&\"\nexport * from \"./Bootstrap.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"288be1be\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport Router from \"vue-router\";\r\nimport Cookies from \"vue-cookies\";\r\nimport store from \"@/store\";\r\nimport { loadLanguageAsync, i18nInstance } from \"@/i18n\";\r\n\r\nimport {\r\n FLOW_STEP_PAYMENT,\r\n FLOW_STEP_CONFIRM_ORDER,\r\n FLOW_STEP_ORDER_CONFIRMED\r\n} from \"@/store/modules/flow\";\r\n\r\nconst PageNotFound = () =>\r\n import(/* webpackChunkName: \"page-not-found\" */ \"@/pages/PageNotFound.vue\");\r\nconst PagePayment = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-order-details\" */ \"@/pages/PagePayment\"\r\n );\r\nconst PageConfirmOrder = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-order-confirmed\" */ \"@/pages/PageConfirmOrder\"\r\n );\r\nconst PageOrderConfirmed = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-orderconfirmed\" */ \"@/pages/PageOrderConfirmed\"\r\n );\r\n\r\nVue.use(Router);\r\nVue.use(Cookies);\r\n\r\nconst paths = require(\"./paths\");\r\n\r\nconst defaultRoutes = [\r\n {\r\n path: paths.payment,\r\n name: \"page_payment\",\r\n component: PagePayment,\r\n meta: {\r\n flowStep: FLOW_STEP_PAYMENT\r\n }\r\n },\r\n {\r\n path: paths.confirmOrder,\r\n name: \"page_confirm_order\",\r\n component: PageConfirmOrder,\r\n meta: {\r\n flowStep: FLOW_STEP_CONFIRM_ORDER\r\n }\r\n },\r\n {\r\n path: paths.orderConfirmed,\r\n name: \"page_order_confirmed\",\r\n component: PageOrderConfirmed,\r\n meta: {\r\n flowStep: FLOW_STEP_ORDER_CONFIRMED,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: \"*\",\r\n component: PageNotFound\r\n }\r\n];\r\n\r\n// eslint-disable-next-line import/no-dynamic-require\r\nconst appRoutes = require(`@/apps/${process.env.VUE_APP_NAME}/routes`).default;\r\n\r\nconst routes = [...defaultRoutes, ...appRoutes];\r\n\r\nconst flowToRoute = function(type, step = null) {\r\n if (step) {\r\n return routes.filter(\r\n r =>\r\n r.meta &&\r\n r.meta.flowStep === step &&\r\n (!r.meta.flowType || r.meta.flowType === type)\r\n )[0];\r\n }\r\n\r\n return routes.filter(\r\n r => r.meta && r.meta.flowType === type && !r.meta.flowStep\r\n )[0];\r\n};\r\n\r\nconst router = new Router({\r\n mode: \"history\",\r\n base: process.env.BASE_URL,\r\n routes\r\n});\r\n\r\nrouter.flowToRoute = flowToRoute;\r\n\r\nasync function reset(next, replace = true) {\r\n await store.dispatch(\"flow/resetFlow\");\r\n if (replace) {\r\n next({ path: \"/\", replace: true });\r\n } else {\r\n next();\r\n }\r\n}\r\n\r\n// pulled from index.html\r\nconst defaultTitle = document.title;\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n const inst = i18nInstance();\r\n const title = [defaultTitle];\r\n const key = `${to.name}.title`;\r\n\r\n try {\r\n if (inst.te(key)) {\r\n const pageTitle = inst.t(`${to.name}.title`);\r\n if (pageTitle) title.unshift(pageTitle);\r\n }\r\n } catch (e) {\r\n // do nothing\r\n }\r\n\r\n document.title = title.join(\" - \");\r\n next();\r\n});\r\n\r\nrouter.beforeEach((to, _from, next) => {\r\n // support setting language via lang query params\r\n if (to.query.lang) {\r\n const availableLanguages = JSON.parse(\r\n process.env.VUE_APP_AVAILABLE_LANGUAGES\r\n );\r\n if (availableLanguages.includes(to.query.lang)) {\r\n loadLanguageAsync(to.query.lang);\r\n }\r\n }\r\n\r\n if (to.path === \"/payment/\" && to.query.reference) {\r\n // eslint-disable-next-line no-undef\r\n const state = $cookies.get(`order-${to.query.reference}`);\r\n if (!state) return reset(next);\r\n\r\n loadLanguageAsync(state.locale);\r\n store.commit(\"order/reset\", state.productType);\r\n store.commit(\"order/setOrderId\", state.orderId);\r\n store.commit(\"order/setPriceOre\", state.priceOre);\r\n store.commit(\"order/setDetails\", state.details);\r\n store.commit(\"order/setDeliveryMethod\", state.deliveryMethod);\r\n store.commit(\"flow/continueFlow\", {\r\n type: state.flowType,\r\n step: state.flowStep\r\n });\r\n\r\n let provider = to.query.provider;\r\n store.commit(\"order/setPaymentProvider\", provider);\r\n\r\n\r\n switch (provider) {\r\n case \"Netaxept\":\r\n if (to.query.responseCode === \"Cancel\") return reset(next);\r\n store.commit(\"order/setTransactionId\", to.query.transactionId);\r\n break;\r\n case \"ApplePay\":\r\n store.commit(\"order/setTransactionId\", to.query.transactionId);\r\n break;\r\n case \"Developer\":\r\n if (process.env.VUE_APP_SERVER === \"live\") {\r\n throw new Error(\"Developer provider cannot be used on live environment\");\r\n }\r\n break;\r\n }\r\n\r\n store\r\n .dispatch(\"flow/gotoNextStep\")\r\n .then(step => {\r\n const match = flowToRoute(state.flowType, step);\r\n if (!match) {\r\n throw new Error(\"no match\");\r\n }\r\n next({\r\n path: match.path,\r\n replace: !match.meta.allowReload\r\n });\r\n })\r\n .catch(() => {\r\n next({\r\n path: \"/\",\r\n replace: true\r\n });\r\n });\r\n\r\n return;\r\n }\r\n\r\n // this guard is for ensuring that the matched route matches the flow\r\n // this will reset the flow, if you go back end forward in a flow, where it\r\n // is not allowed\r\n const [flowType, flowStep] = store.getters[\"flow/getFullStep\"];\r\n if (to.matched.length === 1) {\r\n if (flowType && flowStep) {\r\n // check if current step matches flow\r\n const expect = flowToRoute(flowType, flowStep);\r\n if (expect && expect.name !== to.name) {\r\n // if the dest allow reloads, we expect it to handle init flow correctly\r\n // and only resets the current flow without redirects\r\n reset(next, !to.meta.allowReload);\r\n return;\r\n }\r\n }\r\n\r\n if (to.meta.flowStep && !to.meta.allowReload) {\r\n // if no current step, it is a reload or direct access\r\n if (!flowStep) {\r\n reset(next);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n next();\r\n});\r\n\r\nexport default router;\r\n","import moment from \"moment-timezone\";\r\nimport { i18nInstance } from \"@/i18n\";\r\n\r\nconst zeroPadLeft = number => {\r\n if (number.toString().length === 1) {\r\n return \"0\" + number;\r\n } else {\r\n return number;\r\n }\r\n};\r\n\r\nexport default {\r\n install: function(Vue) {\r\n Vue.prototype.$moment = moment;\r\n\r\n Vue.filter(\"momentTime\", function(value) {\r\n return moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"HH:mm\");\r\n });\r\n Vue.filter(\"momentDate\", function(value) {\r\n return moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"D. MMMM YYYY\");\r\n });\r\n Vue.filter(\"momentDateAndTime\", function(value) {\r\n return moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"D. MMMM YYYY HH:mm\");\r\n });\r\n Vue.filter(\"momentMonthYear\", function(value) {\r\n return moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"MMMM YYYY\");\r\n });\r\n Vue.filter(\"momentFull\", function(value) {\r\n return moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"dddd D. MMMM YYYY\");\r\n });\r\n Vue.filter(\"momentFullCapitalFirstLetter\", function(value) {\r\n let full = moment\r\n .utc(value)\r\n .tz(\"Europe/Copenhagen\")\r\n .format(\"dddd D. MMMM YYYY\");\r\n return full.charAt(0).toUpperCase() + full.slice(1);\r\n });\r\n Vue.filter(\"tripTravelTime\", function(trip) {\r\n const fromDate = moment.utc(trip.departureInstant);\r\n const toDate = moment.utc(trip.arrivalInstant);\r\n const minuteDiff = toDate.diff(fromDate, \"minutes\");\r\n const hourDuration = Math.floor(minuteDiff / 60);\r\n const minuteDuration = minuteDiff % 60;\r\n return [\r\n zeroPadLeft(hourDuration),\r\n zeroPadLeft(minuteDuration)\r\n ].join(\":\");\r\n });\r\n Vue.filter(\"minuteToNiceString\", value => {\r\n const txts = i18nInstance().t(\"filter_moment\");\r\n\r\n let minutes = value;\r\n let days = Math.floor(minutes / 60 / 24);\r\n minutes = minutes - days * 24 * 60;\r\n let hours = Math.floor(minutes / 60);\r\n minutes = minutes - hours * 60;\r\n\r\n const parts = [];\r\n if (days > 0)\r\n parts.push(`${days} ${days === 1 ? txts.day : txts.days}`);\r\n if (hours > 0)\r\n parts.push(`${hours} ${hours === 1 ? txts.hour : txts.hours}`);\r\n if (minutes > 0)\r\n parts.push(\r\n `${minutes} ${minutes === 1 ? txts.minute : txts.minutes}`\r\n );\r\n\r\n return parts.join(\", \").replace(/,([^,]*)$/, \" &\" + \"$1\");\r\n });\r\n }\r\n};\r\n","export default {\r\n install: function(Vue) {\r\n Vue.filter(\"prettyPrice\", function(value) {\r\n if (value < 0 || !isFinite(value)) {\r\n return \"- kr.\";\r\n }\r\n\r\n // TODO: force DK locale with .toLocaleString('da') (check browser compatibility)\r\n // https://caniuse.com/#search=tolocalestring\r\n let displayPrice = value;\r\n\r\n // convert from ore to krone\r\n displayPrice = displayPrice / 100;\r\n\r\n if (displayPrice % 1 === 0) {\r\n displayPrice = displayPrice.toLocaleString(\"da-DK\", {\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0\r\n });\r\n } else {\r\n displayPrice = displayPrice.toLocaleString(\"da-DK\", {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2\r\n });\r\n }\r\n\r\n return displayPrice + \" kr.\";\r\n });\r\n }\r\n};\r\n","import { i18nInstance } from \"@/i18n\";\r\n\r\nfunction translatePassengerType(passengerType, count) {\r\n let passengerTypeString =\r\n count > 1 ? passengerType.namePlural : passengerType.nameSingular;\r\n\r\n return passengerTypeString[i18nInstance().locale];\r\n}\r\n\r\nexport default {\r\n install: function(Vue) {\r\n Vue.filter(\"passengers\", function(passengers) {\r\n const totalPassengers = passengers\r\n .map(passenger => {\r\n return passenger.count;\r\n })\r\n .reduce(\r\n (accumulator, currentValue) => accumulator + currentValue,\r\n 0\r\n );\r\n\r\n if (totalPassengers <= 0) {\r\n return i18nInstance().t(\"filter_passenger.choose_travellers\");\r\n }\r\n\r\n return passengers\r\n .filter(passenger => {\r\n return passenger.count > 0;\r\n })\r\n .map(passenger => {\r\n return (\r\n passenger.count +\r\n \" \" +\r\n translatePassengerType(\r\n passenger.passengerType,\r\n passenger.count\r\n )\r\n );\r\n })\r\n .reduce(\r\n (accumulator, currentValue) =>\r\n accumulator +\r\n (accumulator.length > 0 ? \", \" : \"\") +\r\n currentValue,\r\n \"\"\r\n );\r\n });\r\n Vue.filter(\"passenger\", function(passengerType) {\r\n return passengerType[i18nInstance().locale];\r\n });\r\n }\r\n};\r\n","export default {\r\n install: function(Vue) {\r\n Vue.directive(\"click-outside\", {\r\n bind: function(el, binding, vNode) {\r\n // Provided expression must evaluate to a function.\r\n if (typeof binding.value !== \"function\") {\r\n const compName = vNode.context.name;\r\n let warn = `[Vue-click-outside:] provided expression '${binding.expression}' is not a function, but has to be`;\r\n if (compName) {\r\n warn += `Found in component '${compName}'`;\r\n }\r\n console.warn(warn);\r\n }\r\n // Define Handler and cache it on the element\r\n const bubble = binding.modifiers.bubble;\r\n const handler = e => {\r\n if (bubble || (!el.contains(e.target) && el !== e.target)) {\r\n binding.value(e);\r\n }\r\n };\r\n el.__vueClickOutside__ = handler;\r\n\r\n // add Event Listeners\r\n document.addEventListener(\"click\", handler);\r\n },\r\n\r\n unbind: function(el) {\r\n // Remove Event Listeners\r\n document.removeEventListener(\"click\", el.__vueClickOutside__);\r\n el.__vueClickOutside__ = null;\r\n }\r\n });\r\n }\r\n};\r\n","import { library as faLibrary } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n /* list of font awesome icons to make available */\r\n faLocationArrow,\r\n faAngleDown,\r\n faAngleUp,\r\n faArrowRight,\r\n faExchangeAlt,\r\n faInfoCircle\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\r\n\r\nexport default {\r\n install(Vue, options) {\r\n if (!options.componentName) {\r\n throw new Error(\"Invalid value\");\r\n }\r\n\r\n // Load icon set\r\n faLibrary.add(\r\n faLocationArrow,\r\n faAngleDown,\r\n faAngleUp,\r\n faArrowRight,\r\n faExchangeAlt,\r\n faInfoCircle\r\n );\r\n\r\n // Globally register component\r\n Vue.component(options.componentName, FontAwesomeIcon);\r\n }\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spacer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spacer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Spacer.vue?vue&type=template&id=60d0a19f&scoped=true&\"\nimport script from \"./Spacer.vue?vue&type=script&lang=js&\"\nexport * from \"./Spacer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Spacer.vue?vue&type=style&index=0&id=60d0a19f&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60d0a19f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',{staticClass:\"text-headline-primary\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./TextHeadlinePrimary.vue?vue&type=template&id=25e604aa&scoped=true&\"\nvar script = {}\nimport style0 from \"./TextHeadlinePrimary.vue?vue&type=style&index=0&id=25e604aa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25e604aa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',{staticClass:\"text-headline-secondary\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./TextHeadlineSecondary.vue?vue&type=template&id=632156ac&scoped=true&\"\nvar script = {}\nimport style0 from \"./TextHeadlineSecondary.vue?vue&type=style&index=0&id=632156ac&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"632156ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-split\"},[(_vm.headline)?_c('text-headline-primary',{staticClass:\"headline-primary\"},[_vm._v(\"\\n \"+_vm._s(_vm.headline)+\"\\n \")]):_vm._e(),(_vm.description)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.description)+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"columns split\",class:{ reverse: _vm.reverse }},[_c('div',{staticClass:\"column primary\"},[_vm._t(\"primary\")],2),_c('div',{staticClass:\"column secondary\"},[_vm._t(\"secondary\")],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n {{ headline }}\r\n \r\n\r\n
\r\n {{ description }}\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","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSplit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSplit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LayoutSplit.vue?vue&type=template&id=6b0df3fe&scoped=true&\"\nimport script from \"./LayoutSplit.vue?vue&type=script&lang=js&\"\nexport * from \"./LayoutSplit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LayoutSplit.vue?vue&type=style&index=0&id=6b0df3fe&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b0df3fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-single\"},[(_vm.headline)?_c('text-headline-primary',{staticClass:\"headline-primary\"},[_vm._v(\"\\n \"+_vm._s(_vm.headline)+\"\\n \")]):_vm._e(),_vm._t(\"default\"),_c('div')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n {{ headline }}\r\n \r\n\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSingle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSingle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LayoutSingle.vue?vue&type=template&id=2b4a141c&scoped=true&\"\nimport script from \"./LayoutSingle.vue?vue&type=script&lang=js&\"\nexport * from \"./LayoutSingle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LayoutSingle.vue?vue&type=style&index=0&id=2b4a141c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b4a141c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"layout-squared\"},[(_vm.headline)?_c('text-headline-primary',{staticClass:\"headline-primary\"},[_vm._v(\"\\n \"+_vm._s(_vm.headline)+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"cells\"},[_c('div',{staticClass:\"cell top-left\"},[_vm._t(\"top-left\")],2),_c('div',{staticClass:\"cell top-right\"},[_vm._t(\"top-right\")],2),_c('div',{staticClass:\"cell bottom-left\"},[_vm._t(\"bottom-left\")],2),_c('div',{staticClass:\"cell bottom-right\"},[_vm._t(\"bottom-right\")],2)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n {{ headline }}\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","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSquared.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSquared.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LayoutSquared.vue?vue&type=template&id=e31ce9e4&scoped=true&\"\nimport script from \"./LayoutSquared.vue?vue&type=script&lang=js&\"\nexport * from \"./LayoutSquared.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LayoutSquared.vue?vue&type=style&index=0&id=e31ce9e4&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e31ce9e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer\"},[_c('div',{staticClass:\"inner\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./BlockSection.vue?vue&type=template&id=4ba84d2a&scoped=true&\"\nvar script = {}\nimport style0 from \"./BlockSection.vue?vue&type=style&index=0&id=4ba84d2a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ba84d2a\",\n null\n \n)\n\nexport default component.exports","import VModal from \"vue-js-modal\";\r\nimport FontAwesome from \"@/plugins/font-awesome\";\r\nimport Spacer from \"@/components/elements/Spacer\";\r\nimport TextHeadlinePrimary from \"@/components/elements/TextHeadlinePrimary\";\r\nimport TextHeadlineSecondary from \"@/components/elements/TextHeadlineSecondary\";\r\nimport LayoutSplit from \"@/components/layouts/LayoutSplit\";\r\nimport LayoutSingle from \"@/components/layouts/LayoutSingle\";\r\nimport LayoutSquared from \"@/components/layouts/LayoutSquared\";\r\nimport BlockSection from \"@/components/blocks/BlockSection\";\r\n\r\n// eslint-disable-next-line import/no-dynamic-require\r\nconst appGlobals = require(`../apps/${process.env.VUE_APP_NAME}/globals`)\r\n .default;\r\n\r\nfunction dummy(name) {\r\n return {\r\n name,\r\n dummy: true,\r\n render: h => h(\"div\", { class: \"dummy\" }, name)\r\n };\r\n}\r\n\r\n// put in cross app global components here\r\n// when component is undefined, it means that the app is required to provide one\r\nconst defaultGlobals = {\r\n spacer: Spacer,\r\n \"text-headline-primary\": TextHeadlinePrimary,\r\n \"text-headline-secondary\": TextHeadlineSecondary,\r\n \"layout-split\": LayoutSplit,\r\n \"layout-single\": LayoutSingle,\r\n \"layout-squared\": LayoutSquared,\r\n \"block-section\": BlockSection,\r\n spinner: dummy(\"spinner\"),\r\n \"error-image\": dummy(\"error-image\"),\r\n logo: dummy(\"logo\")\r\n};\r\n\r\nconst globals = { ...defaultGlobals, ...appGlobals };\r\n\r\nexport default {\r\n install(Vue) {\r\n Vue.use(VModal, { componentName: \"v-modal\" });\r\n Vue.use(FontAwesome, { componentName: \"font-awesome-icon\" });\r\n for (const componentName of Object.keys(globals)) {\r\n if (globals[componentName].dummy)\r\n console.warn(\r\n \"missing required global component \" +\r\n componentName +\r\n \", fallback to using a dummy component\"\r\n );\r\n Vue.component(componentName, globals[componentName]);\r\n }\r\n }\r\n};\r\n","import store from \"@/store\";\r\n\r\nexport default {\r\n install(Vue) {\r\n Vue.config.errorHandler = function(error, vm) {\r\n const componentName = vm._isVue\r\n ? vm.$options.name || vm.$options._componentTag\r\n : vm.name;\r\n\r\n store.commit(\"error/setError\", {\r\n hard: true,\r\n details: {\r\n message: typeof error === \"string\" ? error : error.message,\r\n source: componentName,\r\n stack:\r\n error === null\r\n ? null\r\n : error.stack || error.stacktrace || null\r\n }\r\n });\r\n };\r\n\r\n window.onunhandledrejection = function({ reason, type }) {\r\n store.commit(\"error/setError\", {\r\n hard: true,\r\n details: {\r\n message:\r\n typeof reason === \"string\" ? reason : reason.message,\r\n source: type,\r\n stack:\r\n reason === null\r\n ? null\r\n : reason.stack || reason.stacktrace || null\r\n }\r\n });\r\n };\r\n\r\n window.onerror = function(message, source, _lineno, _colno, error) {\r\n if (message === \"Script error.\") {\r\n // Script error is the error that is thrown when cross-domain errors occur\r\n // https://blog.sentry.io/2016/05/17/what-is-script-error\r\n //\r\n // Do not block the UI, as the user probably still can continue, as the only\r\n // cross domain script being used is third party tracking scripts\r\n } else {\r\n store.commit(\"error/setError\", {\r\n hard: true,\r\n details: {\r\n message: message,\r\n source: source,\r\n stack:\r\n error === null\r\n ? null\r\n : error.stack || error.stacktrace || null\r\n }\r\n });\r\n }\r\n };\r\n }\r\n};\r\n","import VueAnalytics from \"vue-analytics\";\r\nimport router from \"@/router\";\r\n\r\nexport default {\r\n install(Vue) {\r\n if (\r\n process.env.NODE_ENV === \"production\" &&\r\n process.env.VUE_APP_SERVER === \"live\" &&\r\n process.env.VUE_APP_GA_ID\r\n ) {\r\n Vue.use(VueAnalytics, {\r\n id: process.env.VUE_APP_GA_ID,\r\n // Automatically track vue-router navigation\r\n router,\r\n autoTracking: {\r\n // Do not track querystring part of a url\r\n transformQueryString: false,\r\n // Send the actual route when navigating to 404 pages\r\n prependBase: false,\r\n // Do not track when navigating to the same route as the previous route\r\n // Eg. /orderconfirmed/\r\n skipSamePath: true\r\n },\r\n debug: {\r\n // Do not track in non-production environments\r\n sendHitTask: process.env.NODE_ENV === \"production\"\r\n }\r\n // TODO: Implement opt out if needed\r\n // See https://matteogabriele.gitbooks.io/vue-analytics/content/docs/opt-out.html\r\n });\r\n }\r\n }\r\n};\r\n","import Vue from \"vue\";\r\nimport VueCookies from \"vue-cookies\";\r\n\r\n// Promises must be loaded for webpack's import to work. So this must remain globally\r\nimport \"@/utilities/polyfills/promise\";\r\nimport \"@/utilities/featuredetection\";\r\nimport polyfillInit from \"@/utilities/polyfills\";\r\nimport Bootstrap from \"@/Bootstrap\";\r\nimport router from \"@/router\";\r\nimport store from \"@/store\";\r\nimport MomentFilters from \"@/filters/MomentFilters\";\r\nimport PricingFilters from \"@/filters/PricingFilters\";\r\nimport PassengerFilters from \"@/filters/PassengerFilters\";\r\nimport ClickOutsideDirective from \"@/directives/ClickOutsideDirective\";\r\nimport MainComponents from \"@/plugins/mainComponents\";\r\nimport ErrorHandler from \"@/plugins/errorhandler\";\r\nimport Analytics from \"@/plugins/analytics\";\r\nimport VueAnnouncer from \"@vue-a11y/announcer\";\r\nimport i18nInit, { i18nInstance } from \"@/i18n\";\r\n\r\nVue.config.productionTip = false;\r\n\r\nVue.use(MomentFilters);\r\nVue.use(PricingFilters);\r\nVue.use(PassengerFilters);\r\nVue.use(ClickOutsideDirective);\r\nVue.use(MainComponents);\r\nVue.use(ErrorHandler);\r\nVue.use(Analytics);\r\nVue.use(VueCookies);\r\nVue.use(VueAnnouncer, { complementRoute: \"\" }, router);\r\n\r\nconst i18n = i18nInstance();\r\n\r\nPromise.all([polyfillInit(), i18nInit()]).then(() => {\r\n /* eslint-disable no-new */\r\n new Vue({\r\n el: \"#app\",\r\n i18n,\r\n router,\r\n store,\r\n render: h => h(Bootstrap)\r\n });\r\n});\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=style&index=0&id=40ecd867&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logo.vue?vue&type=style&index=0&id=40ecd867&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spacer.vue?vue&type=style&index=0&id=60d0a19f&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spacer.vue?vue&type=style&index=0&id=60d0a19f&scoped=true&lang=css&\"","import {\r\n FLOW_TYPE_ZONE_TICKET,\r\n FLOW_TYPE_FIXED_PRICE_TICKET,\r\n FLOW_TYPE_RETIREE_TICKET,\r\n FLOW_STEP_TRAVEL_INFORMATION,\r\n FLOW_STEP_CUSTOMER_INFORMATION,\r\n FLOW_STEP_CONFIRM_BASKET,\r\n FLOW_STEP_RETIREE_TICKET_PRODUCT,\r\n FLOW_TYPE_CONTROLFEE\r\n} from \"@/store/modules/flow\";\r\n\r\nimport paths from \"./paths\";\r\n\r\nconst PageNewZoneTicket = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-new-zone-ticket\" */ \"./pages/PageNewZoneTicket\"\r\n );\r\nconst PageRetireeProducts = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-retiree-products\" */ \"./pages/PageRetireeProducts\"\r\n );\r\nconst PageNewRetireeTicket = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-new-retiree-ticket\" */ \"./pages/PageNewRetireeTicket\"\r\n );\r\nconst PageNewFixedPriceTicket = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-new-fixed-price-ticket\" */ \"./pages/PageNewFixedPriceTicket\"\r\n );\r\nconst PageFixedPriceProducts = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-fixed-price-products\" */ \"./pages/PageFixedPriceProducts\"\r\n );\r\nconst PageCustomerInformation = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-order-details\" */ \"./pages/PageCustomerInformation\"\r\n );\r\nconst PageConfirmBasket = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-order-details\" */ \"./pages/PageConfirmBasket\"\r\n );\r\nconst PageControlFee = () =>\r\n import(\r\n /* webpackMode: \"lazy\", webpackChunkName: \"page-control-fee\" */ \"./pages/PageControlFee\"\r\n ); \r\n\r\nconst routes = [\r\n {\r\n path: \"/index.html\",\r\n redirect: to => {\r\n if (to.query.id) {\r\n return {\r\n name: \"page_new_fixed_price_ticket\",\r\n query: { productId: to.query.id }\r\n };\r\n } else {\r\n return { name: \"page_new_zone_ticket\" };\r\n }\r\n }\r\n },\r\n {\r\n path: paths.newZoneTicket,\r\n name: \"page_new_zone_ticket\",\r\n component: PageNewZoneTicket,\r\n meta: {\r\n flowType: FLOW_TYPE_ZONE_TICKET,\r\n flowStep: FLOW_STEP_TRAVEL_INFORMATION,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: paths.retireeProducts,\r\n name: \"page_retiree_products\",\r\n component: PageRetireeProducts,\r\n meta: {\r\n flowType: FLOW_TYPE_RETIREE_TICKET,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: paths.newRetireeTicket,\r\n name: \"page_new_retiree_ticket\",\r\n component: PageNewRetireeTicket,\r\n meta: {\r\n flowType: FLOW_TYPE_RETIREE_TICKET,\r\n flowStep: FLOW_STEP_RETIREE_TICKET_PRODUCT,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: paths.fixedPriceProducts,\r\n name: \"page_fixed_price_products\",\r\n component: PageFixedPriceProducts,\r\n meta: {\r\n flowType: FLOW_TYPE_FIXED_PRICE_TICKET,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: paths.newFixedPriceTicket,\r\n name: \"page_new_fixed_price_ticket\",\r\n component: PageNewFixedPriceTicket,\r\n meta: {\r\n flowType: FLOW_TYPE_FIXED_PRICE_TICKET,\r\n flowStep: FLOW_STEP_TRAVEL_INFORMATION,\r\n allowReload: true\r\n }\r\n },\r\n {\r\n path: paths.customerInformation,\r\n name: \"page_customer_information\",\r\n component: PageCustomerInformation,\r\n meta: {\r\n flowStep: FLOW_STEP_CUSTOMER_INFORMATION\r\n }\r\n },\r\n {\r\n path: paths.confirmBasket,\r\n name: \"page_confirm_basket\",\r\n component: PageConfirmBasket,\r\n meta: {\r\n flowStep: FLOW_STEP_CONFIRM_BASKET\r\n }\r\n },\r\n {\r\n path: paths.controlfee,\r\n name: \"page_controlfee\",\r\n component: PageControlFee,\r\n meta: {\r\n flowType: FLOW_TYPE_CONTROLFEE,\r\n allowReload: true\r\n }\r\n },\r\n];\r\n\r\nexport default routes;\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAiCAYAAADGUiAIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASuSURBVHgB1VjdbhtFFD4zu/lTfrq+oQTlZyLRCHHRJlxwWzcvkCAeoE6rXvSqhQcgNvfQ+AoJhBLzBM4DQF1xXSXpFSqVMjWtTAHJCwHVcrxzOGc9m/g3dnYrJD75yDtn5pz55syZ2ZkVcAEcecqbnBxRgUCPyw4K/62XPx8MY4uYBb+w7Y3XPK/hNBTr3IarJ+5qDUNCDGpQmXs3LQA3hJDrVFR9nJRQiN3L5aeFLoK7RBBm7iFiGlGkO20RwJeAJSFEceJWuQBxyFbefk85I8EOOUvD8NAgRJZJV3c8bwxmttDA/QvYH0kBuX6ke5J9tbB8UyBuE1EPYsCZN8WJ2ycr0GcmBgN36vL409Sm77dqu8i+mlveAkHzFxPOLIL7vgExSf9XA0pMiIujer2+lrr7q44UbWQr81cyEmAHYkJMI4x+aM7Klyzh2A5hvy7+WosiLCN9mKMADyAmxATCyFXTpsM/BQQvJcQGwuoYTH8WFU89yZEgGzdHGc4cER7v1psyrfUaxAYacf/4m7k0P4dkOar0dxNigqPqLJjelQ0inCS65N5xnDC6oReOKiSAGDAf5jcZko4L3qNff6VUNOTrkAC8A5wLju4/A98/5yJwzYasKsVxUZAAMoUD2+AficjSCw6uy1rDXYEE6LWoegGDZJGlhF1MlPkXQoIdIQSC99+RfQOQ4LoaEgCHXeVDpks/CBRajkPNp+T1IS6ILJ4MbsZnhSQwgIcypbVP+TDUAbqvoyFWOp8TEgBdiaUwZ43APUgAUxlAdhxBTiUi67+Wx49CsmOysZskFUxVnPv+dxaSRZWkmMr4fkiWU6EBmIMEaDzts7FwVC8bSAAt6/Jzfjjt4Z3ys22+S0FMmN/pONgjHdzlRESRrjnZ2nhz2trO8YHjbMogeAgxX78cXTFlQE43p10umiQLC2kLyE3cKX8XKdrmblb/pI3j3AC++MViS78nEsyxCIn2PTYOSXTyTrktNbsSjQmPOieriCYPcXqpgT75BT6S86YQx5zmoUo34k86iTLO3XNeqCsrowE+QOi+7/dw5AeI+Zrb2F7ivZvw99dqFWTwJR2ZBtkzSZ9I5qdGZF5ktN+nj8GoKLpJBEGaLijrZOCRZ89aayL4XIAozr54VurJ4mEaalqrwARpgXKd5tcj8qrJEI/IySHt8wfTjrPXj+T/BohnC/SNnLrIoccCFwQTaSUT6TrqMlGd7NVxLwL0rDraqZb6DStd5G2nnpXILiKSYqFnYXWclqq1Dlousm4HmX0SbRtz/nAHm9YgbfV86HkEzXsbd5KNHGKzgWgp52xkLpHw7nCPhPIUnpM8IfnW+uOBfUzyAwnv8z+SfAEdW2jnx50DSv4b1AkbMEm+8qQ5aqRfIv2K7ZAHouw/WCJ8USpQm/0WAkyaB5CzZW5/yw7oe5I1kkNLMgrEbZLHJB/YQT2OZmjQlyg/Er4O0/96i54J8NRHN+Nrts2erde28y1b5o4X4eyr5KH1t2T1PKiqrdN2oBx9z86od7p12Rxbt9HJ0HMR2r/QZGznEZGQOLXPW1smrqlcsvbR1K+02ClLIkoltpmxpFh3zeojf2j7Yp36F1p8KW1WLocJAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFXUlEQVR42u2awW7cyBGGv2pSlhDsIjkY8MLPEiC3PIBfYI95mTyLgZxyzm2fYwEZMgws4MgOJE1X/XvoapKjcOTEC2M1MyxAIGc45HT99ddfVT2CzTbbbLPNNttss8022+wczfI4Arsz8/0CqGO+uAJ4+/Yt7969w8y++qmXl5dcXV0xjiPj2B4/juP0zP7eIau1AiBpOq+1Umvl7u6O+/v7r16bJF6/fs2bN2+6z5/GBQNwdz58+PCbAHjOJolXr16x9HkKxzAMfPz48eQBuL29ZRgG3J09AADev3/P58+fTxqAm5ubvff2ALi+vsbdTxqA6+vrwwC4+8kD0Km/CkBEEBEnDYCk82ZAL60HGXDqAETEeQPwZArsdrvzToFOkbNkwD+AP7szuFPMsMWkdBLOAyEx1MqPwF8fA+BZBWy3w0qZbjoVNoTUAIgg1hiwA6JWwh2LoJxQGqj/SahWfA0AB7xWykIEzayx4Midn1IgAiLWAajJAK91DwDrqXDkAMSXGLADqjvFnSgFpCaECcLRR19qILhTDwHg7nitYMZgRsnIlyNMBa1UgOjN3iEA/v3wwMXDAxelTAAgtbLY0+LYop+131Pn7u/u9jY/90RQ7piERbTIZwqUTIejA8CsAZCBVPq2XgYlFIHcUUZbvSHqDFgAcRSWa1bEdM4hDehlMNwJMyKdD6mxYNEXPPfmqLe7e7mfaaCnNEDuhDuewgcwJBPCDHvURz/7xqenQAchS309OAy5tzRIRlh3HhjMZhodC/0jJg3QogyuakD9G8RfghgqXsBGIwrYYNhAO8coRe3hz37qs0b/1vwRVciB7wP/J/D3RwBEGBBEtGlQAYFRCoQbhrBSiBCNDHrGABiSTcovNeJGpAbECgMiUi1LgGxyNKIxQGo3t+Dbo1bjuSFgKNr0p2i+hEAtB4g1ABoqgRTNacvaGQVZisqg/f7yuQpgX6YMKTJ4PTWC0AoAkrVtcQuKtRvCjGKeFGppYdabjCf0p/WQ38jB+AL9e3BEhE0Bjej6HesMaB8IMM8cyrwRlDAypZ6YCWyxSH3jGLNKw16g+roRKJTRzxRA6wwIpbBJWTGz95dNr41WV1uP8BiK5WLKDMqTFcMOOvNfXu0NtuuY2FQBkv7kHqB6S9wK/CoD2k1LBkTeOJcVKfcH1KrCvrNlxa/yf2iFfeF9nwRuDppPV+foKzc/RGhOAUUXwQMa0FNAEphSA9T0YCopkQNGA6YFVytOl7kZ6cBY+R+cfcQExRxxDQsG5DoxJE/hswmACGXZEx6xl9KkKK6mgBSoi17P+cXNCqAYQd8kKbMvWnRgtmRFX/iwcN4WAK1RXcsJJT8bicn0Ra1soz3HRAMgovkUQYLwRRFsuV/IiU9KNY8mJmr53K/Nfth+hG3EbJydznPldaPMWC3SRumgLZTeFKA6gSHRdqwzwm1tlgGMKepdBzoTel/QqwOrs4ANSANhY47AfZrqJC4EAhVK6ZEvk4PYxXRUP2dcXE8gmBmiVc2L6YqouVsJkic6D8kRQxSkXaZASYcjW2BbpELDyQWigA0Ts8Z5dhjh4iXYJSoGRahkF1hAY2nrNoPhEoY/IHuBlcv2QHuRD7rcAwPrX7iYu2x4QgIctJvzXYG0m5iguIe4h3CIe1RvUexwq6iAe/uJnwHCMiUcQoZdCMaXYL8AD/sA/OmPl/zrp/dYKbkR2uaAYnkszfdSDOMOs4+/U58/H7vazz1LE6/opXD6XJZCAsXPWHkB/GdPjr8DfsjjOdgn4Ab4tPxHyavH+wMnbBW4mwRms8022+xczXQsu7zfyMq5M2ADYAPgzO1XVnk0GGg1CvgAAAAASUVORK5CYII=\"","import { TimeoutError, ConnectionError } from \"@/api/api-core\";\r\n\r\nfunction initialState() {\r\n return {\r\n type: null,\r\n step: null,\r\n loading: false,\r\n previous: []\r\n };\r\n}\r\n\r\nfunction throwFlowErrors(error) {\r\n if (error.message === \"ZoneDistanceNoTripFound\") {\r\n throw FLOW_ERROR_ZONE_DISTANCE_NO_TRIP;\r\n }\r\n if (error.message === \"StopIdentityConflict\") {\r\n throw FLOW_ERROR_STOP_IDENTITY_CONFLICT;\r\n }\r\n if (error.message === \"TicketNotSellable\") {\r\n throw FLOW_ERROR_TICKET_NOT_SELLABLE;\r\n }\r\n if (error.message === \"ServiceUnavailable\") {\r\n throw FLOW_ERROR_SERVICE_UNAVAILABLE;\r\n }\r\n if (error.message === \"TooLateToOrderTicket\") {\r\n throw FLOW_ERROR_TOO_LATE_TO_ORDER_TICKET;\r\n }\r\n if (error.message === \"InvalidTripDepartureInstant\") {\r\n throw FLOW_ERROR_DEPARTURE_DATE_INVALID;\r\n }\r\n if (error instanceof TimeoutError || error instanceof ConnectionError) {\r\n throw FLOW_ERROR_CONNECTION_FAILED;\r\n }\r\n throw error;\r\n}\r\n\r\nexport const FLOW_TYPE_ZONE_TICKET = \"FLOW_TYPE_ZONE_TICKET\";\r\nexport const FLOW_TYPE_FIXED_PRICE_TICKET = \"FLOW_TYPE_FIXED_PRICE_TICKET\";\r\nexport const FLOW_TYPE_RETIREE_TICKET = \"FLOW_TYPE_RETIREE_TICKET\";\r\nexport const FLOW_TYPE_CONTROLFEE = \"FLOW_TYPE_CONTROLFEE\";\r\n\r\nexport const FLOW_STEP_TRAVEL_INFORMATION = \"FLOW_STEP_TRAVEL_INFORMATION\";\r\nexport const FLOW_STEP_CUSTOMER_INFORMATION = \"FLOW_STEP_CUSTOMER_INFORMATION\";\r\nexport const FLOW_STEP_CONFIRM_BASKET = \"FLOW_STEP_CONFIRM_BASKET\";\r\nexport const FLOW_STEP_PAYMENT = \"FLOW_STEP_PAYMENT\";\r\nexport const FLOW_STEP_CONFIRM_ORDER = \"FLOW_STEP_CONFIRM_ORDER\";\r\nexport const FLOW_STEP_ORDER_CONFIRMED = \"FLOW_STEP_ORDER_CONFIRMED\";\r\nexport const FLOW_STEP_RETIREE_TICKET_PRODUCT =\r\n \"FLOW_STEP_RETIREE_TICKET_PRODUCT\";\r\nexport const FLOW_STEP_CONTROLFEE = \"FLOW_STEP_CONTROLFEE\";\r\nexport const FLOW_STEP_CONTROLFEE_INFORMATION = \"FLOW_STEP_CONTROLFEE_INFORMATION\";\r\n\r\nexport const FLOW_ERROR_NOT_STARTED = \"FLOW_ERROR_NOT_STARTED\";\r\nexport const FLOW_ERROR_LOCATION_INVALID = \"FLOW_ERROR_LOCATION_INVALID\";\r\nexport const FLOW_ERROR_PASSENGER_INVALID = \"FLOW_ERROR_PASSENGER_INVALID\";\r\nexport const FLOW_ERROR_DEPARTURE_DATE_INVALID =\r\n \"FLOW_ERROR_DEPARTURE_DATE_INVALID\";\r\nexport const FLOW_ERROR_CUSTOMER_INVALID = \"FLOW_ERROR_CUSTOMER_INVALID\";\r\nexport const FLOW_ERROR_TERMS_NOT_ACCEPTED = \"FLOW_ERROR_TERMS_NOT_ACCEPTED\";\r\nexport const FLOW_ERROR_ZONE_DISTANCE_NO_TRIP =\r\n \"FLOW_ERROR_ZONE_DISTANCE_NO_TRIP\";\r\nexport const FLOW_ERROR_STOP_IDENTITY_CONFLICT =\r\n \"FLOW_ERROR_STOP_IDENTITY_CONFLICT\";\r\nexport const FLOW_ERROR_TICKET_NOT_SELLABLE = \"FLOW_ERROR_TICKET_NOT_SELLABLE\";\r\nexport const FLOW_ERROR_TOO_LATE_TO_ORDER_TICKET =\r\n \"FLOW_ERROR_TOO_LATE_TO_ORDER_TICKET\";\r\nexport const FLOW_ERROR_PRODUCT_NOT_AVAILABLE =\r\n \"FLOW_ERROR_PRODUCT_NOT_AVAILABLE\";\r\nexport const FLOW_ERROR_SERVICE_UNAVAILABLE = \"FLOW_ERROR_SERVICE_UNAVAILABLE\";\r\nexport const FLOW_ERROR_RETIREE_PRODUCT_INVALID =\r\n \"FLOW_ERROR_RETIREE_PRODUCT_INVALID\";\r\nexport const FLOW_ERROR_CONNECTION_FAILED = \"FLOW_ERROR_API_CONNECTION_FAILED\";\r\n\r\nexport const FLOW_LOADING_CREATING_ORDER = \"FLOW_LOADING_CREATING_ORDER\";\r\nexport const FLOW_LOADING_CLAIMING_ORDER = \"FLOW_LOADING_CLAIMING_ORDER\";\r\nexport const FLOW_LOADING_CLAIMING_PAYMENT = \"FLOW_LOADING_CLAIMING_PAYMENT\";\r\nexport const FLOW_LOADING_CONFIRMING_ORDER = \"FLOW_LOADING_CONFIRMING_ORDER\";\r\nexport const FLOW_LOADING_CONFIRMING_PAYMENT = \"FLOW_LOADING_CONFIRMING_PAYMENT\";\r\n\r\nexport const state = initialState();\r\n\r\nexport const mutations = {\r\n reset: state => {\r\n const s = initialState();\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key];\r\n });\r\n },\r\n clearPrevious: state => {\r\n state.previous = [];\r\n },\r\n addPrevious: (state, step) => {\r\n state.previous.push(step);\r\n },\r\n goBack: (state, step) => {\r\n let index = -1;\r\n let destinationStep = null;\r\n\r\n // when we use a negative number to go back in time\r\n if (step < 0) {\r\n index = state.previous.length + step;\r\n destinationStep = state.previous[index];\r\n // otherwise to try to find a specific step back in time\r\n } else {\r\n index = state.previous.indexOf(step);\r\n destinationStep = state.previous[index];\r\n }\r\n\r\n if (index >= 0 && destinationStep) {\r\n state.previous = state.previous.slice(0, index);\r\n state.step = destinationStep;\r\n }\r\n },\r\n setType: (state, type) => {\r\n state.type = type;\r\n },\r\n setStep: (state, step) => {\r\n state.step = step;\r\n },\r\n addStep: (state, step) => {\r\n state.previous.push(state.step);\r\n state.step = step;\r\n },\r\n setLoading: (state, loading) => {\r\n state.loading = loading;\r\n },\r\n continueFlow: (state, { type, step }) => {\r\n state.type = type;\r\n state.step = step;\r\n }\r\n};\r\n\r\nexport const getters = {\r\n getType: state => state.type,\r\n getStep: state => state.step,\r\n getPrevious: state => state.previous,\r\n getFullStep: state => [state.type, state.step],\r\n isLoading: state => state.loading,\r\n\r\n // pretty simple at the moment, but could we enhanced to support advanced flow diagrams\r\n // always return an exported constant, or false if there is no next step\r\n // this getter should never look into if step is completed or not.\r\n getNextStep: ({ type, step }) => {\r\n if (!type || !step) return false;\r\n\r\n switch (step) {\r\n case FLOW_STEP_TRAVEL_INFORMATION:\r\n return FLOW_STEP_CUSTOMER_INFORMATION;\r\n\r\n case FLOW_STEP_RETIREE_TICKET_PRODUCT:\r\n return FLOW_STEP_CUSTOMER_INFORMATION;\r\n\r\n case FLOW_STEP_CUSTOMER_INFORMATION:\r\n return FLOW_STEP_CONFIRM_BASKET;\r\n\r\n case FLOW_STEP_CONFIRM_BASKET:\r\n return FLOW_STEP_PAYMENT;\r\n\r\n case FLOW_STEP_PAYMENT:\r\n return FLOW_STEP_CONFIRM_ORDER;\r\n\r\n case FLOW_STEP_CONFIRM_ORDER:\r\n return FLOW_STEP_ORDER_CONFIRMED;\r\n\r\n case FLOW_STEP_CONTROLFEE:\r\n return FLOW_STEP_CONTROLFEE_INFORMATION;\r\n\r\n case FLOW_STEP_CONTROLFEE_INFORMATION:\r\n return FLOW_STEP_CUSTOMER_INFORMATION;\r\n\r\n default:\r\n return false;\r\n }\r\n },\r\n\r\n // Do a check on the store state and check if we can let the flow goto next step\r\n // returns null if no error, or a FLOW_ERROR_ constant if we have an error.\r\n // This can only do syncronous checks, so no async lookups here. Async errors\r\n // can be returned in gotoNextStep\r\n getStepError: ({ type, step }, _getters, _rootState, rootGetters) => {\r\n if (!type || !step) return FLOW_ERROR_NOT_STARTED;\r\n\r\n // travel information\r\n if (step === FLOW_STEP_TRAVEL_INFORMATION) {\r\n if (type === FLOW_TYPE_ZONE_TICKET) {\r\n if (\r\n !rootGetters[\"location/getFromLocation\"] ||\r\n !rootGetters[\"location/getToLocation\"] ||\r\n rootGetters[\"location/hasDuplicates\"]\r\n ) {\r\n return FLOW_ERROR_LOCATION_INVALID;\r\n }\r\n }\r\n\r\n if (rootGetters[\"passenger/getPassengerCount\"] === 0) {\r\n return FLOW_ERROR_LOCATION_INVALID;\r\n }\r\n\r\n if (!rootGetters[\"date/isSelectedDepartureDateValid\"]) {\r\n return FLOW_ERROR_DEPARTURE_DATE_INVALID;\r\n }\r\n }\r\n\r\n if (step === FLOW_STEP_RETIREE_TICKET_PRODUCT) {\r\n if (!rootGetters[\"products/retireeticket/isValid\"]) {\r\n return FLOW_ERROR_RETIREE_PRODUCT_INVALID;\r\n }\r\n }\r\n\r\n // customer information\r\n if (step === FLOW_STEP_CUSTOMER_INFORMATION) {\r\n if (!rootGetters[\"customer/isValid\"]) {\r\n return FLOW_ERROR_CUSTOMER_INVALID;\r\n }\r\n }\r\n\r\n // confirm basket\r\n if (step === FLOW_STEP_CONFIRM_BASKET) {\r\n if (!rootGetters[\"customer/getTermsAccept\"]) {\r\n return FLOW_ERROR_TERMS_NOT_ACCEPTED;\r\n }\r\n\r\n if (\r\n !rootGetters[\"customer/getDeliveryTermsAccept\"] &&\r\n rootGetters[\"order/getDeliveryMethod\"] === \"snailmail\"\r\n ) {\r\n return FLOW_ERROR_TERMS_NOT_ACCEPTED;\r\n }\r\n }\r\n\r\n if (step === FLOW_STEP_CONTROLFEE) {\r\n if (rootGetters[\"products/controlfee/getNumberError\"]) return rootGetters[\"products/controlfee/getNumberError\"];\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // just some sugar around getStepError, when you only need a boolean\r\n isStepValid: (_state, getters) => Boolean(getters.getStepError) === false\r\n};\r\n\r\nexport const actions = {\r\n resetFlow: context => {\r\n context.commit(\"reset\");\r\n context.commit(\"order/reset\", null, { root: true });\r\n context\r\n .dispatch(\r\n \"date/setServerTime\",\r\n { setDepartureDate: true },\r\n { root: true }\r\n )\r\n .catch(throwFlowErrors);\r\n\r\n // enable these if you want the reset flow to clear more state\r\n // context.commit('customer/resetCustomer', null, { root: true })\r\n // context.commit('location/unsetLocations', null, { root: true })\r\n // context.commit('passenger/clearPassengers', null, { root: true })\r\n },\r\n\r\n startZoneTicketFlow: context => {\r\n context.dispatch(\"resetFlow\");\r\n context.commit(\"clearPrevious\");\r\n context.commit(\"setType\", FLOW_TYPE_ZONE_TICKET);\r\n context.commit(\"setStep\", FLOW_STEP_TRAVEL_INFORMATION);\r\n return context\r\n .dispatch(\r\n \"order/prepare\",\r\n {\r\n productType:\r\n context.rootState.products.zoneticket.info.identifier\r\n },\r\n { root: true }\r\n )\r\n .catch(throwFlowErrors);\r\n },\r\n\r\n startFixedPriceTicketFlow: (context, { product }) => {\r\n context.dispatch(\"resetFlow\");\r\n context.commit(\"clearPrevious\");\r\n context.commit(\"setType\", FLOW_TYPE_FIXED_PRICE_TICKET);\r\n\r\n if (product) {\r\n context.commit(\"setStep\", FLOW_STEP_TRAVEL_INFORMATION);\r\n return context\r\n .dispatch(\r\n \"order/prepare\",\r\n {\r\n productType:\r\n context.rootState.products.fixedpriceticket.info\r\n .identifier,\r\n product\r\n },\r\n { root: true }\r\n )\r\n .catch(throwFlowErrors);\r\n }\r\n\r\n return Promise.resolve(true);\r\n },\r\n\r\n startRetireeTicketFlow: (context, { municipalityId, productVariantId }) => {\r\n context.dispatch(\"resetFlow\");\r\n context.commit(\"clearPrevious\");\r\n context.commit(\"setType\", FLOW_TYPE_RETIREE_TICKET);\r\n\r\n if (municipalityId) {\r\n context.commit(\"setStep\", FLOW_STEP_RETIREE_TICKET_PRODUCT);\r\n return context\r\n .dispatch(\r\n \"order/prepare\",\r\n {\r\n productType:\r\n context.rootState.products.retireeticket.info\r\n .identifier,\r\n municipalityId,\r\n productVariantId\r\n },\r\n { root: true }\r\n )\r\n .catch(throwFlowErrors);\r\n }\r\n\r\n return Promise.resolve(true);\r\n },\r\n\r\n startControlFeeFlow: (context, { product }) => {\r\n context.dispatch(\"resetFlow\");\r\n context.commit(\"clearPrevious\");\r\n context.commit(\"setType\", FLOW_TYPE_CONTROLFEE);\r\n context.commit(\"setStep\", FLOW_STEP_CONTROLFEE);\r\n\r\n if (product) {\r\n context.commit(\"setStep\", FLOW_STEP_CONTROLFEE_INFORMATION);\r\n return context\r\n .dispatch(\r\n \"order/prepare\",\r\n {\r\n productType:\r\n context.rootState.products.controlfee.info.identifier,\r\n product\r\n },\r\n { root: true }\r\n )\r\n .catch(throwFlowErrors);\r\n }\r\n\r\n return Promise.resolve(true);\r\n },\r\n\r\n // any async/sync logic happening between steps should happen here.\r\n // Always return a promise, and it is allowed to reject with FLOW_ERROR_ constants\r\n gotoNextStep: context => {\r\n const stepError = context.getters.getStepError;\r\n if (stepError) return Promise.reject(stepError);\r\n\r\n // if flow has ended, we handle it gracefully without throwing errors\r\n const currentStep = context.getters.getStep;\r\n const currentFlow = context.getters.getType;\r\n let nextStep = context.getters.getNextStep;\r\n if (!nextStep || currentStep === nextStep) return Promise.resolve(null);\r\n\r\n // below when going out of loading state, we are putting in a few milliseconds\r\n // to prevent flashing when route changes, because vue watch will be run in text ticks,\r\n // UI hacks should'nt belong here, so open for suggestions!\r\n\r\n switch (currentStep) {\r\n case FLOW_STEP_TRAVEL_INFORMATION:\r\n case FLOW_STEP_RETIREE_TICKET_PRODUCT:\r\n case FLOW_STEP_CONTROLFEE_INFORMATION:\r\n context.commit(\"setLoading\", FLOW_LOADING_CREATING_ORDER);\r\n return context\r\n .dispatch(\"order/create\", null, { root: true })\r\n .then(() => {\r\n context.commit(\"addStep\", nextStep);\r\n return nextStep;\r\n })\r\n .catch(throwFlowErrors)\r\n .finally(() => {\r\n setTimeout(\r\n () => context.commit(\"setLoading\", false),\r\n 50\r\n );\r\n });\r\n\r\n case FLOW_STEP_CONFIRM_BASKET:\r\n // claim basket when leaving confirm basket step\r\n if (currentFlow == FLOW_TYPE_CONTROLFEE) {\r\n context.commit(\"setLoading\", FLOW_LOADING_CLAIMING_PAYMENT);\r\n } else {\r\n context.commit(\"setLoading\", FLOW_LOADING_CLAIMING_ORDER);\r\n }\r\n return context\r\n .dispatch(\"order/claim\", null, { root: true })\r\n .then(() => {\r\n context.commit(\"addStep\", nextStep);\r\n return nextStep;\r\n })\r\n .catch(throwFlowErrors)\r\n .finally(() => {\r\n setTimeout(\r\n () => context.commit(\"setLoading\", false),\r\n 50\r\n );\r\n });\r\n\r\n case FLOW_STEP_CONFIRM_ORDER:\r\n // confirm order when leaving confirm order step\r\n if (currentFlow == FLOW_TYPE_CONTROLFEE) {\r\n context.commit(\"setLoading\", FLOW_LOADING_CONFIRMING_PAYMENT);\r\n } else {\r\n context.commit(\"setLoading\", FLOW_LOADING_CONFIRMING_ORDER);\r\n }\r\n return context\r\n .dispatch(\"order/confirm\", null, { root: true })\r\n .then(() => {\r\n context.commit(\"addStep\", nextStep);\r\n return nextStep;\r\n })\r\n .catch(throwFlowErrors)\r\n .finally(() => {\r\n setTimeout(\r\n () => context.commit(\"setLoading\", false),\r\n 50\r\n );\r\n });\r\n }\r\n\r\n // default flow handler, remember to return early if something speciel should happen\r\n context.commit(\"addStep\", nextStep);\r\n return Promise.resolve(nextStep);\r\n }\r\n};\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockHeader.vue?vue&type=style&index=0&id=63b2aa2e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockHeader.vue?vue&type=style&index=0&id=63b2aa2e&scoped=true&lang=scss&\"","import { callApi } from \"@/api/api-core\";\r\n\r\nexport const payAnonymousDeveloper = function(orderId, ownerHandlesFailure) {\r\n const requestData = {\r\n orderId: orderId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v2/payment/developer/pay/anonymous\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const payAnonymousFree = function(orderId, ownerHandlesFailure) {\r\n const requestData = {\r\n orderId: orderId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/payment/free/pay/accountlesscustomer\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const exchangeDownloadTokenDeveloper = function(\r\n orderId,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId: orderId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v2/payment/developer/exchange/downloadtoken\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const exchangeDownloadTokenFree = function(\r\n orderId,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId: orderId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/payment/free/exchange/downloadtoken\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const initNetaxept = function(\r\n orderId,\r\n redirectUrl,\r\n language,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n redirectUrl,\r\n language\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/payment/netaxept/payment/init/webshop\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const initApplePay = function(\r\n orderId,\r\n token,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n paymentData: JSON.stringify(token),\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/payment/netaxept/payment/init/applepay/webshop\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const finalizeNetaxept = function(\r\n orderId,\r\n transactionId,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n transactionId\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v2/payment/netaxept/payment/finalize/webshop\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"locale-picker\"},_vm._l((_vm.languages),function(language){return _c('text-button',{key:language.id,staticClass:\"flag\",attrs:{\"lang\":language.id,\"aria-label\":language.label},on:{\"click\":function($event){$event.preventDefault();return _vm.selectedLanguage(language)}}},[_c('img',{attrs:{\"src\":language.flag,\"alt\":\"flag\"}})])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectorLocaleFlag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectorLocaleFlag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectorLocaleFlag.vue?vue&type=template&id=2128bafc&scoped=true&\"\nimport script from \"./SelectorLocaleFlag.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectorLocaleFlag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelectorLocaleFlag.vue?vue&type=style&index=0&id=2128bafc&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2128bafc\",\n null\n \n)\n\nexport default component.exports","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalError.vue?vue&type=style&index=0&id=1c0b10c8&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalError.vue?vue&type=style&index=0&id=1c0b10c8&scoped=true&lang=css&\"","require(\"moment/locale/de\");\r\n\r\nlet messagesPromise;\r\n\r\nif (process.env.NODE_ENV === \"production\") {\r\n messagesPromise = import(/* webpackChunkName: \"de-generated\", webpackMode: \"eager\" */ \"@/i18n/translations/de.generated.js\").then(\r\n generatedLanguageModule => {\r\n return generatedLanguageModule.default;\r\n }\r\n );\r\n} else {\r\n messagesPromise = import(/* webpackChunkName: \"language-development\", webpackMode: \"eager\" */ \"@/i18n/language.development\").then(\r\n generatorModule => {\r\n return generatorModule.generate(\"de\");\r\n }\r\n );\r\n}\r\n\r\nexport default messagesPromise;\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSquared.vue?vue&type=style&index=0&id=e31ce9e4&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSquared.vue?vue&type=style&index=0&id=e31ce9e4&scoped=true&lang=scss&\"","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=style&index=0&id=6e8beb75&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=style&index=0&id=6e8beb75&scoped=true&lang=scss&\"","module.exports = \"data:image/png;base64,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\"","var map = {\n\t\"./da\": \"4e44\",\n\t\"./da.js\": \"4e44\",\n\t\"./de\": \"872c\",\n\t\"./de.js\": \"872c\",\n\t\"./en\": \"c33a\",\n\t\"./en.js\": \"c33a\"\n};\n\n\nfunction webpackAsyncContext(req) {\n\treturn webpackAsyncContextResolve(req).then(__webpack_require__);\n}\nfunction webpackAsyncContextResolve(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\t\treturn map[req];\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.resolve = webpackAsyncContextResolve;\nwebpackAsyncContext.id = \"966c\";\nmodule.exports = webpackAsyncContext;","module.exports = {\r\n newZoneTicket: \"/\",\r\n retireeProducts: \"/retireetickets/\",\r\n newRetireeTicket: \"/retireeticket/\",\r\n fixedPriceProducts: \"/fixedpricetickets/\",\r\n newFixedPriceTicket: \"/fixedpriceticket/\",\r\n customerInformation: \"/customerinfo/\",\r\n confirmBasket: \"/confirmbasket/\",\r\n controlfee: \"/controlfee/\"\r\n};\r\n","module.exports = \"data:image/png;base64,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\"","export function invalidChars(string, validChars) {\r\n if (!string) return [];\r\n const chars = [...new Set(string.toString().split(\"\"))];\r\n const invalid = [];\r\n chars.forEach(char => {\r\n if (validChars.indexOf(char) === -1) {\r\n invalid.push(char);\r\n }\r\n });\r\n return invalid;\r\n}\r\n\r\nexport function filterChars(string, validChars) {\r\n if (!string) return string;\r\n let output = string.toString();\r\n const chars = [...new Set(string.toString().split(\"\"))];\r\n chars.forEach(char => {\r\n if (validChars.indexOf(char) === -1) {\r\n output = output.replace(char, \"\");\r\n }\r\n });\r\n return output;\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/img/store_google.4cfe0edc.png\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSplit.vue?vue&type=style&index=0&id=6b0df3fe&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSplit.vue?vue&type=style&index=0&id=6b0df3fe&scoped=true&lang=scss&\"","import { callApi } from \"@/api/api-core\";\r\n\r\nexport const fetchPassengerTypeList = function() {\r\n return callApi(\"POST\", \"v4/passengertypes/list\", undefined, true);\r\n};\r\n","import { fetchPassengerTypeList } from \"@/api/modules/passenger\";\r\n\r\n// while we wait for german support via the backend\r\nfunction germanSingular(identifier, backup) {\r\n switch (identifier) {\r\n case \"Adult\":\r\n return \"Erwachsener\";\r\n case \"Child\":\r\n return \"Kind\";\r\n case \"Senior\":\r\n return \"Rentner\";\r\n default:\r\n return backup;\r\n }\r\n}\r\nfunction germanPlural(identifier, backup) {\r\n switch (identifier) {\r\n case \"Adult\":\r\n return \"Erwachsene\";\r\n case \"Child\":\r\n return \"Kinder\";\r\n case \"Senior\":\r\n return \"Rentner\";\r\n default:\r\n return backup;\r\n }\r\n}\r\n\r\nconst PassengerTypeModel = function(passengerType, order) {\r\n this.order = order;\r\n this.id = passengerType.id;\r\n this.nameSingular = {\r\n da: passengerType.danishNameSingular,\r\n en: passengerType.englishNameSingular,\r\n de: germanSingular(\r\n passengerType.stringIdentifier,\r\n passengerType.englishNameSingular\r\n )\r\n };\r\n this.namePlural = {\r\n da: passengerType.danishNamePlural,\r\n en: passengerType.englishNamePlural,\r\n de: germanPlural(\r\n passengerType.stringIdentifier,\r\n passengerType.englishNamePlural\r\n )\r\n };\r\n this.minimumAge = passengerType.minimumAge;\r\n this.maximumAge = passengerType.maximumAge;\r\n this.contentPageIdentifier = passengerType.contentPageIdentifier;\r\n this.rejseplanenIdentifier = passengerType.rejseplanenIdentifier;\r\n};\r\n\r\nconst PassengerTypeCountModel = function(passengerType, count) {\r\n this.passengerTypeId = passengerType.id;\r\n this.count = count;\r\n};\r\n\r\nconst DEFAULT_MAXIMUM_PASSENGERS = 15;\r\n\r\nexport const state = {\r\n maximumPassengers: DEFAULT_MAXIMUM_PASSENGERS,\r\n passengerTypes: [],\r\n passengers: []\r\n};\r\n\r\nexport const mutations = {\r\n updatePassengerTypes: (state, payload) => {\r\n state.passengerTypes = payload.passengerTypes.map(\r\n (passengerType, index) => {\r\n return new PassengerTypeModel(passengerType, index);\r\n }\r\n );\r\n },\r\n updatePassengers: (state, payload) => {\r\n const allowedPassengerTypeIds =\r\n payload.passengerTypeIds || state.passengerTypes.map(t => t.id);\r\n state.maximumPassengers =\r\n payload.maximumPassengers || DEFAULT_MAXIMUM_PASSENGERS;\r\n\r\n // check if there already is existing passengers selected, in the allowed range, otherwise\r\n // we will reset totally, so we get the default count added, this is mostly for handling\r\n // rejseplanen links, where we may bootstrap with a passenger type that is later removed, when\r\n // a specifc flow is started. I know, very complicated\r\n if (\r\n state.passengers.filter(\r\n p =>\r\n allowedPassengerTypeIds.includes(p.passengerTypeId) &&\r\n p.count > 0\r\n ).length > 0\r\n ) {\r\n const existingPassengers = state.passengers.filter(passenger => {\r\n return allowedPassengerTypeIds.includes(\r\n passenger.passengerTypeId\r\n );\r\n });\r\n\r\n state.passengers = state.passengerTypes\r\n .filter(passengerType => {\r\n return allowedPassengerTypeIds.includes(passengerType.id);\r\n })\r\n .map(passengerType => {\r\n const existingPassenger = existingPassengers.filter(\r\n existingPassenger => {\r\n return (\r\n existingPassenger.passengerTypeId ===\r\n passengerType.id\r\n );\r\n }\r\n )[0];\r\n\r\n if (existingPassenger) {\r\n return existingPassenger;\r\n } else {\r\n return new PassengerTypeCountModel(passengerType, 0);\r\n }\r\n });\r\n } else {\r\n const allowedPassengerTypes = state.passengerTypes.filter(\r\n passengerType => {\r\n return allowedPassengerTypeIds.includes(passengerType.id);\r\n }\r\n );\r\n\r\n // if this is the first time we update passengers, we need to set count to 1\r\n // this will first use a type id from the payload, next up it will try to find the adult\r\n // and last it will pick the first one\r\n let primary = null;\r\n if (payload.primaryId)\r\n primary = allowedPassengerTypes.filter(\r\n t => t.id === payload.primaryId\r\n )[0];\r\n if (!primary)\r\n primary = allowedPassengerTypes.filter(\r\n t => t.minimumAge <= 18 && t.maximumAge >= 18\r\n )[0];\r\n if (!primary) primary = allowedPassengerTypes[0];\r\n\r\n state.passengers = allowedPassengerTypes.map(passengerType => {\r\n return new PassengerTypeCountModel(\r\n passengerType,\r\n passengerType === primary ? 1 : 0\r\n );\r\n });\r\n }\r\n },\r\n updatePassengerCountForType: (state, payload) => {\r\n if (!Number.isInteger(payload.passengerTypeId)) {\r\n throw new Error(\"Must provider a passenger type id\");\r\n }\r\n\r\n if (!Number.isInteger(payload.value)) {\r\n throw new Error(\"Value must be a number\");\r\n }\r\n\r\n let passenger = state.passengers.filter(passenger => {\r\n return passenger.passengerTypeId === payload.passengerTypeId;\r\n })[0];\r\n\r\n if (passenger === undefined) {\r\n throw new Error(\r\n \"Passenger \" + passenger.passengerTypeId + \" is not allowed\"\r\n );\r\n }\r\n\r\n passenger.count = payload.value;\r\n },\r\n clearPassengers: state => {\r\n state.passengers = [];\r\n }\r\n};\r\n\r\nexport const getters = {\r\n getPassengerTypes: state => {\r\n return state.passengerTypes;\r\n },\r\n getPassengerTypeById: state => {\r\n return passengerTypeId => {\r\n return state.passengerTypes.filter(passengerType => {\r\n return passengerType.id === passengerTypeId;\r\n })[0];\r\n };\r\n },\r\n getAllowedPassengerTypes: state => {\r\n const allowedPassengerTypeIds = state.passengers.map(passenger => {\r\n return passenger.passengerTypeId;\r\n });\r\n\r\n return state.passengerTypes.filter(passengerType => {\r\n return allowedPassengerTypeIds.includes(passengerType.id);\r\n });\r\n },\r\n getPrimaryPassengerType: (state, getters) => {\r\n const allowed = getters.getAllowedPassengerTypes;\r\n let primary = allowed.filter(\r\n t => t.minimumAge <= 18 && t.maximumAge >= 18\r\n )[0];\r\n if (!primary) primary = allowed[0];\r\n return primary;\r\n },\r\n getPassengers: state => {\r\n return state.passengers\r\n .filter(passenger => {\r\n return passenger.count > 0;\r\n })\r\n .map(passenger => {\r\n return {\r\n passengerType: state.passengerTypes.filter(\r\n passengerType => {\r\n return (\r\n passengerType.id === passenger.passengerTypeId\r\n );\r\n }\r\n )[0],\r\n count: passenger.count\r\n };\r\n });\r\n },\r\n getPassengerCountById: state => {\r\n return passengerTypeId => {\r\n let passengerTypeCount = state.passengers.filter(passenger => {\r\n return passenger.passengerTypeId === passengerTypeId;\r\n })[0];\r\n\r\n if (passengerTypeCount === undefined) {\r\n return 0;\r\n }\r\n\r\n return passengerTypeCount.count;\r\n };\r\n },\r\n getPassengerCount: state => {\r\n return state.passengers\r\n .map(passenger => {\r\n return passenger.count;\r\n })\r\n .reduce(\r\n (accumulator, currentValue) => accumulator + currentValue,\r\n 0\r\n );\r\n },\r\n getMaximumPassengers: state => {\r\n return state.maximumPassengers;\r\n }\r\n};\r\n\r\nexport const actions = {\r\n fetchPassengerTypeList: context => {\r\n return fetchPassengerTypeList()\r\n .then(response => {\r\n if (response.ok) {\r\n return response.responseBody;\r\n }\r\n\r\n return Promise.reject(response);\r\n })\r\n .then(response => {\r\n context.commit(\"updatePassengerTypes\", {\r\n passengerTypes: response.passengerTypes\r\n });\r\n });\r\n },\r\n updatePassengerCountForType: (context, payload) => {\r\n // Update passenger count\r\n context.commit(\"updatePassengerCountForType\", payload);\r\n\r\n return Promise.resolve();\r\n }\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"modal-header\"},[_c('logo'),_c('div',{staticClass:\"actions\"},[(_vm.hasLocaleSwitcher)?_c('div',[_c('selector-locale',{staticClass:\"same-line\"})],1):_vm._e(),_c('div',[(_vm.hasCloseListener)?_c('button',{staticClass:\"same-line close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n ×\\n \")])]):_vm._e()])])],1),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"modal-footer\"},[_vm._t(\"footer\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LayoutModal.vue?vue&type=template&id=016fb9ea&\"\nimport script from \"./LayoutModal.vue?vue&type=script&lang=js&\"\nexport * from \"./LayoutModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LayoutModal.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"static/img/error_bus.6653bdac.svg\";","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextButton.vue?vue&type=style&index=0&id=3a2278d8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextButton.vue?vue&type=style&index=0&id=3a2278d8&scoped=true&lang=scss&\"","// Moment comes bundled with english which cannot be removed, so no need to import it\r\n\r\nlet messagesPromise;\r\n\r\nif (process.env.NODE_ENV === \"production\") {\r\n messagesPromise = import(/* webpackChunkName: \"en-generated\", webpackMode: \"eager\" */ \"@/i18n/translations/en.generated.js\").then(\r\n generatedLanguageModule => {\r\n return generatedLanguageModule.default;\r\n }\r\n );\r\n} else {\r\n messagesPromise = import(/* webpackChunkName: \"language-development\", webpackMode: \"eager\" */ \"@/i18n/language.development\").then(\r\n generatorModule => {\r\n return generatorModule.generate(\"en\");\r\n }\r\n );\r\n}\r\n\r\nexport default messagesPromise;\r\n","var map = {\n\t\"./content.js\": \"52c0\",\n\t\"./customer.js\": \"f1b1\",\n\t\"./date.js\": \"c619\",\n\t\"./error.js\": \"e92f\",\n\t\"./flow.js\": \"77a6\",\n\t\"./identification.js\": \"4f47\",\n\t\"./location.js\": \"ed5d\",\n\t\"./order.js\": \"2bf4\",\n\t\"./passenger.js\": \"a5af\",\n\t\"./products/controlfee.js\": \"120c\",\n\t\"./products/fixedpriceticket.js\": \"069b\",\n\t\"./products/retireeticket.js\": \"1817\",\n\t\"./products/zoneticket.js\": \"0526\",\n\t\"./system.js\": \"2464\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"c3e1\";","import { fetchServerTime } from \"@/api/modules/system\";\r\nimport { makeUtcDate } from \"@/utilities/time\";\r\n\r\nfunction makeCorrectSelectedInterval(interval, startMinute) {\r\n // Determine how many minutes we should add to the date so the minute number matches the given interval\r\n let leftOvers = startMinute !== 0 ? interval - (startMinute % interval) : 0;\r\n return interval === leftOvers ? 0 : leftOvers;\r\n}\r\n\r\nexport const state = {\r\n /**\r\n * LAST invalid date before a VALID period begins\r\n */\r\n selectableDatesStart: null,\r\n /**\r\n * FIRST invalid date after a VALID period ends\r\n */\r\n selectableDatesEnd: null,\r\n /**\r\n * Checks if the selected departure date is valid in between the valid dates in the product valid period\r\n */\r\n isSelectedDepartureDateValid: true,\r\n /**\r\n * The server current time\r\n */\r\n serverDateTime: null,\r\n /**\r\n * The selected DATE for departure\r\n */\r\n selectedDepartureDate: null,\r\n /**\r\n * The dynamic created time selections based on a time interval in minutes. Changes when the date changes\r\n */\r\n timeSpans: null,\r\n /**\r\n * The minute interval for the time selector\r\n */\r\n spanInterval: 1,\r\n /**\r\n * Used to tell if user did not select a timespan for travel\r\n */\r\n leaveNow: false,\r\n /**\r\n * Which time target are we search, departure or arrival\r\n */\r\n selectedSearchType: \"Departures\"\r\n};\r\n\r\nexport const mutations = {\r\n forceDateUpdate: state => {\r\n const tmp = state.selectedDepartureDate;\r\n\r\n state.selectedDepartureDate = new Date();\r\n\r\n state.selectedDepartureDate = tmp;\r\n },\r\n /**\r\n * Update the selected departure date\r\n */\r\n updateDepartureDate: (state, payload) => {\r\n state.selectedDepartureDate = makeUtcDate(\r\n payload.departureDate\r\n ).valueOf();\r\n },\r\n /**\r\n * Update the current time according to server time\r\n */\r\n updateServerTime: (state, payload) => {\r\n state.serverDateTime = makeUtcDate(payload.serverTime).valueOf();\r\n state.serverTicketTime = makeUtcDate(payload.ticketTime).valueOf();\r\n },\r\n /**\r\n * Update the calendar with valid dates based on the selected product\r\n */\r\n updateSelectableDatesInCalendar: (state, payload) => {\r\n state.selectableDatesStart = makeUtcDate(payload.periodStart).valueOf();\r\n state.selectableDatesEnd =\r\n payload.periodEnd === null\r\n ? null\r\n : makeUtcDate(payload.periodEnd).valueOf();\r\n },\r\n /**\r\n * Update a bool indicating if a valid date is selected\r\n */\r\n updateIsSelectedDepartureDateValid: (state, valid) => {\r\n state.isSelectedDepartureDateValid = valid;\r\n },\r\n /**\r\n * Update the available time spans\r\n */\r\n updateTimeSpans: (state, payload) => {\r\n state.timeSpans = payload.spans;\r\n },\r\n /**\r\n * Update the time span interval\r\n */\r\n updateInterval: (state, payload) => {\r\n state.spanInterval = payload.interval;\r\n },\r\n /**\r\n * Update leave now setting\r\n */\r\n updateLeaveNow: (state, payload) => {\r\n state.leaveNow = payload.leaveNow;\r\n },\r\n /**\r\n * Update search type\r\n */\r\n updateSearchType: (state, payload) => {\r\n state.selectedSearchType = payload;\r\n }\r\n};\r\n\r\nexport const getters = {\r\n /**\r\n * RETURNS THE CURRENTLY SELECTED DEPARTURE DATE\r\n */\r\n getDepartureDateAsMoment: state => {\r\n let dateAndTime =\r\n state.selectedDepartureDate !== null\r\n ? makeUtcDate(state.selectedDepartureDate).second(0)\r\n : null;\r\n\r\n return dateAndTime === null ? null : dateAndTime;\r\n },\r\n /**\r\n * RETURNS THE CURRENTLY SELECTED DEPARTURE DATE\r\n * BUT THE MINUTE CLOCK IS MODIFIED TO MATCH THE INTERVAL SPANS\r\n */\r\n getModifiedDepartureDateAsMoment: state => {\r\n let dateAndTime =\r\n state.selectedDepartureDate !== null\r\n ? makeUtcDate(state.selectedDepartureDate).second(0)\r\n : null;\r\n if (dateAndTime !== null) {\r\n let leftOvers = makeCorrectSelectedInterval(\r\n state.spanInterval,\r\n dateAndTime.minute()\r\n );\r\n dateAndTime = makeUtcDate(dateAndTime).add(leftOvers, \"minute\");\r\n }\r\n\r\n return dateAndTime;\r\n },\r\n /**\r\n * RETURNS THE CURRENTLY SELECTABLE DATES BASED ON SELECTED PRODUCT\r\n */\r\n getSelectableDates: state => {\r\n return {\r\n periodStart: makeUtcDate(state.selectableDatesStart),\r\n periodEnd:\r\n state.selectableDatesEnd !== null\r\n ? makeUtcDate(state.selectableDatesEnd)\r\n : null\r\n };\r\n },\r\n /**\r\n * RETURNS THE CURRENT SERVER DATETIME\r\n */\r\n getServerDateAsMoment: state => {\r\n return state.serverDateTime !== null\r\n ? makeUtcDate(state.serverDateTime).second(0)\r\n : null;\r\n },\r\n /**\r\n * RETURNS TRUE IF THE SELECTED DATE IS WITHIN THE SELECTABLE DATES IN THE CALENDAR\r\n */\r\n isSelectedDepartureDateValid: state => {\r\n return state.isSelectedDepartureDateValid;\r\n },\r\n /**\r\n * RETURNS THE AWAILABLE TIME SPANS FOR THE SELECTED DEPARTURE DATE\r\n */\r\n getTimeSpans: state => {\r\n return state.timeSpans;\r\n },\r\n /**\r\n * RETURNS TRUE IF THE SELECTED DEPARTURE DATE IS TODAY\r\n * COMPARED WITH THE SERVERTIME\r\n */\r\n isDepartureDateToday: state => {\r\n let isToday = false;\r\n if (\r\n state.selectedDepartureDate !== null &&\r\n state.serverDateTime !== null\r\n ) {\r\n isToday = makeUtcDate(state.selectedDepartureDate).isSame(\r\n makeUtcDate(state.serverDateTime),\r\n \"day\"\r\n );\r\n }\r\n\r\n return isToday;\r\n },\r\n /**\r\n * RETURNS TRUE IF THE SELECTED DEPARTURE DATE IS TODAY AND WITHIN THE VALID DATE RANGE\r\n */\r\n isLeaveNowOptionAwailable: (state, getters) => {\r\n return (\r\n getters.isSelectedDepartureDateValid &&\r\n getters.getSelectableDates.periodStart.isSameOrBefore(\r\n getters.getServerDateAsMoment,\r\n \"days\"\r\n )\r\n );\r\n },\r\n /***\r\n * RETURNS THE INTERVAL VALUE\r\n */\r\n getInterval: state => {\r\n return state.spanInterval;\r\n },\r\n /**\r\n * RETURNS THE \"LEAVE NOW\" BOOLEAN\r\n */\r\n getLeaveNow: state => {\r\n return state.leaveNow;\r\n },\r\n /**\r\n * RETURNS THE SELECTED SEARCHTYPE\r\n */\r\n getSelectedSearchType: state => state.selectedSearchType\r\n};\r\n\r\nexport const actions = {\r\n /**\r\n * CREATES THE TIME SPANS THAT SHOULD BE AWAILABLE FOR THE SELECTED DEPARTURE DATE\r\n */\r\n setTimeSpans: context => {\r\n let spanss = [];\r\n\r\n let totalMinutes = 24 * 60;\r\n let date = makeUtcDate(\r\n context.getters.getDepartureDateAsMoment\r\n ).startOf(\"day\");\r\n let totalSpans = totalMinutes / context.getters.getInterval;\r\n\r\n if (context.getters.isDepartureDateToday) {\r\n // Set the start time according to server time\r\n let startHour = context.getters.getServerDateAsMoment.hour();\r\n let startMinute = context.getters.getServerDateAsMoment.minute();\r\n\r\n // Determine how many minutes we should add to the date so the minute number matches the given interval\r\n let leftOvers = makeCorrectSelectedInterval(\r\n context.getters.getInterval,\r\n startMinute\r\n );\r\n\r\n // Determine how many spans is needed for the selected date and the given interval\r\n totalMinutes = (24 - startHour) * 60;\r\n\r\n // If the selected date is today we should remove some spans acording til the first valid minute span\r\n let removeSpans =\r\n (startMinute + leftOvers) / context.getters.getInterval;\r\n\r\n // Set the date\r\n date = makeUtcDate(context.getters.getServerDateAsMoment)\r\n .add(leftOvers, \"minute\")\r\n .second(0);\r\n\r\n // Set the spans\r\n totalSpans =\r\n totalMinutes / context.getters.getInterval -\r\n Math.floor(removeSpans);\r\n }\r\n for (let i = 0; i < totalSpans; i++) {\r\n let m = makeUtcDate(date).add(\r\n i * context.getters.getInterval,\r\n \"minute\"\r\n );\r\n spanss.push({\r\n id: m.valueOf(),\r\n title: m.format(\"HH:mm\")\r\n });\r\n }\r\n context.commit(\"updateTimeSpans\", {\r\n spans: spanss\r\n });\r\n },\r\n prepareSelectableDates: (context, { periodStart, periodEnd }) => {\r\n if (!periodStart)\r\n throw new Error(\r\n \"cannot prepare selectable dates, periodStart is missing\"\r\n );\r\n context.commit(\"updateSelectableDatesInCalendar\", {\r\n periodStart,\r\n periodEnd\r\n });\r\n context.dispatch(\"determineIfSelectedDepartureDateIsValid\");\r\n },\r\n /**\r\n * DOES A CHECK TO SEE IF SELECTED DEPARTURE DATE IS VALID WITHIN THE SELECTABLE DATES IN THE CALENDAR\r\n */\r\n determineIfSelectedDepartureDateIsValid: context => {\r\n // GET DEPARTURE DATE AND TIME\r\n const departureTime = context.getters.getModifiedDepartureDateAsMoment;\r\n\r\n // IS TODAY\r\n const today = context.getters.isDepartureDateToday;\r\n // GET SERVER TIME\r\n const servertime = context.getters.getServerDateAsMoment;\r\n // GET THE SELECTABLE DATES PERIOD\r\n const validPeriod = context.getters.getSelectableDates;\r\n\r\n const start = validPeriod.periodStart; // Can be null\r\n const end = validPeriod.periodEnd; // Can be null\r\n\r\n // Check if leave now is valid (only on today)\r\n if (!today) {\r\n context.commit(\"updateLeaveNow\", false);\r\n }\r\n\r\n if (\r\n start !== null &&\r\n end !== null &&\r\n start.isSameOrBefore(departureTime) &&\r\n end.isSameOrAfter(departureTime)\r\n ) {\r\n // Departure time is within the range\r\n // Check if today\r\n if (today && departureTime.isBefore(servertime)) {\r\n // Departure time is today but the timestamp is in the past.\r\n context.commit(\"updateIsSelectedDepartureDateValid\", false);\r\n } else {\r\n context.commit(\"updateIsSelectedDepartureDateValid\", true);\r\n }\r\n } else if (\r\n start === null &&\r\n end !== null &&\r\n departureTime.isSameOrAfter(servertime) &&\r\n departureTime.isSameOrBefore(end)\r\n ) {\r\n // Departure time is AFTER servertime and BEFORE end period\r\n context.commit(\"updateIsSelectedDepartureDateValid\", true);\r\n } else if (\r\n start !== null &&\r\n end === null &&\r\n departureTime.isSameOrAfter(start)\r\n ) {\r\n // Departure time is AFTER start and there is no upper limit\r\n context.commit(\"updateIsSelectedDepartureDateValid\", true);\r\n } else if (\r\n start === null &&\r\n end === null &&\r\n departureTime.isSameOrAfter(servertime)\r\n ) {\r\n // No range and selected time is AFTER server time\r\n context.commit(\"updateIsSelectedDepartureDateValid\", true);\r\n } else {\r\n context.commit(\"updateIsSelectedDepartureDateValid\", false);\r\n }\r\n },\r\n /**\r\n * SETS THE DEPARTURE DATE WHENEVER A NEW DATE IS SELECTED OR A NEW TIME\r\n */\r\n setDepartureDate: (context, payload) => {\r\n // We change the selected date\r\n context.commit(\"updateDepartureDate\", {\r\n departureDate: makeUtcDate(payload.departureDate)\r\n });\r\n // DETERMINE IF THE CURRENTLY SELECTED DATE IS STILL VALID\r\n context.dispatch(\"determineIfSelectedDepartureDateIsValid\");\r\n // Set servertime\r\n context.dispatch(\"setServerTime\");\r\n },\r\n /**\r\n * SETS THE SERVER TIME\r\n */\r\n setServerTime: (context, payload = null) => {\r\n return fetchServerTime().then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Error when fetching server time\");\r\n }\r\n\r\n let serverTime = makeUtcDate(response.responseBody.utcTime);\r\n\r\n context.commit(\"updateServerTime\", {\r\n serverTime\r\n });\r\n\r\n if (payload !== null && payload.setDepartureDate) {\r\n const currentDepartureDate =\r\n context.getters.getDepartureDateAsMoment;\r\n if (\r\n payload.force ||\r\n !currentDepartureDate ||\r\n currentDepartureDate.isBefore(serverTime)\r\n ) {\r\n context.commit(\"updateDepartureDate\", {\r\n departureDate: serverTime\r\n });\r\n context.dispatch(\"determineIfSelectedDepartureDateIsValid\");\r\n }\r\n }\r\n });\r\n },\r\n /**\r\n * SETS THE INTERVAL NUMBER. DEFAULTS TO 1 IF NO VALUE IS PRESENT\r\n */\r\n setDateInterval: (context, payload) => {\r\n context.commit(\"updateInterval\", {\r\n interval: payload === null ? 1 : payload.interval\r\n });\r\n\r\n context.dispatch(\"setTimeSpans\");\r\n },\r\n /**\r\n * SETS THE LEAVE NOW VALUE\r\n */\r\n setLeaveNow: (context, payload) => {\r\n // If We would leave now. we should set the departure time to server time\r\n if (payload !== null && payload.leaveNow) {\r\n context.dispatch(\"setServerTime\", {\r\n setDepartureDate: true,\r\n force: true\r\n });\r\n }\r\n\r\n context.commit(\"updateLeaveNow\", {\r\n leaveNow: payload === null ? true : payload.leaveNow\r\n });\r\n\r\n context.dispatch(\"setTimeSpans\");\r\n },\r\n /**\r\n * Helper for validating a trip departureInstant\r\n */\r\n validateTripDepartureInstant: (context, departureInstant) => {\r\n return context.dispatch(\"setServerTime\").then(() => {\r\n const serverTime = context.getters.getServerDateAsMoment;\r\n const departureUtc = makeUtcDate(departureInstant);\r\n const threshold =\r\n context.rootGetters[\r\n \"system/getDepartureInstantThresholdMinutes\"\r\n ];\r\n departureUtc.subtract(threshold, \"minute\");\r\n\r\n if (serverTime.isSameOrAfter(departureUtc)) {\r\n throw new Error(\"InvalidTripDepartureInstant\");\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n};\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockFooter.vue?vue&type=style&index=0&id=3b591a4e&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BlockFooter.vue?vue&type=style&index=0&id=3b591a4e&scoped=true&lang=scss&\"","export const version = process.env.VUE_APP_VERSION;\r\n","import { version } from \"@/version\";\r\n\r\nlet busyCount = 0;\r\n\r\nconst TIMEOUT = 30; // seconds\r\n\r\nexport class TimeoutError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.name = \"TimeoutError\";\r\n }\r\n}\r\n\r\nexport class ConnectionError extends Error {\r\n constructor(message) {\r\n super(message);\r\n this.name = \"ConnectionError\";\r\n }\r\n}\r\n\r\nexport const callApi = function(method, endpoint, sendData) {\r\n busyCount++;\r\n\r\n const request = {\r\n method: method,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"X-Mobilbillet-Platform\": \"Webshop\",\r\n \"X-Mobilbillet-Version\": version,\r\n Accept: \"application/json\"\r\n },\r\n // mode: 'cors',\r\n cache: \"no-cache\"\r\n };\r\n\r\n if (sendData !== null) {\r\n request.body = JSON.stringify(sendData);\r\n }\r\n\r\n const requestPromise = Promise.race([\r\n fetch(process.env.VUE_APP_API_URL + endpoint, request),\r\n new Promise((_resolve, reject) =>\r\n setTimeout(\r\n () =>\r\n reject(\r\n new TimeoutError(\r\n \"Connection timeout: \" +\r\n method +\r\n \" \" +\r\n endpoint +\r\n \" timed out after \" +\r\n TIMEOUT +\r\n \" seconds\"\r\n )\r\n ),\r\n TIMEOUT * 1000\r\n )\r\n )\r\n ]);\r\n\r\n const responsePromise = requestPromise.then(response => {\r\n if (response.status === 200) {\r\n return response.json();\r\n }\r\n if (response.status === 204) {\r\n return response;\r\n }\r\n return response.json();\r\n });\r\n\r\n return Promise.all([requestPromise, responsePromise])\r\n .then(values => {\r\n // Restore busy state before calling callback so that we can restore focus to an element that was\r\n // disabled during the AJAX call.\r\n busyCount--;\r\n const response = values[0];\r\n const responseJson = values[1];\r\n\r\n return {\r\n ok: response.ok,\r\n status: response.status,\r\n statusText: response.statusText,\r\n responseBody: responseJson\r\n };\r\n })\r\n .catch(response => {\r\n busyCount--;\r\n\r\n let error = new ConnectionError(\r\n method + \" \" + endpoint + \" - \" + response.message\r\n );\r\n\r\n if (response instanceof TimeoutError) {\r\n error = response;\r\n }\r\n\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const isBusy = function() {\r\n return busyCount > 0;\r\n};\r\n","import moment from \"moment-timezone\";\r\n\r\nexport function makeUtcDate(date) {\r\n return moment.utc(date).tz(\"Europe/Copenhagen\");\r\n}\r\n","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=27d38948&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=27d38948&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAiCAYAAAAkjjtxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQxSURBVHgB7VhNbBNHFP5mnZCKQmJLmLTQlLUolapWwlU5VEWqlls5Qau2p1axTz1ijlUPsY89NT1ysqOeUKUSTumlilO1cIIsEogDIC//kAhsRwmExNnlvd1Z47/N2jsc+aTn+Xs7+83z2zdvRmAAVBGPb2JYF4jFue1gqzaMTSuBWq3vSYoVHWjoXmPIQjZlYQCIMAUm2cDOU6RqUNMIUCvTRKUYthYSeGShnWAcGiapdpIkTRLv9TxJCTYWwhYgwogKiJzT+yUBcPJJPCi41T8qU0Qih/6ft2hxJfyYKmAQwlXsTzeAc1TVEQHVxLj1+a9na09HhtKIBosWeqyXtbWulxHZLWAeEcnWx5L489uf9e8qj9NjGw1EhE7M5smduhbcZuEq3tG3EFsczAXQRvbs97+gPpr02juGUDr0Ll7ENEREl6XbZmogNh+VLGPe+KFJlsEW/tpahgLY0udaO5qEn2DfFCK6AePqx1/ixgdHuvrfX1vHxOo6FJDGzK2832gStiEyUMCFL74JHDv6uA41aKfc8AhJeAn7M1Cw7p2Jj9pcoROvwcpE1s5wRfN+xAko4ObBz0J1Plx5DjW4G5dH2IGjQwFL43qoTvL5BpSgicNuIZtRA7yL+uieUJ2xzcgx2YfOP1oVeuQw5mNlG//1obCJvAIlTpEjeitG1tdCdRQ2j1bUtAQsTg37Tw97YGTjWahOfXgIysimav6yTShgfOl2qE59RwyKcDlKws4CFDBx93qozo3RnVCD7XKUhLUyFPDJtX9Dde7uegtKsO1ZLlzCSdwrw8v6I2HkxTNM3Au28tXE227mpgAT2UNlrrR8uqIABRyfOxMYLf4fV4ycNrJ+tUnYs7L4HRExtrKMoxf/6upnsmrWtZmTRTHY4FbXEYkSoRJ1TiIi5r76yU01GZf2jOKffQkowMRk6tPWjq5ovhf3M5TEzyAijv99Bkcuz5Hf7lIj69A3xaeNDgSempfxXp6emsLgqNGCC3uL//HxPsrzcN1g8mCu18i29xIP6YwXQyzfp4vU+BtYxep0yr9Y4UsTzclTf38uxlZ1cJp2tMCNLPQihVGhO4rd2G3YsA16gNM8+dkLi1JT3ubMNazNpoJugNzbHrqE0RwDjjhAb9UlQdY3ITST4uwMb714AwU4jqOcyg78os56Jwlq673GuZ+k2Eu31zxBCPVhmohvgdi3/Am5zomIRVKUJY8dk232aQoUOE/CUeIKyTS8y0D++Gbl2G+yNGU/z3FeCDENFUjCXGZYZL3I/SRp2S6TnCRZlGMVEkPqFKV1mxaWY/nW+WV9MYyPyjGArXyCiVJ5AJ7lWXjTOQ3P8gVZZuQY//VGxzy3qS8n+80w1+iHsL/rmXiV6PNfl4f39zPZLLXLXMK7Q/bDk1+fpnEu2QUOy3lmpU5O6hhyodsSfgmshLU0QXdfQQAAAABJRU5ErkJggg==\"","/*!\r\n * modernizr v3.6.0\r\n * Build https://modernizr.com/download?-webp-setclasses-dontmin\r\n *\r\n * Copyright (c)\r\n * Faruk Ates\r\n * Paul Irish\r\n * Alex Sexton\r\n * Ryan Seddon\r\n * Patrick Kettner\r\n * Stu Cox\r\n * Richard Herrera\r\n * MIT License\r\n */\r\n\r\n/*\r\n * Modernizr tests which native CSS3 and HTML5 features are available in the\r\n * current UA and makes the results available to you in two ways: as properties on\r\n * a global `Modernizr` object, and as classes on the `` element. This\r\n * information allows you to progressively enhance your pages with a granular level\r\n * of control over the experience.\r\n */\r\n\r\n(function(window, document) {\r\n let classes = [];\r\n\r\n let tests = [];\r\n\r\n /**\r\n *\r\n * ModernizrProto is the constructor for Modernizr\r\n *\r\n * @class\r\n * @access public\r\n */\r\n\r\n let ModernizrProto = {\r\n // The current version, dummy\r\n _version: \"3.6.0\",\r\n\r\n // Any settings that don't work as separate modules\r\n // can go in here as configuration.\r\n _config: {\r\n classPrefix: \"\",\r\n enableClasses: true,\r\n enableJSClass: true,\r\n usePrefixes: true\r\n },\r\n\r\n // Queue of tests\r\n _q: [],\r\n\r\n // Stub these for people who are listening\r\n on: function(test, cb) {\r\n // I don't really think people should do this, but we can\r\n // safe guard it a bit.\r\n // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\r\n // This is in case people listen to synchronous tests. I would leave it out,\r\n // but the code to *disallow* sync tests in the real version of this\r\n // function is actually larger than this.\r\n let self = this;\r\n setTimeout(function() {\r\n cb(self[test]);\r\n }, 0);\r\n },\r\n\r\n addTest: function(name, fn, options) {\r\n tests.push({ name: name, fn: fn, options: options });\r\n },\r\n\r\n addAsyncTest: function(fn) {\r\n tests.push({ name: null, fn: fn });\r\n }\r\n };\r\n\r\n // Fake some of Object.create so we can force non test results to be non \"own\" properties.\r\n let Modernizr = function() {};\r\n Modernizr.prototype = ModernizrProto;\r\n\r\n // Leak modernizr globally when you `require` it rather than force it here.\r\n // Overwrite name so constructor name is nicer :D\r\n Modernizr = new Modernizr();\r\n\r\n /**\r\n * is returns a boolean if the typeof an obj is exactly type.\r\n *\r\n * @access private\r\n * @function is\r\n * @param {*} obj - A thing we want to check the type of\r\n * @param {string} type - A string to compare the typeof against\r\n * @returns {boolean}\r\n */\r\n\r\n function is(obj, type) {\r\n /* eslint-disable */\r\n return typeof obj === type;\r\n /* eslint-enable */\r\n }\r\n\r\n /**\r\n * Run through all tests and detect their support in the current UA.\r\n *\r\n * @access private\r\n */\r\n\r\n function testRunner() {\r\n let featureNames;\r\n let feature;\r\n let aliasIdx;\r\n let result;\r\n let nameIdx;\r\n let featureName;\r\n let featureNameSplit;\r\n\r\n for (let featureIdx in tests) {\r\n if (tests.hasOwnProperty(featureIdx)) {\r\n featureNames = [];\r\n feature = tests[featureIdx];\r\n // run the test, throw the return value into the Modernizr,\r\n // then based on that boolean, define an appropriate className\r\n // and push it into an array of classes we'll join later.\r\n //\r\n // If there is no name, it's an 'async' test that is run,\r\n // but not directly added to the object. That should\r\n // be done with a post-run addTest call.\r\n if (feature.name) {\r\n featureNames.push(feature.name.toLowerCase());\r\n\r\n if (\r\n feature.options &&\r\n feature.options.aliases &&\r\n feature.options.aliases.length\r\n ) {\r\n // Add all the aliases into the names list\r\n for (\r\n aliasIdx = 0;\r\n aliasIdx < feature.options.aliases.length;\r\n aliasIdx++\r\n ) {\r\n featureNames.push(\r\n feature.options.aliases[aliasIdx].toLowerCase()\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Run the test, or use the raw value if it's not a function\r\n result = is(feature.fn, \"function\") ? feature.fn() : feature.fn;\r\n\r\n // Set each of the names on the Modernizr object\r\n for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\r\n featureName = featureNames[nameIdx];\r\n // Support dot properties as sub tests. We don't do checking to make sure\r\n // that the implied parent tests have been added. You must call them in\r\n // order (either in the test, or make the parent test a dependency).\r\n //\r\n // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\r\n // hashtag famous last words\r\n featureNameSplit = featureName.split(\".\");\r\n\r\n if (featureNameSplit.length === 1) {\r\n Modernizr[featureNameSplit[0]] = result;\r\n } else {\r\n // cast to a Boolean, if not one already\r\n if (\r\n Modernizr[featureNameSplit[0]] &&\r\n !(Modernizr[featureNameSplit[0]] instanceof Boolean)\r\n ) {\r\n /* eslint-disable */\r\n Modernizr[featureNameSplit[0]] = new Boolean(\r\n Modernizr[featureNameSplit[0]]\r\n );\r\n /* eslint-enable */\r\n }\r\n\r\n Modernizr[featureNameSplit[0]][\r\n featureNameSplit[1]\r\n ] = result;\r\n }\r\n\r\n classes.push(\r\n (result ? \"\" : \"no-\") + featureNameSplit.join(\"-\")\r\n );\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * docElement is a convenience wrapper to grab the root element of the document\r\n *\r\n * @access private\r\n * @returns {HTMLElement|SVGElement} The root element of the document\r\n */\r\n\r\n let docElement = document.documentElement;\r\n\r\n /**\r\n * A convenience helper to check if the document we are running in is an SVG document\r\n *\r\n * @access private\r\n * @returns {boolean}\r\n */\r\n\r\n let isSVG = docElement.nodeName.toLowerCase() === \"svg\";\r\n\r\n /**\r\n * setClasses takes an array of class names and adds them to the root element\r\n *\r\n * @access private\r\n * @function setClasses\r\n * @param {string[]} classes - Array of class names\r\n */\r\n\r\n // Pass in an and array of class names, e.g.:\r\n // ['no-webp', 'borderradius', ...]\r\n function setClasses(classes) {\r\n let className = docElement.className;\r\n let classPrefix = Modernizr._config.classPrefix || \"\";\r\n\r\n if (isSVG) {\r\n className = className.baseVal;\r\n }\r\n\r\n // Change `no-js` to `js` (independently of the `enableClasses` option)\r\n // Handle classPrefix on this too\r\n if (Modernizr._config.enableJSClass) {\r\n let reJS = new RegExp(\"(^|\\\\s)\" + classPrefix + \"no-js(\\\\s|$)\");\r\n className = className.replace(reJS, \"$1\" + classPrefix + \"js$2\");\r\n }\r\n\r\n if (Modernizr._config.enableClasses) {\r\n // Add the new classes\r\n className += \" \" + classPrefix + classes.join(\" \" + classPrefix);\r\n if (isSVG) {\r\n docElement.className.baseVal = className;\r\n } else {\r\n docElement.className = className;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * hasOwnProp is a shim for hasOwnProperty that is needed for Safari 2.0 support\r\n *\r\n * @author kangax\r\n * @access private\r\n * @function hasOwnProp\r\n * @param {object} object - The object to check for a property\r\n * @param {string} property - The property to check for\r\n * @returns {boolean}\r\n */\r\n\r\n // hasOwnProperty shim by kangax needed for Safari 2.0 support\r\n let hasOwnProp;\r\n\r\n (function() {\r\n let _hasOwnProperty = {}.hasOwnProperty;\r\n /* istanbul ignore else */\r\n /* we have no way of testing IE 5.5 or safari 2,\r\n * so just assume the else gets hit */\r\n if (\r\n !is(_hasOwnProperty, \"undefined\") &&\r\n !is(_hasOwnProperty.call, \"undefined\")\r\n ) {\r\n hasOwnProp = function(object, property) {\r\n return _hasOwnProperty.call(object, property);\r\n };\r\n } else {\r\n hasOwnProp = function(object, property) {\r\n /* yes, this can give false positives/negatives, but most of the time we don't care about those */\r\n return (\r\n property in object &&\r\n is(object.constructor.prototype[property], \"undefined\")\r\n );\r\n };\r\n }\r\n })();\r\n\r\n // _l tracks listeners for async tests, as well as tests that execute after the initial run\r\n ModernizrProto._l = {};\r\n\r\n /**\r\n * Modernizr.on is a way to listen for the completion of async tests. Being\r\n * asynchronous, they may not finish before your scripts run. As a result you\r\n * will get a possibly false negative `undefined` value.\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.on\r\n * @access public\r\n * @function on\r\n * @param {string} feature - String name of the feature detect\r\n * @param {function} cb - Callback function returning a Boolean - true if feature is supported, false if not\r\n * @example\r\n *\r\n * ```js\r\n * Modernizr.on('flash', function( result ) {\r\n * if (result) {\r\n * // the browser has flash\r\n * } else {\r\n * // the browser does not have flash\r\n * }\r\n * });\r\n * ```\r\n */\r\n\r\n ModernizrProto.on = function(feature, cb) {\r\n // Create the list of listeners if it doesn't exist\r\n if (!this._l[feature]) {\r\n this._l[feature] = [];\r\n }\r\n\r\n // Push this test on to the listener list\r\n this._l[feature].push(cb);\r\n\r\n // If it's already been resolved, trigger it on next tick\r\n if (Modernizr.hasOwnProperty(feature)) {\r\n // Next Tick\r\n setTimeout(function() {\r\n Modernizr._trigger(feature, Modernizr[feature]);\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * _trigger is the private function used to signal test completion and run any\r\n * callbacks registered through [Modernizr.on](#modernizr-on)\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr._trigger\r\n * @access private\r\n * @function _trigger\r\n * @param {string} feature - string name of the feature detect\r\n * @param {function|boolean} [res] - A feature detection function, or the boolean =\r\n * result of a feature detection function\r\n */\r\n\r\n ModernizrProto._trigger = function(feature, res) {\r\n if (!this._l[feature]) {\r\n return;\r\n }\r\n\r\n let cbs = this._l[feature];\r\n\r\n // Force async\r\n setTimeout(function() {\r\n let i, cb;\r\n for (i = 0; i < cbs.length; i++) {\r\n cb = cbs[i];\r\n cb(res);\r\n }\r\n }, 0);\r\n\r\n // Don't trigger these again\r\n delete this._l[feature];\r\n };\r\n\r\n /**\r\n * addTest allows you to define your own feature detects that are not currently\r\n * included in Modernizr (under the covers it's the exact same code Modernizr\r\n * uses for its own [feature detections](https://github.com/Modernizr/Modernizr/tree/master/feature-detects)). Just like the offical detects, the result\r\n * will be added onto the Modernizr object, as well as an appropriate className set on\r\n * the html element when configured to do so\r\n *\r\n * @memberof Modernizr\r\n * @name Modernizr.addTest\r\n * @optionName Modernizr.addTest()\r\n * @optionProp addTest\r\n * @access public\r\n * @function addTest\r\n * @param {string|object} feature - The string name of the feature detect, or an\r\n * object of feature detect names and test\r\n * @param {function|boolean} test - Function returning true if feature is supported,\r\n * false if not. Otherwise a boolean representing the results of a feature detection\r\n * @example\r\n *\r\n * The most common way of creating your own feature detects is by calling\r\n * `Modernizr.addTest` with a string (preferably just lowercase, without any\r\n * punctuation), and a function you want executed that will return a boolean result\r\n *\r\n * ```js\r\n * Modernizr.addTest('itsTuesday', function() {\r\n * var d = new Date();\r\n * return d.getDay() === 2;\r\n * });\r\n * ```\r\n *\r\n * When the above is run, it will set Modernizr.itstuesday to `true` when it is tuesday,\r\n * and to `false` every other day of the week. One thing to notice is that the names of\r\n * feature detect functions are always lowercased when added to the Modernizr object. That\r\n * means that `Modernizr.itsTuesday` will not exist, but `Modernizr.itstuesday` will.\r\n *\r\n *\r\n * Since we only look at the returned value from any feature detection function,\r\n * you do not need to actually use a function. For simple detections, just passing\r\n * in a statement that will return a boolean value works just fine.\r\n *\r\n * ```js\r\n * Modernizr.addTest('hasJquery', 'jQuery' in window);\r\n * ```\r\n *\r\n * Just like before, when the above runs `Modernizr.hasjquery` will be true if\r\n * jQuery has been included on the page. Not using a function saves a small amount\r\n * of overhead for the browser, as well as making your code much more readable.\r\n *\r\n * Finally, you also have the ability to pass in an object of feature names and\r\n * their tests. This is handy if you want to add multiple detections in one go.\r\n * The keys should always be a string, and the value can be either a boolean or\r\n * function that returns a boolean.\r\n *\r\n * ```js\r\n * var detects = {\r\n * 'hasjquery': 'jQuery' in window,\r\n * 'itstuesday': function() {\r\n * var d = new Date();\r\n * return d.getDay() === 2;\r\n * }\r\n * }\r\n *\r\n * Modernizr.addTest(detects);\r\n * ```\r\n *\r\n * There is really no difference between the first methods and this one, it is\r\n * just a convenience to let you write more readable code.\r\n */\r\n\r\n function addTest(feature, test) {\r\n if (typeof feature === \"object\") {\r\n for (let key in feature) {\r\n if (hasOwnProp(feature, key)) {\r\n addTest(key, feature[key]);\r\n }\r\n }\r\n } else {\r\n feature = feature.toLowerCase();\r\n let featureNameSplit = feature.split(\".\");\r\n let last = Modernizr[featureNameSplit[0]];\r\n\r\n // Again, we don't check for parent test existence. Get that right, though.\r\n if (featureNameSplit.length === 2) {\r\n last = last[featureNameSplit[1]];\r\n }\r\n\r\n if (typeof last !== \"undefined\") {\r\n // we're going to quit if you're trying to overwrite an existing test\r\n // if we were to allow it, we'd do this:\r\n // var re = new RegExp(\"\\\\b(no-)?\" + feature + \"\\\\b\");\r\n // docElement.className = docElement.className.replace( re, '' );\r\n // but, no rly, stuff 'em.\r\n return Modernizr;\r\n }\r\n\r\n test = typeof test === \"function\" ? test() : test;\r\n\r\n // Set the value (this is the magic, right here).\r\n if (featureNameSplit.length === 1) {\r\n Modernizr[featureNameSplit[0]] = test;\r\n } else {\r\n // cast to a Boolean, if not one already\r\n if (\r\n Modernizr[featureNameSplit[0]] &&\r\n !(Modernizr[featureNameSplit[0]] instanceof Boolean)\r\n ) {\r\n /* eslint-disable */\r\n Modernizr[featureNameSplit[0]] = new Boolean(\r\n Modernizr[featureNameSplit[0]]\r\n );\r\n /* eslint-enable */\r\n }\r\n\r\n Modernizr[featureNameSplit[0]][featureNameSplit[1]] = test;\r\n }\r\n\r\n // Set a single class (either `feature` or `no-feature`)\r\n setClasses([\r\n (!!test && test !== false ? \"\" : \"no-\") +\r\n featureNameSplit.join(\"-\")\r\n ]);\r\n\r\n // Trigger the event\r\n Modernizr._trigger(feature, test);\r\n }\r\n\r\n return Modernizr; // allow chaining.\r\n }\r\n\r\n // After all the tests are run, add self to the Modernizr prototype\r\n Modernizr._q.push(function() {\r\n ModernizrProto.addTest = addTest;\r\n });\r\n\r\n /*!\r\n {\r\n \"name\": \"Webp\",\r\n \"async\": true,\r\n \"property\": \"webp\",\r\n \"tags\": [\"image\"],\r\n \"builderAliases\": [\"img_webp\"],\r\n \"authors\": [\"Krister Kari\", \"@amandeep\", \"Rich Bradshaw\", \"Ryan Seddon\", \"Paul Irish\"],\r\n \"notes\": [{\r\n \"name\": \"Webp Info\",\r\n \"href\": \"https://developers.google.com/speed/webp/\"\r\n }, {\r\n \"name\": \"Chormium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input\",\r\n \"href\": \"https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html\"\r\n }, {\r\n \"name\": \"Webp Lossless Spec\",\r\n \"href\": \"https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification\"\r\n }, {\r\n \"name\": \"Article about WebP support on Android browsers\",\r\n \"href\": \"http://www.wope-framework.com/en/2013/06/24/webp-support-on-android-browsers/\"\r\n }, {\r\n \"name\": \"Chormium WebP announcement\",\r\n \"href\": \"https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1\"\r\n }]\r\n }\r\n ! */\r\n /* DOC\r\n Tests for lossy, non-alpha webp support.\r\n\r\n Tests for all forms of webp support (lossless, lossy, alpha, and animated)..\r\n\r\n Modernizr.webp // Basic support (lossy)\r\n Modernizr.webp.lossless // Lossless\r\n Modernizr.webp.alpha // Alpha (both lossy and lossless)\r\n Modernizr.webp.animation // Animated WebP\r\n\r\n */\r\n\r\n Modernizr.addAsyncTest(function() {\r\n let webpTests = [\r\n {\r\n uri:\r\n \"data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=\",\r\n name: \"webp\"\r\n },\r\n {\r\n uri:\r\n \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\",\r\n name: \"webp.alpha\"\r\n },\r\n {\r\n uri:\r\n \"data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA\",\r\n name: \"webp.animation\"\r\n },\r\n {\r\n uri:\r\n \"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=\",\r\n name: \"webp.lossless\"\r\n }\r\n ];\r\n\r\n let webp = webpTests.shift();\r\n function test(name, uri, cb) {\r\n let image = new Image();\r\n\r\n function addResult(event) {\r\n // if the event is from 'onload', check the see if the image's width is\r\n // 1 pixel (which indiciates support). otherwise, it fails\r\n\r\n let result =\r\n event && event.type === \"load\" ? image.width === 1 : false;\r\n let baseTest = name === \"webp\";\r\n\r\n // if it is the base test, and the result is false, just set a literal false\r\n // rather than use the Boolean contrsuctor\r\n /* eslint-disable */\r\n addTest(\r\n name,\r\n baseTest && result ? new Boolean(result) : result\r\n );\r\n /* eslint-enable */\r\n\r\n if (cb) {\r\n cb(event);\r\n }\r\n }\r\n\r\n image.onerror = addResult;\r\n image.onload = addResult;\r\n\r\n image.src = uri;\r\n }\r\n\r\n // test for webp support in general\r\n test(webp.name, webp.uri, function(e) {\r\n // if the webp test loaded, test everything else.\r\n if (e && e.type === \"load\") {\r\n for (let i = 0; i < webpTests.length; i++) {\r\n test(webpTests[i].name, webpTests[i].uri);\r\n }\r\n }\r\n });\r\n });\r\n\r\n // Run each test\r\n testRunner();\r\n\r\n // Remove the \"no-js\" class if it exists\r\n setClasses(classes);\r\n\r\n delete ModernizrProto.addTest;\r\n delete ModernizrProto.addAsyncTest;\r\n\r\n // Run the things that are supposed to run after the tests\r\n for (let i = 0; i < Modernizr._q.length; i++) {\r\n Modernizr._q[i]();\r\n }\r\n\r\n // Leak Modernizr namespace\r\n window.Modernizr = Modernizr;\r\n})(window, document);\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSingle.vue?vue&type=style&index=0&id=2b4a141c&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LayoutSingle.vue?vue&type=style&index=0&id=2b4a141c&scoped=true&lang=scss&\"","var map = {\n\t\"./da\": \"4e44\",\n\t\"./da.js\": \"4e44\",\n\t\"./de\": \"872c\",\n\t\"./de.js\": \"872c\",\n\t\"./en\": \"c33a\",\n\t\"./en.js\": \"c33a\"\n};\n\nfunction webpackAsyncContext(req) {\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\n\t\tvar id = map[req];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"dcd7\";\nmodule.exports = webpackAsyncContext;","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAAiCAYAAAAQ9/ptAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMXSURBVHgB7Ve9SxtxGH7TOoSi4ihqwfEcSrMoGYMf0M34B/gxK4LQRR06FNSOLjpHXbqZUfCjjlUXoYNxCxRTxxKlCIVe7/kdz+XNecYzbenluAdCLr9L3vd9nvfrkrJtu19ihJRD6FOpdJ2rVu+k1TEw0C1tuJif/yhXV9+l1bG/vyDPJGZICEUdpodWVvISB/T2drlTzrnOSUyQ9FDU8V8J/Yvd1xZ0eHNzJxsbx3J6Whb9BNHZmZbV1bxYVnfd97GYLy6uzfXEREbm5nIyOrru3d/amjENC9Du2VnZuw97U1NZyecz3hnIwi79j4xYsrT0Rpoi1NGRlsVF98e7u+eyuXlsHFQqImtreyZA7fjwsOR9RlAIuFKpqU8y09OFOiKE8+gl7e3purPl5aI5J46OSs0T0oDiqZTrgM41oDgxONhvgtcEcQbs7Hz2yCDT4+MZ844MIFg8hxEQyU8cZ6gciP1HhACkm4BRGKfq2vHkZPbeGcvz4KBU9z2UJeFXXotE0sDJSdkpZUsaIdRQgCpaQQZcLJ57jQ2CdKbLjRnSwO/wegi0D5uzsznvXNt9CKGnnA6MA0CXFh0jg7wP9PW5mdRZhggo4bGx9XuTTosEn3oAoTcfQ1OE4NA/DIaG3PuaDDLLgDDFdJnRDkjpQNFrBAZMUGU0QmhCDJiGdcnAcVBP+cc7COE/ix7PAHsGxCgI7MEnRKFt9m8jhBoKAAwjSwgYhv1KElptLQKB4LDL0Ozb264N9oYWCT64y25va7sQhEkwCE96UtDp5+RBFnTgl5e1kmOZojQ1Ub/SPT1d5rMmBPsgipde7o+VXegMAcPDlqcqwVENYEdp5xQAv2EgCN4/rZBhHSgyoHsWArBf/XvQjycR0hmiYyxeQquOzHEJ6mA1GZQdpiNsYDgQPNPIZj8Ysf4qIT4SQTEAavvvc5Lpe4XCjAlEb3sQxt7CNc51Hwb1HkjSb6MnhuQPXtSREIo6zFD49eWd2D+r0up4/uq9S8j+tif2j6/S6rCtt0kPRR7uYn3xUlISD2CxLjjvryUm+A3Hs7R9EXKqeAAAAABJRU5ErkJggg==\"","export const state = {\r\n error: null\r\n};\r\n\r\nexport const mutations = {\r\n clearError: state => {\r\n state.error = null;\r\n },\r\n setError: (state, payload) => {\r\n if (!state.error || (!state.error.hard && payload.hard)) {\r\n state.error = payload;\r\n return;\r\n }\r\n\r\n if (process.env.NODE_ENV !== \"production\") {\r\n console.error({ error: payload });\r\n }\r\n }\r\n};\r\n\r\nexport const getters = {\r\n getMustShowErrors: state => {\r\n return state.error !== null;\r\n },\r\n getError: state => {\r\n return state.error;\r\n }\r\n};\r\n\r\nexport const actions = {};\r\n","export default {\"loading_message\":{\"flow_loading_searching_trips\":\"Henter afgange...\",\"flow_loading_creating_order\":\"Henter information...\",\"flow_loading_claiming_order\":\"Forbereder billet...\",\"flow_loading_claiming_payment\":\"Forbereder...\",\"flow_loading_confirming_order\":\"Henter billet...\",\"flow_loading_confirming_payment\":\"Registrerer din betaling...\"},\"product_zone_ticket\":{\"title\":\"Enkeltbillet\",\"info\":\"Gyldig til Midttrafiks busser, Letbanen og Midtjyske Jernbaner. Ikke gyldig i DSB og Arriva tog.\"},\"product_dsbstandard_ticket\":{\"title\":\"Enkeltbillet\",\"service_standard\":\"Standard\",\"service_dsb1\":\"DSB 1`\"},\"product_dsbseat_ticket\":{\"title\":\"Pladsbillet\"},\"product_orange_ticket\":{\"title\":\"Orangebillet\",\"refundable\":\"Kan tilbagebetales\",\"non_refundable\":\"Kan ikke tilbagebetales\"},\"product_time_ticket\":{\"title\":\"Tidsbillet\"},\"product_retiree_ticket\":{\"title\":\"Pensionistkort\"},\"field_customer_name\":{\"label\":\"For – og efternavn på den rejsende\",\"error_required\":\"Navn skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_delivery_name\":{\"label\":\"For- og efternavn\",\"error_required\":\"Navn skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_delivery_address\":{\"label\":\"Adresse\",\"error_required\":\"Adresse skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_delivery_city\":{\"label\":\"By\",\"error_required\":\"By skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_delivery_zip\":{\"label\":\"Postnummer\",\"error_required\":\"Postnummer skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_delivery_country\":{\"label\":\"Land\",\"error_required\":\"Land skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_phone\":{\"label\":\"Mobilnummer\",\"error_required\":\"Mobilnummer skal angives\"},\"field_customer_email\":{\"label\":\"Email\",\"error_required\":\"Angiv en email\",\"error_email_invalid\":\"Email er ikke korrekt format\",\"error_email_mismatch\":\"De to emailadresser er ikke ens\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\"},\"field_customer_email_confirm\":{\"label\":\"Gentag email\"},\"field_customer_identification\":{\"label\":\"Vælg ID\",\"error_required\":\"Angiv en identifikations type\"},\"field_customer_control_numbers\":{\"label_last\":\"Sidste {count} cifre i ID\",\"label_first\":\"Første {count} cifre i ID\",\"error_required\":\"Feltet skal udfyldes\",\"error_control_numbers_invalid\":\"Feltet skal bestå af {count} tal\",\"error_control_numbers_length_first\":\"Angiv kun de første {count} cifre i ID\",\"error_control_numbers_length_last\":\"Angiv kun de sidste {count} cifre i ID\"},\"field_customer_terms_accept\":{\"default_label\":\"Acceptér betingelser\",\"required\":\"Du skal acceptere betingelserne\"},\"field_customer_delivery_terms_accept\":{\"default_label\":\"Acceptér betingelser\",\"required\":\"Du skal acceptere betingelserne\"},\"field_customer_newsletter_accept\":{\"default_label\":\"Modtag nyhedsbrev\"},\"field_date_time\":{\"label\":\"Afrejsedag\",\"error\":\"Denne billet er ikke gyldig på den valgte dato\",\"time\":\"Kl\",\"now\":\"Nu\"},\"field_passenger\":{\"label\":\"Antal rejsende\",\"error\":\"Antallet af passagerer skal være minimum 1\"},\"free_children_tickets\":{\"info\":\"(læs om gratis børnebilletter)\",\"link\":\"https://www.midttrafik.dk/kundeservice/rejseregler-bus-letbanen-og-midtjyske-jernbaner/tidsgyldighed-og-aldersgraenser/\"},\"field_stop_location_from\":{\"label\":\"Fra\",\"error_duplicate\":\"Stoppesteder må ikke være ens\"},\"field_stop_location_via\":{\"label\":\"Via\",\"error_duplicate\":\"Stoppesteder må ikke være ens\"},\"field_stop_location_to\":{\"label\":\"Til\",\"error_duplicate\":\"Stoppesteder må ikke være ens\"},\"field_retiree_date_range\":{\"from_label\":\"Gyldig fra\",\"to_label\":\"Gyldig til\",\"from_placeholder\":\"Vælg startdato\",\"to_placeholder\":\"Vælg slutdato\"},\"field_fee_number\":{\"label\":\"Afgiftsnummer\",\"error_required\":\"Afgiftsnummer skal angives\",\"error_invalid_chars\":\"Må ikke indeholde {invalidChars}\",\"error_fee_number_length\":\"Afgiftsnummer er for kort\",\"error_fee_number_invalid\":\"Afgiftsnummer er ikke gyldigt\"},\"selector_stoplocation\":{\"placeholder\":\"Vælg stoppested\",\"searching\":\"Søger\",\"search_string_too_long\":\"Søgestrengen er for lang\",\"no_result\":\"Ingen stoppesteder fundet\",\"search_hint\":\"Søg på stoppestedsnavn\",\"popular\":\"Populærer\",\"search_result_title\":\"Søgeresultat\",\"geo_button_title\":\"Vis min position\"},\"selector_timespan\":{\"time\":\"Kl\",\"now\":\"Nu\",\"departure\":\"Afgang\",\"arrival\":\"Ankomst\"},\"selector_locale_text\":{\"label\":\"Sprog:\",\"datitle\":\"Dansk\",\"detitle\":\"Deutsch\",\"entitle\":\"English\"},\"block_delivery_information\":{\"control_numbers\":\"Sidste {count} tegn\",\"control_numbers_first\":\"Første {count} tegn\",\"delivery_form\":\"Leveringsform\",\"delivery_email\":\"Print-selv billet\",\"delivery_snailmail\":\"Sendes med posten\",\"delivery_address\":\"Sendes til\",\"email\":\"Email\",\"chosen_id\":\"ID til fremvisning\",\"name\":\"Dit navn\",\"newsletter\":\"Ja tak, send mig gerne rabatter og gode tilbud på mail\",\"description_email\":\"Vi sender din billet og din ordrebekræftelse til din e-mail. Husk at medbringe ovenstående ID på rejsen for at billetten er gyldig!\",\"description_snailmail\":\"Vi sender dit kort til ovenstående adresse. Du modtager en kvittering på din e-mail.\",\"description_controlefee\":\"\"},\"block_travel_information\":{\"product_type\":\"Billet\",\"number_of_travelers\":\"Antal rejsende\",\"valid_from\":\"Gyldig fra\",\"valid_to\":\"Gyldig til\",\"number_of_days\":\"Antal dage\",\"validity_period_info_title\":\"Gyldighedsperiode\",\"validity_period_info\":\"Vælg hvornår dit kort skal være gyldigt fra og til. Du kan forvente op til 14 dages leveringstid (længere tid i perioder med helligdage). Derfor kan du tidligst vælge din startdato fra om 14 dage og frem.\",\"day\":\"dag\",\"days\":\"dage\",\"date\":\"Dato\",\"date_payment\":\"Dato for betaling\",\"fee_number\":\"Afgiftsnummer\",\"fee_date\":\"Kontrolafgiftsdato\",\"description\":\"Beskrivelse\",\"validity\":\"Gyldighed\",\"from\":\"Fra\",\"via\":\"Via\",\"to\":\"Til\",\"from_zone\":\"Startzone\",\"via_zone\":\"Viazone\",\"to_zone\":\"Slutzone\",\"total_zones\":\"Antal zoner\",\"total_price\":\"I alt\",\"departure\":\"Afgang\",\"arrival\":\"Ankomst\",\"all_day\":\"hele dagen\",\"travellers\":\"Rejsende\",\"delivery\":\"Levering\"},\"block_fixedprice_ticket_product_information\":{\"price\":\"Pris\",\"valid_period_part_one\":\"Gyldig i\",\"valid_period_part_two\":\"i perioden\",\"valid_whole_day\":\"Gyldig en hel dag i perioden\",\"information\":\"Information om billetten\",\"valid\":\"Gyldighed\"},\"page_order_confirmed\":{\"title\":\"Tak for dit køb\",\"title_controlfee\":\"Din kontrolafgift er nu betalt\",\"email\":\"Vi har sendt dig en e-mail med ordrebekræftelse og din billet\",\"snailmail\":\"Vi har sendt dig en e-mail med ordrebekræftelse\",\"controlfee\":\"Vi har til din oplyste e-mailadresse sendt dig en kvittering på at betaling af kontrolafgiften er foretaget og gennemført.\",\"download_ticket\":\"Download billet\"},\"page_not_found\":{\"title\":\"Hov! Denne side findes ikke\",\"description\":\"Har du brug for hjælp kan du kontakte kundeservice på +45 70 210 230.\",\"button\":\"Søg ny rejse\"},\"page_payment\":{\"title\":\"Betalingsmetode\",\"product_information_title\":\"Ordre detaljer\",\"error_title\":\"Kunne ikke gennemføre betaling\",\"error_code\":\"Fejlkode\",\"retry\":\"Prøv igen\",\"processing\":\"Behandler betaling...\"},\"modal_error\":{\"title\":\"Vi beklager, der er sket en fejl.\",\"description\":\"Prøv venligst igen, eller kontakt kundeservice på +45 70 210 230.\",\"restart\":\"Genstart\",\"close\":\"OK\",\"details\":\"Tekniske detaljer\"},\"modal_error_no_trip\":{\"title\":\"Beklager!\",\"description\":\"Der kunne ikke udstedes en billet til denne rejse. Prøv igen eller kontakt venligst kundeservice.\",\"close\":\"Søg ny rejse\"},\"modal_error_trip_not_available\":{\"title\":\"Beklager!\",\"description\":\"Det er for sent at købe billetter til denne afgang. Vælg en ny afgang, eller kontakt venligst kundeservice\",\"close\":\"Vælg ny afgang\"},\"modal_error_ticket_not_sellable\":{\"title\":\"Beklager!\",\"description\":\"Det er ikke længere muligt at købe denne billet. Prøv igen eller kontakt venligst kundeservice\",\"close\":\"Søg ny rejse\"},\"modal_error_no_seats_available\":{\"title\":\"Beklager!\",\"description\":\"Der er ikke nok pladser ledige. Prøv igen eller kontakt venligst kundeservice\",\"close\":\"Prøv igen\"},\"modal_error_service_unavailable\":{\"title\":\"Vi beklager, der er sket en fejl.\",\"description\":\"Vores service er på nuværende tidspunkt ikke tilgængelig. Prøv venligst igen om et øjeblik.\",\"close\":\"Prøv igen\"},\"modal_error_seat_leg_without_seat\":{\"title\":\"Beklager!\",\"description\":\"Det er desværre ikke muligt, at udstede en billet med plads til denne rejse. Vælg i stedet en enkeltbillet uden plads og køb efterfølgende selve pladsbilletten hos DSB.\",\"close\":\"Søg ny rejse\"},\"modal_error_connection_failed\":{\"title\":\"Vi beklager, der er sket en fejl.\",\"description\":\"Der var problemer med at forbinde til vores servere. Tjek venligst din internetforbindelse, og prøv igen.\"},\"modal_content_page\":{\"title\":\"Hov! Denne side findes ikke\",\"description\":\"Har du brug for hjælp kan du kontakte kundeservice på +45 70 210 230.\"},\"filter_passenger\":{\"choose_travellers\":\"Vælg rejsende\"},\"filter_moment\":{\"days\":\"dage\",\"day\":\"dag\",\"minutes\":\"minutter\",\"minute\":\"minut\",\"hours\":\"timer\",\"hour\":\"time\"},\"block_header\":{\"menu\":\"Menu\",\"privacy_policy\":\"Privatlivspolitik\",\"to_main_page\":\"Til Midttrafik\"},\"block_footer\":{\"customer_center\":\"Midttrafik kundecenter\",\"phone\":\"Tlf. 70 210 230\",\"se_opening_hours\":\"Se åbningstider\",\"accessibility_statement\":\"Tilgængelighedserklæring\",\"payment_options\":\"Betalingsmuligheder\",\"get_app\":\"Hent Midttrafik billetapp\",\"get_app_apple\":\"Hent app i Apple App Store\",\"get_app_google\":\"Hent app i Google Play Store\"},\"block_fixedprice_product_card\":{\"button\":\"Køb billet →\"},\"page_new_zone_ticket\":{\"title\":\"Køb enkeltbilletter\",\"next_step_button\":\"Søg rejse →\",\"add_via\":\"Tilføj viapunkt\",\"goto_all_products\":\"Vis alle øvrige billetter →\",\"airport_warning\":\"Kørsel med rute 925X er omfattet af specialtakst. Køb billetten i menupunktet “Køb øvrige billetter”\"},\"page_new_fixed_price_ticket\":{\"title\":\"Køb øvrige billetter\",\"buttonBuy\":\"Køb billet\",\"buttonFree\":\"Gratis billet\"},\"page_retiree_products\":{\"title\":\"Køb pensionistkort\",\"description\":\"Hvis du er +67 år eller førtidspensionist, kan du købe et pensionistkort på pap, som er gyldigt i hele din kommune. Klik på din kommune for at læse, hvad der gælder for dig.\",\"select_municipality\":\"Vælg kommune\"},\"page_new_retiree_ticket\":{\"title\":\"Køb pensionistkort\",\"product_information_title\":\"Du er ved at købe\",\"validity_span_title\":\"Gyldighedsperiode\",\"validity_span_description\":\"Vælg hvornår dit kort skal være gyldigt fra og til. Du kan forvente op til 14 dages leveringstid (længere tid i perioder med helligdage). Derfor kan du tidligst vælge din startdato fra om 14 dage og frem.\",\"product_variant_title\":\"Produkt\",\"next_step_button\":\"Fortsæt\"},\"page_fixed_price_products\":{\"title\":\"Køb øvrige billetter\",\"description\":\"Midttrafik har særlige tilbud til dig, der skal på tur med familien, en tur fra øst til vest i Region Midtjylland eller med bus til lufthavnen i Aarhus eller Billund.\"},\"page_customer_information\":{\"title\":\"Udfyld oplysninger\",\"product_information_title\":\"Du er ved at købe\",\"product_information_title_payment\":\"Du er ved at betale\",\"identification_title\":\"Fremvisning af ID\",\"identification_description\":\"Èn af de rejsende skal fremvise ID på rejsen for, at billetten er gyldig\",\"identification_link\":\"læs hvorfor\",\"contact_title\":\"Kundeoplysninger\",\"contact_description_email\":\"Du kan både printe billetten eller fremvise din billet på din smartphone. Du får din billet tilsendt som pdf på din e-mail.\",\"contact_description_snailmail\":\"Indtast venligst for- og efternavn på indehaveren af kortet neden for. Vi sender desuden en kvittering for købet på email. Derfor bedes du indtaste en email nedenfor. Hvis du ikke har en email, så lav evt. en aftale med en god ven eller familie, og udfyld dennes email neden for.\",\"contact_description_controlfee\":\"Indtast venligst fornavn, efternavn og e-mail nedenfor. Du modtager en kvittering på din betaling af kontrolafgiften via den oplyste e-mail. Betalingen anses som gennemført, når du modtager din kvittering.\",\"delivery_title\":\"Hvor skal vi sende dit kort hen?\",\"delivery_description\":\"Vi sender dit pensionistkort med posten. Du kan forvente op til {days} dages leveringstid. Indtast dit navn og adresse nedenfor.\",\"next_step_button\":\"Fortsæt\"},\"page_confirm_basket\":{\"title\":\"Godkend bestilling\",\"title_payment\":\"Godkend betaling og betalingsvilkår\",\"confirm_button_part_one\":\"Jeg accepterer\",\"confirm_button_part_one_controlfee\":\"Jeg har læst og accepterer\",\"confirm_button_part_two\":\"for Midttrafik webshop.\",\"confirm_button_part_two_controlfee\":\"for Midttrafik kontrolafgift.\",\"confirm_button_part_three\":\"for at gennemføre mit køb\",\"confirm_button_link\":\"betingelserne\",\"confirm_button_link_controlfee\":\"betalingsvilkår\",\"confirm_privacy_policy_text\":\"Se hvordan dine personoplysninger behandles i Midttrafiks\",\"confirm_button_privacy_link\":\"privatlivspolitik\",\"delivery_terms\":\"Jeg accepterer, at Midttrafik trækker pengene fra mit betalingskort før varen er afsendt, fordi mit pensionistkort er personligt, og tilpasses med mine personlige oplysninger.\",\"delivery_terms_note\":\"*Bestiller du gratis kort til Horsens, er du pt. af tekniske årsager nødt til at acceptere ovenstående. Du har dog ikke opgivet betalingskortoplysninger, og du bliver ikke trukket for noget beløb.\",\"retiree_ticket_bullets\":[\"Dit nye pensionistkort er uden billede. Derfor skal du altid medbringe ID, når du rejser, dvs. pas, kørekort eller sygesikringskort.\",\"Er du førtidspensionist, skal du have dokumentation med, når du rejser, dvs. gyldig pensionsmeddelelse eller legitimationskort udstedt af DSB eller din kommune.\",\"Har du fornyet dit pensionistkort, skal du udskifte både dit stamkort og værdikort hver gang. Det sker af hensyn til kontrolkoden nederst på begge kort, som skal være identiske ved en kontrol.\"],\"next_step_button\":\"Fortsæt til betaling\",\"product_information_title\":\"Betalingskort eller Mobilepay\",\"message_accept_terms\":\"Accepter venligst vilkår og betingelser for at fortsætte\",\"message_payment_method\":\"Vælg betalingsmetode\",\"approve_and_go_to_payment\":\"Godkend og gå til betaling\",\"approve_and_go_to_free_payment\":\"Bestil gratis billet\"},\"page_controlfee\":{\"title\":\"Kontrolafgift\",\"description\":\"Afgiftsnummer\",\"type_your_fee_number\":\"Her skal du indtaste dit afgiftsnummer\",\"next_step_button\":\"Fortsæt\",\"customerinfo\":{\"description\":\"Afgørelsen sendes til dig via digital post eller med brevpost.\"}},\"modal_no_trip\":{\"help\":\"Prøv venligst igen eller kontakt kundeservice på +45 70 210 230.\"},\"product_controlfee\":{\"title\":\"Betaling af kontrolafgift\",\"description\":\"Du er ved at foretage betaling af kontrolafgift\",\"fee\":\"Afgiftsnummer\"}}","module.exports = __webpack_public_path__ + \"static/img/loading.8820c173.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAjCAYAAADv0ujUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANcSURBVHgB7VhdbtpAEB5DlIdKVclDn9oH89DHSuQE9Q3CDeKcAN8g7glKTwA5AeQEkBOQt6pVVCdNWzVB6qJA0vxgb2fJt+rgEgo0EB7ySSPb65nZb2fHu7MmugdorT2Whr7FO1pGMLEcyzaLAtkSi4v7DVoWIJplEK2Z5/T7fj9p0DLATDeIhibCd+n1upeq3e56KVt3nM29AymgJun06Ogk/HJ4WkGaNGBn4dEiIAgXxukppdxe77x6fX2jkyQZMDTXJE503I/1zU2/Rv8BZxplkwoDI8cJR73/fnxacrIr4epqNreykqVsNkOZjEOJZtskIc5tlrjTO9f5fH6tQ/PGuLT4+OF4++DTV/354Js++fFT97q/BhFNIzaRjpMW327SDJgqwiBtVoBdjnLZtrVaUW51haKM4+SePntCL14+n9Rdlf1s0RTI0PR4yzK0zq6v5zucpzucscSkaZ6YmjBHpMmXwl9fe5LUOfykab6YJcIG71mKsuH1+qsmk23SnDErYZO/G+mPL471LrfRPDETYU4LsyTtswSyPaFM1SHHLldWp3pxcXl4dXVdp9uZaeLdYoGaopVuP1NnPrcXZfTbbeUp1W2k7I1OiRYJbLveJLq886lOp7NGDwkmG2BdnkQ3tDvlg2GagsjUIJMObhxmXSUGwMe3Q6mPLw2kjTmJ7NFDAx+fGtFuTyTRNLm+EEhC4kQS4VqgZQNIGoItcb5b3OliFuAItHzRfMQjlhUoRty7nkfouyN+orhYyswa7I+x9YV4NCPhyG6d6FiP2/vRWboCM0Qr1v4OO+vbLoEGY3fKUU48GCp0GuI+EkSs8wh1gY97hesmyESSMGYqggSCsIv3Zfi2/+UUBlPG4DehZ/46FS3hKpRrIGsJaDjy4SQnOvAF+QAdFYSNFjMXiKBYnbLoK4DPEDYNkPXFYAbBtMXPG5Yq3Z4IBkU1FzamqGmy+CxmQ9hDsWNODnYX63Dbvmh7lp5+vljx0Ie1NbN3yLKFXwZGxx4IjnCto29TONUH/cuooBMzkgruQ4zQ6tQQkRCjl201/We6bdkZiNlrIKpDKSEGF8BPRQ+nYzikDwfFVD674p0v7o2xJ+0gvsh1qe8Jn15aJw0EoSR824pvOX7f/gtidlzb9hs9qmVmek5JYwAAAABJRU5ErkJggg==\"","import { callApi } from \"@/api/api-core\";\r\n\r\nexport const searchLocations = function(\r\n searchString,\r\n productTypes,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n searchString: searchString,\r\n productTypes: productTypes\r\n };\r\n return callApi(\r\n \"POST\",\r\n \"v1/location/search/name\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const searchStopsById = function(stopIds, ownerHandlesFailure) {\r\n return callApi(\r\n \"POST\",\r\n \"v4/stop/search/id\",\r\n { stopIds },\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const searchStopsByLocation = function(\r\n longitude,\r\n latitude,\r\n productTypes,\r\n ownerHandlesFailure\r\n) {\r\n return callApi(\r\n \"POST\",\r\n \"v5/stop/search/location\",\r\n {\r\n longitude,\r\n latitude,\r\n productTypes\r\n },\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const getStopByRejseplanenId = function(\r\n rejseplanenId,\r\n productTypes,\r\n ownerHandlesFailure\r\n) {\r\n return callApi(\r\n \"POST\",\r\n \"v3/stop/get/byrejseplanenid\",\r\n {\r\n rejseplanenId,\r\n productTypes\r\n },\r\n ownerHandlesFailure\r\n );\r\n};\r\n","import {\r\n searchLocations,\r\n searchStopsById,\r\n getStopByRejseplanenId,\r\n searchStopsByLocation\r\n} from \"@/api/modules/locations\";\r\nimport { filterChars } from \"@/utilities/chars\";\r\n\r\nexport const LOCATION_FROM = \"FROM\";\r\nexport const LOCATION_VIA = \"VIA\";\r\nexport const LOCATION_TO = \"TO\";\r\nexport const LOCATION_TYPES = [LOCATION_FROM, LOCATION_VIA, LOCATION_TO];\r\nconst AIRPORT_ZONES = [4314]\r\n\r\nexport const state = {\r\n locations: {\r\n [LOCATION_FROM]: null,\r\n [LOCATION_VIA]: null,\r\n [LOCATION_TO]: null\r\n },\r\n popularStops: []\r\n};\r\n\r\nexport const mutations = {\r\n setLocationByType: (state, data) => {\r\n const stop = { ...data.value };\r\n if (data.type in state.locations) {\r\n state.locations[data.type] = stop;\r\n }\r\n },\r\n setPopularStops: (state, data) => {\r\n state.popularStops = data.stops;\r\n },\r\n swapLocations: state => {\r\n const prevFrom = state.locations[LOCATION_FROM];\r\n const prevTo = state.locations[LOCATION_TO];\r\n state.locations[LOCATION_FROM] = prevTo;\r\n state.locations[LOCATION_TO] = prevFrom;\r\n },\r\n unsetLocationFrom: state => {\r\n state.locations[LOCATION_FROM] = null;\r\n },\r\n unsetLocationVia: state => {\r\n state.locations[LOCATION_VIA] = null;\r\n },\r\n unsetLocationTo: state => {\r\n state.locations[LOCATION_TO] = null;\r\n },\r\n unsetLocations: state => {\r\n state.locations[LOCATION_FROM] = null;\r\n state.locations[LOCATION_TO] = null;\r\n state.locations[LOCATION_VIA] = null;\r\n }\r\n};\r\n\r\nexport const getters = {\r\n getLocationByType: state => {\r\n return type => {\r\n return state.locations[type];\r\n };\r\n },\r\n getFromLocation: state => state.locations[LOCATION_FROM],\r\n getViaLocation: state => state.locations[LOCATION_VIA],\r\n getToLocation: state => state.locations[LOCATION_TO],\r\n getLocationRouteText: (state, getters) => {\r\n const from = getters.getFromLocation;\r\n const via = getters.getViaLocation;\r\n const to = getters.getToLocation;\r\n\r\n if (from === null || to === null) {\r\n return \"\";\r\n } else if (via === null) {\r\n return from.name + \" - \" + to.name;\r\n } else {\r\n return from.name + \" - \" + via.name + \" - \" + to.name;\r\n }\r\n },\r\n getPopularStops: state => {\r\n return state.popularStops;\r\n },\r\n hasDuplicates: (state, getters) => {\r\n const locationFrom = getters.getFromLocation;\r\n const locationVia = getters.getViaLocation;\r\n const locationTo = getters.getToLocation;\r\n\r\n if (locationFrom && locationTo && locationFrom.id === locationTo.id) {\r\n if (locationFrom.id == null && locationTo.id == null) {\r\n if (locationFrom.name === locationTo.name) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n if (locationFrom && locationVia && locationFrom.id === locationVia.id) {\r\n if (locationFrom.id == null && locationVia.id == null) {\r\n if (locationFrom.name === locationVia.name) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n if (locationTo && locationVia && locationTo.id === locationVia.id) {\r\n if (locationVia.id == null && locationTo.id == null) {\r\n if (locationVia.name === locationTo.name) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n },\r\n stopNearAirport: (state, getters) => {\r\n const locationFrom = getters.getFromLocation;\r\n const locationVia = getters.getViaLocation;\r\n const locationTo = getters.getToLocation;\r\n\r\n if(locationFrom != null && AIRPORT_ZONES.includes(locationFrom.zoneNumber)){\r\n return true;\r\n }\r\n\r\n if(locationVia != null && AIRPORT_ZONES.includes(locationVia.zoneNumber)){\r\n return true;\r\n }\r\n\r\n if(locationTo != null && AIRPORT_ZONES.includes(locationTo.zoneNumber)){\r\n return true;\r\n } \r\n return false;\r\n }\r\n};\r\n\r\nexport const actions = {\r\n setLocationByType: (context, payload) => {\r\n // Update location\r\n context.commit(\"setLocationByType\", payload);\r\n\r\n return Promise.resolve();\r\n },\r\n setLocationByTypeAndId: (context, { type, stopId }) => {\r\n return searchStopsById([stopId])\r\n .then(response => {\r\n if (!response.ok) throw new Error(JSON.stringify(response));\r\n return response.responseBody.stops[0];\r\n })\r\n .then(stop => {\r\n if (stop) {\r\n return context.commit(\"setLocationByType\", {\r\n type,\r\n value: stop\r\n });\r\n } else {\r\n return null;\r\n }\r\n });\r\n },\r\n setLocationByTypeAndGeo: (context, { type, longitude, latitude }) => {\r\n const productTypes = context.rootGetters[\"system/getStopProductTypes\"];\r\n return searchStopsByLocation(longitude, latitude, productTypes).then(\r\n res => {\r\n if (!res.ok || !res.responseBody || !res.responseBody.stop)\r\n return null;\r\n\r\n return context.dispatch(\"setLocationByTypeAndId\", {\r\n type,\r\n stopId: res.responseBody.stop.id\r\n });\r\n }\r\n );\r\n },\r\n setStopsByRejseplanenIds: (context, { stopFromId, stopToId }) => {\r\n const productTypes = context.rootGetters[\"system/getStopProductTypes\"];\r\n return Promise.all([\r\n getStopByRejseplanenId(stopFromId, productTypes),\r\n getStopByRejseplanenId(stopToId, productTypes)\r\n ]).then(([fromStop, toStop]) => {\r\n if (!fromStop.ok || !toStop.ok) return false;\r\n return Promise.all([\r\n context.dispatch(\"setLocationByTypeAndId\", {\r\n type: LOCATION_FROM,\r\n stopId: fromStop.responseBody.id\r\n }),\r\n context.dispatch(\"setLocationByTypeAndId\", {\r\n type: LOCATION_TO,\r\n stopId: toStop.responseBody.id\r\n })\r\n ]);\r\n });\r\n },\r\n searchPopularStops: context => {\r\n return context\r\n .dispatch(\"searchLocations\", {\r\n search: \"\"\r\n })\r\n .then(stops => {\r\n context.commit(\"setPopularStops\", {\r\n stops: stops\r\n });\r\n });\r\n },\r\n searchLocations: (context, payload) => {\r\n const stopProductTypes =\r\n context.rootGetters[\"system/getStopProductTypes\"];\r\n const validChars = context.rootGetters[\"system/commonCharacterSet\"];\r\n\r\n return searchLocations(\r\n filterChars(payload.search, validChars),\r\n stopProductTypes,\r\n true\r\n )\r\n .then(response => {\r\n if (response.ok) {\r\n return response.responseBody;\r\n }\r\n\r\n return Promise.reject(new Error(JSON.stringify(response)));\r\n })\r\n .then(searchResults => {\r\n return searchResults.locations;\r\n });\r\n }\r\n};\r\n","import { invalidChars } from \"@/utilities/chars\";\r\n\r\nfunction initialState() {\r\n return {\r\n name: null,\r\n phone: null,\r\n email: null,\r\n emailConfirm: null,\r\n identificationType: null,\r\n controlNumbers: null,\r\n newsletterAccept: null,\r\n termsAccept: false,\r\n deliveryName: null,\r\n deliveryAddress: null,\r\n deliveryZip: null,\r\n deliveryCity: null,\r\n deliveryCountry: \"Danmark\",\r\n deliveryTermsAccept: false\r\n };\r\n}\r\n\r\nfunction validateName({ getName: value, getNameInvalidChars: invalidChars }) {\r\n if (!value) return ERROR_REQUIRED;\r\n if (invalidChars.length) return ERROR_INVALID_CHARS;\r\n return null;\r\n}\r\n\r\nfunction validateEmail({\r\n getEmail: value,\r\n getEmailInvalidChars: invalidChars\r\n}) {\r\n if (!value) return ERROR_REQUIRED;\r\n if (value.indexOf(\"@\") === -1 || value.indexOf(\".\") === -1)\r\n return ERROR_EMAIL_INVALID;\r\n if (invalidChars.length) return ERROR_INVALID_CHARS;\r\n return null;\r\n}\r\n\r\nfunction validateEmailConfirm({ getEmailConfirm: value, getEmail: other }) {\r\n return value !== other ? ERROR_EMAIL_MISMATCH : null;\r\n}\r\n\r\nfunction validateIdentificationType({ getIdentificationType: value }) {\r\n return value ? null : ERROR_REQUIRED;\r\n}\r\n\r\nfunction validateControlNumbers({\r\n getControlNumbers: value,\r\n getIdentificationType: identificationType\r\n}) {\r\n if (!value) return ERROR_REQUIRED;\r\n if (isNaN(value)) return ERROR_CONTROL_NUMBERS_INVALID;\r\n\r\n if (identificationType) {\r\n if (\r\n !identificationType.useDigitsFromEnd &&\r\n identificationType.numberOfControlDigits !== value.length\r\n ) {\r\n return ERROR_CONTROL_NUMBERS_LENGTH_FIRST;\r\n }\r\n if (\r\n identificationType.useDigitsFromEnd &&\r\n identificationType.numberOfControlDigits !== value.length\r\n ) {\r\n return ERROR_CONTROL_NUMBERS_LENGTH_LAST;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction validatePhone() {\r\n return null;\r\n}\r\n\r\nfunction validateDelivery(key) {\r\n const Key = key.charAt(0).toUpperCase() + key.slice(1);\r\n return getters => {\r\n const value = getters[`getDelivery${Key}`];\r\n const invalidChars = getters[`getDelivery${Key}InvalidChars`];\r\n if (!value) return ERROR_REQUIRED;\r\n if (invalidChars.length) return ERROR_INVALID_CHARS;\r\n return null;\r\n };\r\n}\r\n\r\n// this is only for checking if customer data is valid, and not if user has agreed to the terms\r\nfunction isValid(_state, getters, _rootState, rootGetters) {\r\n const deliveryMethod = rootGetters[\"order/getDeliveryMethod\"];\r\n\r\n const generic = ![\r\n getters.getNameError,\r\n getters.getPhoneError,\r\n getters.getEmailError,\r\n getters.getEmailConfirmError\r\n ].filter(e => Boolean(e))[0];\r\n\r\n let specific = true;\r\n\r\n if (deliveryMethod === \"email\") {\r\n specific = ![\r\n getters.getIdentificationTypeError,\r\n getters.getControlNumbersError\r\n ].filter(e => Boolean(e))[0];\r\n }\r\n\r\n if (deliveryMethod === \"snailmail\") {\r\n specific = ![\r\n getters.getDeliveryNameError,\r\n getters.getDeliveryAddressError,\r\n getters.getDeliveryZipError,\r\n getters.getDeliveryCityError,\r\n getters.getDeliveryCountryError\r\n ].filter(e => Boolean(e))[0];\r\n }\r\n\r\n return generic && specific;\r\n}\r\n\r\nconst fields = [\r\n { key: \"name\", charSet: \"common\", validate: validateName },\r\n { key: \"phone\", validate: validatePhone },\r\n { key: \"email\", charSet: \"mailAddress\", validate: validateEmail },\r\n { key: \"emailConfirm\", validate: validateEmailConfirm },\r\n { key: \"identificationType\", validate: validateIdentificationType },\r\n { key: \"controlNumbers\", validate: validateControlNumbers },\r\n {\r\n key: \"deliveryName\",\r\n charSet: \"common\",\r\n validate: validateDelivery(\"name\")\r\n },\r\n {\r\n key: \"deliveryAddress\",\r\n charSet: \"common\",\r\n validate: validateDelivery(\"address\")\r\n },\r\n {\r\n key: \"deliveryZip\",\r\n charSet: \"common\",\r\n validate: validateDelivery(\"zip\")\r\n },\r\n {\r\n key: \"deliveryCity\",\r\n charSet: \"common\",\r\n validate: validateDelivery(\"city\")\r\n },\r\n {\r\n key: \"deliveryCountry\",\r\n charSet: \"common\",\r\n validate: validateDelivery(\"country\")\r\n }\r\n];\r\n\r\nexport const ERROR_REQUIRED = \"error_required\";\r\nexport const ERROR_INVALID_CHARS = \"error_invalid_chars\";\r\nexport const ERROR_EMAIL_INVALID = \"error_email_invalid\";\r\nexport const ERROR_EMAIL_MISMATCH = \"error_email_mismatch\";\r\nexport const ERROR_CONTROL_NUMBERS_INVALID = \"error_control_numbers_invalid\";\r\nexport const ERROR_CONTROL_NUMBERS_LENGTH_FIRST =\r\n \"error_control_numbers_length_first\";\r\nexport const ERROR_CONTROL_NUMBERS_LENGTH_LAST =\r\n \"error_control_numbers_length_last\";\r\n\r\nexport const state = initialState();\r\n\r\nexport const mutations = {\r\n updateCustomer: (state, payload) => {\r\n Object.keys(payload).forEach(key => {\r\n if (state.hasOwnProperty(key)) {\r\n state[key] = payload[key];\r\n }\r\n });\r\n },\r\n resetCustomer: state => {\r\n const s = initialState();\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key];\r\n });\r\n }\r\n};\r\n\r\nexport const getters = {\r\n isValid,\r\n getNewsletterAccept: state => state.newsletterAccept,\r\n getTermsAccept: state => state.termsAccept,\r\n getDeliveryTermsAccept: state => state.deliveryTermsAccept\r\n};\r\n\r\nfields.forEach(({ key, charSet, validate }) => {\r\n const Key = key.charAt(0).toUpperCase() + key.slice(1);\r\n getters[`get${Key}`] = state => state[key];\r\n\r\n if (charSet) {\r\n getters[`get${Key}InvalidChars`] = (\r\n _state,\r\n getters,\r\n _rootState,\r\n rootGetters\r\n ) =>\r\n invalidChars(\r\n getters[`get${Key}`],\r\n rootGetters[`system/${charSet}CharacterSet`]\r\n );\r\n }\r\n\r\n if (validate) {\r\n getters[`get${Key}Error`] = (_state, getters) => validate(getters);\r\n }\r\n});\r\n\r\nexport const actions = {};\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitRowAll.vue?vue&type=style&index=0&id=743909b2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SplitRowAll.vue?vue&type=style&index=0&id=743909b2&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"static/img/logo.d27df3f5.svg\";","import { callApi } from \"@/api/api-core\";\r\n\r\nexport const setEmailDelivery = function(\r\n orderId,\r\n cardIdentificationId,\r\n cardIdentificationCharacters,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n cardIdentificationId,\r\n cardIdentificationCharacters\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/delivery/email/setdelivery\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const setSnailmailDelivery = function(\r\n orderId,\r\n inputDeliveryAddress,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n termsAccepted: true,\r\n inputDeliveryAddress\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/delivery/snailmail/setdelivery\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const fetchSnailmailInfo = function(ownerHandlesFailure) {\r\n const requestData = {};\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/delivery/snailmail/info\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n\r\nexport const setControlFeeDelivery = function(\r\n orderId,\r\n ownerHandlesFailure\r\n) {\r\n const requestData = {\r\n orderId,\r\n };\r\n\r\n return callApi(\r\n \"POST\",\r\n \"v1/delivery/controlfee/setdelivery\",\r\n requestData,\r\n ownerHandlesFailure\r\n );\r\n};\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectorLocaleFlag.vue?vue&type=style&index=0&id=2128bafc&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectorLocaleFlag.vue?vue&type=style&index=0&id=2128bafc&scoped=true&lang=css&\"","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""}