{"version":3,"names":["itemsDataHelper","jsonString","length","jsonArray","JSON","parse","console","warn","foundSomethingThatIsNotAnObject","didNotFindNameKey","forEach","item","Array","isArray","itemKeys","Object","keys","indexOf","inputEvents","inputEvent","keyupEvent","pafAutocompleteCss","PafAutocompleteStyle0","PafAutocomplete","constructor","hostRef","this","autocompleteId","inputRequired","itemSelected","_isVisible","_selectedAutocompleteItemIndex","_userDidManipulateInputValue","_initialInputValue","_emittedEventPayload","_handleArrowKeys","key","_dataItems","isDownKey","_inputValue","name","selectedElement","_list","children","scrollIntoView","behavior","block","_handleEscapeKey","_handleEnterKey","_emitSelectedEventWithId","_handleKeyPress","evt","_focusInputElement","event","CustomEvent","bubbles","composed","_nativeInputElement","dispatchEvent","_handleInput","searchItem","filter","selectedEvent","emit","id","_handleFocus","_a","_handleBlur","didClickList","contains","relatedTarget","value","_handleListClick","path","composedPath","firstElement","firstLiElement","tagName","toLowerCase","firstChild","innerText","_listAttributes","listAttributes","_a11yHelpText","a11yHintText","a11yResults","helpTextResultsAvailable","replace","toString","helpTextUseArrowKeysToNavigate","handleFocusDemandFromOutside","_inputElement","handleItemsChange","newValue","items","undefined","handleValueChange","componentWillLoad","componentDidLoad","querySelector","addEventListener","disconnectCallback","removeEventListener","render","h","class","autoCompleteIndex","inputName","label","inputLabel","placeholder","inputPlaceholder","inputId","type","required","errorMessage","inputErrorMessage","ref","elem","role","tabindex","title","assign","list","listAssistiveText","el","map","index","itemId","text","selected","ariaPosinset","ariaSetsize","pafAutocompleteItemCss","PafAutocompleteItemStyle0","PafAutocompleteItem","_setAriaAttributes","attrs","pafButtonCss","PafButtonStyle0","PafButton","variant","disabled","isLink","icon","forcePreventDefault","_expanded","_buttonClick","preventDefault","clicked","expandableChanged","_buttonKeyDown","expandableKeyDown","detail","expandedWatcher","expanded","hasNoText","iconDescription","TAGNAME","elementAttributes","href","target","aLabelValue","textWithOptionalHiddenText","hiddenTextOpensInNewWindow","onClick","onKeyDown","button","rotateIcon","innerHTML","viewBox","d","iconVariantPaths","attribute","utilization","wheelchair","pafIconCss","PafIconStyle0","PafIcon","imageSrc","getAssetPath","alt","decoding","loading","src","timeTableEvents","cancelFocusOnSummaryTitle","pafJourneySummaryCss","PafJourneySummaryStyle0","PafJourneySummary","_display","_parseAssistiveTextTitle","assistiveText","assistiveTextTitle","origin","destination","via","viaDescription","_parseAssistiveTextDetails","assistiveTextDetails","date","time","_isVisibleInViewport","element","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","_setFocusOnAssistiveTitleText","_heading","setAttribute","focus","_setupScrollTimeOut","prefersReducedMotion","matchMedia","matches","clearTimeout","_scrollTimeout","setTimeout","_removeTabIndex","removeAttribute","_cancelFocusEvent","_onChange","change","watchPropHandler","disconnectedCallback","HEADING_TAG","headingLevel","headingAriaLabel","attributes","summary","visible","onBlur","details","departureArrival","changeButtonText","pafNoResultsCss","PafNoResultsStyle0","PafNoResults","headingText","description","pafNotificationCss","PafNotificationStyle0","PafNotification","TITLE_TAG","titleLevel","titleText","content","pafRadioCheckboxCss","PafRadioCheckboxStyle0","PafRadioCheckbox","_handleChange","checked","inputAttributes","onChange","r","cx","cy","htmlFor","toggleCheckboxEvents","changed","pafRadioCheckboxGroupCss","PafRadioCheckboxGroupStyle0","PafRadioCheckboxGroup","_handleToggleChange","_toggleCheckboxChecked","_disableOrEnableInputs","_radioCheckboxElements","_setButtonText","_buttonText","_allCheckboxesChecked","uncheckAllButtonText","checkAllButtonText","_toggleAriaLive","_ariaLive","allChecked","_checkboxElements","_handleCheckUncheckAll","_handleSlotChange","showCheckUncheckAllButton","_element","querySelectorAll","showToggleCheckbox","toggleCheckboxCheckedWatcher","toggleCheckboxChecked","legend","toggleCheckboxValue","toggleCheckboxName","toggleCheckboxLabel","onFocusout","onFocusin","pafResultAlertCss","PafResultAlertStyle0","PafResultAlert","iconName","pafResultAttributesCss","PafResultAttributesStyle0","PafResultAttributes","attributeIcons","config","level","attributeItem","pafResultDayChangeCss","PafResultDayChangeStyle0","PafResultDayChange","visuallyHidden","hidden","pafResultFootpathCss","PafResultFootpathStyle0","PafResultFootpath","viewBoxDefinition","svgContent","timeAssistiveText","pafResultLegendCss","PafResultLegendStyle0","PafResultLegend","firstFootnote","secondFootnote","pafResultLegendItemCss","PafResultLegendItemStyle0","PafResultLegendItem","Host","iconVariant","renderWithoutRole","getRoundingMethod","method","number","round","Math","trunc","result","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","constructFromSymbol","Symbol","for","constructFrom","Date","toDate","argument","context","differenceInMilliseconds","laterDate","earlierDate","differenceInMinutes","dateLeft","dateRight","options","diff","roundingMethod","isAfter","dateToCompare","isBefore","normalizeDates","dates","normalize","bind","find","getTimezoneOffsetInMilliseconds","_date","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","startOfDay","in","setHours","differenceInCalendarDays","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","isDate","prototype","call","isValid","isNaN","parseISO","invalidDate","NaN","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","year","timestamp","offset","parseTime","timezone","parseTimezone","tmpDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","dateString","array","split","timeString","test","substr","token","exec","regex","RegExp","captures","match","parseInt","century","slice","isWeekDate","dayOfYear","parseDateUnit","month","day","week","dayOfWeek","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","max","hours","parseTimeUnit","minutes","seconds","validateTime","parseFloat","timezoneString","sign","validateTimezone","isoWeekYear","fourthOfJanuaryDay","getUTCDay","setUTCDate","daysInMonths","isLeapYearIndex","_year","_hours","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","count","tokenValue","addSuffix","comparison","buildFormatLongFn","args","width","String","defaultWidth","format","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","values","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","dirtyNumber","Number","rem100","localize","era","quarter","dayPeriod","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","pattern","findKey","valueCallback","rest","object","predicate","hasOwnProperty","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","code","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","defaultFormat","formatDuration","duration","locale","defaultLocale","zero","delimiter","reduce","acc","unit","m","toUpperCase","concat","join","startOfYear","date_","getDayOfYear","startOfWeek","getDay","setDate","startOfISOWeek","getISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTime","startOfISOWeekYear","fourthOfJanuary","getISOWeek","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","abs","padStart","lightFormatters","y","signedYear","M","a","dayPeriodEnumValue","H","s","S","numberOfDigits","milliseconds","fractionalSeconds","pow","dayPeriodEnum","formatters","G","Y","signedWeekYear","weekYear","twoDigitYear","R","u","Q","ceil","q","L","w","I","isoWeek","D","E","e","localDayOfWeek","c","i","isoDayOfWeek","b","B","K","k","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","T","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","p","P","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","input","_message","message","includes","RangeError","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","originalDate","parts","substring","firstCharacter","longFormatter","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","formatter","matched","intlFormat","formatOrLocale","localeOptions","formatOptions","isFormatOptions","Intl","DateTimeFormat","opts","i18nDurationDay","multiple","de","en","fr","it","single","i18nDurationMinute","i18nDurationHour","removeTimezoneFromIsoTimeString","isoTime","parsedDate","isoDurationToDurationObject","ISO_DURATION_REGEX","parsedArgument","years","months","weeks","days","entries","durationObject","prev","isoDurationToTripDuration","formatInterface","language","formatDistanceLocaleShort","formatDistanceLocaleLong","formatDistanceLocaleLongSingle","shortLocale","isoDurationToWalkDuration","isoDurationToWalkDurationFormatted","formatDateStringToReadableDate","dateObject","formatDateStringToReadableDateLongForm","formatDateForDatepicker","formatDateForTimepicker","formatDateStringIncludingDayName","lang","formattedDate","weekday","pafResultPearlChainCss","PafResultPearlChainStyle0","PafResultPearlChain","_getAllDuration","legs","sum","leg","arrivalNoTz","arrival","departureNoTz","departure","_b","_getRelativeDuration","allDurations","_getStatus","now","start","end","legsArray","allLegsDisrupted","every","cancelled","departureNotServiced","Boolean","stopPoints","stopStatus","arrivalNotServiced","lastLeg","stops","orientation","status","hasProgressStatus","hasPastStatus","isCancelled","isDepartureSkipped","isArrivalSkipped","style","pafResultPearlChainTimeCss","PafResultPearlChainTimeStyle0","PafResultPearlChainTime","departureTimeWithoutTimezone","departureTime","arrivalTimeWithoutTimezone","arrivalTime","movementTypeIconPath","departureWalk","arrivalWalk","pafResultPriceBadgeCss","PafResultPriceBadgeStyle0","PafResultPriceBadge","badge","isDiscount","priceText","pafResultRowFooterCss","PafResultRowFooterStyle0","PafResultRowFooter","_getOccupancyData","utilizationItems","travelClass","occupancyClassOne","occupancyClassTwo","hasAttributeIcons","platform","hasPlatformChange","stringify","cusHimIcons","pafResultRowHeaderCss","PafResultRowHeaderStyle0","PafResultRowHeader","pictoIconVariant","productIconVariant","wrapper","picto","productIcon","productText","direction","pafResultStationAndPlatformCss","PafResultStationAndPlatformStyle0","PafResultStationAndPlatform","stationName","platformChange","pafResultTimeCss","PafResultTimeStyle0","PafResultTime","showDelay","delay","timeWithoutTimezone","pafResultTimetableLegCss","PafResultTimetableLegStyle0","PafResultTimetableLeg","heading","summaryDeparture","summaryArrival","pafResultTimetableListCss","PafResultTimetableListStyle0","PafResultTimetableList","previousButtonText","buttonsHidden","buttonsDisabled","prevNextClicked","nextButtonText","pafResultTimetableRowCss","PafResultTimetableRowStyle0","PafResultTimetableRow","timeTableRowButtonChanged","which","ariaExpanded","pafResultUtilizationCss","PafResultUtilizationStyle0","PafResultUtilization","utilizationItem","pafResultUtilizationIconCss","PafResultUtilizationIconStyle0","PafResultUtilizationIcon","fileNameModifier","linkEvents","toggleRadioEvents","autocompleteEvents","debounce","func","waitFor","timeout","debounced","BASE_PATH","Configuration","configuration","basePath","fetchApi","middleware","queryParamsStringify","querystring","username","password","apiKey","accessToken","async","headers","credentials","DefaultConfig","BaseAPI","url","init","fetchParams","pre","fetch","response","onError","error","clone","Error","FetchError","post","withMiddleware","middlewares","next","withPreMiddleware","preMiddlewares","withPostMiddleware","postMiddlewares","isJsonMime","mime","jsonRegex","request","initOverrides","createFetchParams","ResponseError","query","initOverrideFn","initParams","body","overriddenInit","isFormData","URLSearchParams","isBlob","Blob","FormData","msg","super","cause","RequiredError","field","params","prefix","querystringSingleKey","keyPrefix","fullKey","multiValue","singleValue","encodeURIComponent","Set","valueAsArray","from","toISOString","JSONApiResponse","raw","transformer","jsonValue","json","PointFromJSON","PointFromJSONTyped","ignoreDiscriminator","coordinates","AddressFromJSON","AddressFromJSONTyped","PointOfInterestCategoryFromJSON","PointOfInterestCategoryFromJSONTyped","subtype","PointOfInterestFromJSON","PointOfInterestFromJSONTyped","PlaceFromJSONTyped","categories","VehicleModeFromJSON","VehicleModeFromJSONTyped","corporateIdentityIcon","vehicleSubModeName","vehicleSubModeShortName","LinksFromJSON","LinksFromJSONTyped","StopPlaceFromJSON","StopPlaceFromJSONTyped","swissLocationId","tariffBorder","weighting","vehicleModes","links","PlaceFromJSON","countryCode","canton","distanceToSearchPosition","centroid","AccessEndFromJSON","AccessEndFromJSONTyped","place","timeAimed","AlternativeModeLegFromJSON","AlternativeModeLegFromJSONTyped","LinkedTextFromJSON","LinkedTextFromJSONTyped","template","arguments","NoticeFromJSON","NoticeFromJSONTyped","priority","routeIndexFrom","routeIndexTo","advertised","ConnectionEndFromJSON","ConnectionEndFromJSONTyped","PTConnectionLegFromJSON","PTConnectionLegFromJSONTyped","LegFromJSONTyped","notices","LineStringFromJSON","LineStringFromJSONTyped","OperatingPeriodFromJSON","OperatingPeriodFromJSONTyped","daysRegularFormatted","daysIrregularFormatted","operatingDays","shortName","LegendItemV3FromJSON","LegendItemV3FromJSONTyped","QuayFromJSON","QuayFromJSONTyped","parentId","DeckPlanFromJSON","DeckPlanFromJSONTyped","typeTechnical","typeAdvertised","typeAdvertisedLink","buildCategory","TrainElementFromJSON","TrainElementFromJSONTyped","passengerClass","deckPlan","BoardingPositionFromJSON","BoardingPositionFromJSONTyped","TrainComponentFromJSON","TrainComponentFromJSONTyped","occupancy","previousPassage","nextPassage","displayNoPassageIcon","closed","restaurantAttended","boardingPosition","attributesAdvertised","TrainFromJSON","TrainFromJSONTyped","components","CompoundTrainFromJSON","CompoundTrainFromJSONTyped","operationalOrientation","trainChanges","trains","legendItems","deckPlanAssumed","quay","TrainStopAssignmentFromJSON","TrainStopAssignmentFromJSONTyped","compoundTrain","ConnectionFromJSON","ConnectionFromJSONTyped","mobilityRestrictedTravellerDuration","mobilityRestrictedTravellerTransferCritical","mobilityRestrictedTravellerTransferRule","NavigationPathAssignmentFromJSON","NavigationPathAssignmentFromJSONTyped","connectionTo","StopCallFromJSON","StopCallFromJSONTyped","timeRt","delayText","quayAimed","quayRt","quayChanged","quayFormatted","trainStopAssignment","navigationPathAssignment","AccessibilityBoardingAlightingFromJSON","AccessibilityBoardingAlightingFromJSONTyped","limitation","assistanceService","ScheduledStopPointFromJSON","ScheduledStopPointFromJSONTyped","forBoarding","forAlighting","forBoardingAndAlightingFormatted","accessibilityBoardingAlighting","stopStatusFormatted","requestStop","stopUse","delayUndefined","routeIndex","occupancyFirstClass","occupancySecondClass","exitSide","rank","ServiceAlterationFromJSON","ServiceAlterationFromJSONTyped","cancelledFormatted","partiallyCancelled","partiallyCancelledFormatted","reachable","reachableFormatted","redirected","redirectedFormatted","unplannedStopPointsFormatted","delayFormatted","quayChangedFormatted","AudienceLinkFromJSON","AudienceLinkFromJSONTyped","AudienceFromJSON","AudienceFromJSONTyped","urls","validFromDate","validFromTime","validToDate","validToTime","PublicationWindowFromJSON","PublicationWindowFromJSONTyped","startDate","startTime","endDate","endTime","dailyStartingAt","dailyDuration","PTSituationMessageFromJSON","PTSituationMessageFromJSONTyped","alternateId","detailShort","distributionPeriod","audiences","GeofenceCircleFromJSON","GeofenceCircleFromJSONTyped","radius","AffectedRegionFromJSON","AffectedRegionFromJSONTyped","nameFormatted","iconPosition","spatialProjection","geofence","AffectedEdgeFromJSON","AffectedEdgeFromJSONTyped","PTSituationAffectedScopeFromJSON","PTSituationAffectedScopeFromJSONTyped","stopPointFrom","stopPointTo","edges","regions","PTSituationFromJSON","PTSituationFromJSONTyped","affectedScope","broadcastMessages","OperatorFromJSON","OperatorFromJSONTyped","swissBusinessOrganisationId","ServiceProductFromJSON","ServiceProductFromJSONTyped","line","lineId","vehicleMode","numberFormatted","operator","DirectionFromJSON","DirectionFromJSONTyped","CheckConstraintFromJSON","CheckConstraintFromJSONTyped","ServiceJourneyFromJSON","ServiceJourneyFromJSONTyped","operatingDay","checkConstraints","serviceProducts","serviceAlteration","situations","operatingPeriods","quayTypeName","quayTypeShortName","directions","PaginationCursorFromJSON","PaginationCursorFromJSONTyped","previous","TrainStopAssignmentHintFromJSON","TrainStopAssignmentHintFromJSONTyped","departureAvailable","arrivalAvailable","compoundTrainChangesTitle","compoundTrainChanges","PTRideLegFromJSON","PTRideLegFromJSONTyped","serviceJourney","groupReservationStatus","paginationCursor","trainStopAssignmentHint","PersonalLegFromJSON","PersonalLegFromJSONTyped","LegFromJSON","AccessLegFromJSONTyped","mode","distance","AccessLegFromJSON","AccessibilityEnumToJSON","TransportModeEnumToJSON","AlternateMatchEnumToJSON","ArchiveConnectionReliabilityFromJSON","ArchiveConnectionReliabilityFromJSONTyped","original","alternative","AudienceEnumFromJSON","AudienceEnumFromJSONTyped","ScheduledStopPointReferenceToJSON","ScheduledStopPointReferenceToJSONTyped","stopPlaceId","DatedVehicleJourneyReferenceToJSON","DatedVehicleJourneyReferenceToJSONTyped","operatorNumber","EcoBalanceFromJSON","EcoBalanceFromJSONTyped","co2Train","co2Car","primeTrain","primeCar","durationTrain","durationCar","EquipmentTypeFromJSON","EquipmentTypeFromJSONTyped","EquipmentFromJSON","EquipmentFromJSONTyped","classification","EquipmentTypeEnumFromJSON","EquipmentTypeEnumFromJSONTyped","PostalAddressFromJSON","PostalAddressFromJSONTyped","complement","postOfficeBox","addressLine1","houseNumber","postCode","town","PlaceRefByNameWithDistanceFromJSON","PlaceRefByNameWithDistanceFromJSONTyped","FacilityForInfoPortalResponseFromJSON","FacilityForInfoPortalResponseFromJSONTyped","postalAddress","connectionHint","equipments","stopPlaces","GroupReservationStatusEnumFromJSON","GroupReservationStatusEnumFromJSONTyped","StopPlaceClassificationFromJSON","StopPlaceClassificationFromJSONTyped","InheritanceResponseFromJSON","InheritanceResponseFromJSONTyped","dummyAddress","dummyPointOfInterest","dummyPTRideLeg","dummyAccessLeg","dummyPTConnectionLeg","dummyAlternativeModeLeg","dummyPersonalLeg","dummyAudienceEnum","dummyGroupReservationStatusEnum","dummyStopPlaceClassification","dummyEquipmentTypeEnum","NonPTTripEnumToJSON","NoticeAttributeEnumToJSON","OccupancyAverageEnumToJSON","OptimisationMethodToJSON","OptimisationMethodToJSONTyped","numberOfResultsBefore","numberOfResultsAfter","PTViaNoChangeAtReferenceToJSON","PTViaNoChangeAtReferenceToJSONTyped","PTViaNotReferenceToJSON","PTViaNotReferenceToJSONTyped","PTViaReferenceToJSON","PTViaReferenceToJSONTyped","transportModes","waittime","direct","couchette","sleepingCar","PlaceResponseFromJSON","PlaceResponseFromJSONTyped","places","RealtimeModeEnumToJSON","ServiceCalendarFromJSON","ServiceCalendarFromJSONTyped","TariffZoneFromJSON","TariffZoneFromJSONTyped","StopPlaceDetailedFromJSON","StopPlaceDetailedFromJSONTyped","province","tariffZones","quays","leader","members","StopPlaceDetailedResponseFromJSON","StopPlaceDetailedResponseFromJSONTyped","TrainStopAssignmentsEnumToJSON","TripSummaryFromJSON","TripSummaryFromJSONTyped","firstStopPlace","lastStopPlace","occupancyFirstClassMax","occupancySecondClassMax","TripStatusFromJSON","TripStatusFromJSONTyped","alternativeFormatted","valid","delayed","delayedUnknown","notServicedStopPoints","unplannedStopPoints","mobilityRestrictedTransferCritical","TripFromJSON","TripFromJSONTyped","fastTransfer","transfers","pagingChecksum","searchHint","ecoBalance","archiveConnectionReliability","TripMobilityFilterToJSON","TripMobilityFilterToJSONTyped","maxTransfers","walkSpeed","additionalTransferTime","minTransferTime","maxTransferTime","TripResponseFromJSON","TripResponseFromJSONTyped","trips","serviceProductAdapted","TripsByLegRequestBodyToJSON","TripsByLegRequestBodyToJSONTyped","ptRideLegReference","transferStopPoint","transferStopPointAtArrival","operators","vias","realtimeMode","limit","includeTransportModes","excludeDatedVehicleJourneys","TripsByOriginAndDestinationRequestBodyToJSON","TripsByOriginAndDestinationRequestBodyToJSONTyped","originRadius","destinationRadius","forArrival","occupancyAverage","mobilityFilter","viasNot","viasNoTransfer","pagingCursor","optimisationMethod","includeAccessibility","includeAlternateMatch","includeNoticeAttributes","includeEconomic","includeUnsharp","includeEarlier","includeEcologyComparison","includeOperatingDays","includeRouteProjection","includeGroupReservation","includeSummary","includeIntermediateStops","includeTrainStopAssignments","includeRequestArguments","includeNonPublicTransportationTrips","excludeFootpathAtOriginAndDestination","excludeUnnecessaryTransfers","TripsIntervalByOriginAndDestinationRequestBodyToJSON","TripsIntervalByOriginAndDestinationRequestBodyToJSONTyped","PlacesV3Api","runtime.BaseAPI","getDummyInheritanceRaw","requestParameters","queryParameters","headerParameters","tokenString","runtime.JSONApiResponse","getDummyInheritance","getFacilityForInfoPortalRaw","runtime.RequiredError","getFacilityForInfoPortal","getFacilityForInfoPortal1Raw","getFacilityForInfoPortal1","getPlacesByCoordinatesRaw","getPlacesByCoordinates","getPlacesByCoordinatesGeojsonRaw","getPlacesByCoordinatesGeojson","getPlacesByNameRaw","getPlacesByName","getStopPlaceByIdRaw","getStopPlaceById","getStopPlacesRaw","getStopPlaces","SchedulesV3Api","getServiceCalendarRaw","getServiceCalendar","TripsV3Api","getTripsByIdRaw","getTripsById","getTripsByIdAndPartialSearchContextRaw","getTripsByIdAndPartialSearchContext","getTripsByLegRaw","getTripsByLeg","getTripsByOriginAndDestinationRaw","getTripsByOriginAndDestination","getTripsByRedefinitionRaw","getTripsByRedefinition","getTripsByRoadRaw","getTripsByRoad","getTripsIntervalByOriginAndDestinationRaw","getTripsIntervalByOriginAndDestination","LinkFromJSON","LinkFromJSONTyped","contentTypes","rel","version","PeriodFromJSON","PeriodFromJSONTyped","to","ProductPriceFromJSON","ProductPriceFromJSONTyped","currency","passengerId","price","priceValidity","productId","qualityOfService","quota","reduction","ProductPricesRequestToJSON","ProductPricesRequestToJSONTyped","passengers","TripPriceFromJSON","TripPriceFromJSONTyped","superSaver","tripId","TripPricesRequestPassengersEnum","Ga1st","Ga2nd","HalfFare","JuniorCard","ChildCard","None","SwissHalfFareCard","SwissTravelPass","TripPricesRequestToJSON","TripPricesRequestToJSONTyped","tripIds","PriceApi","postProductPricesRaw","postProductPrices","postTripPricesRaw","postTripPrices","placesLive","api","fetchedPlaces","acceptLanguage","placesMock","mocksDir","fetchedJson","tripsLive","fetchedTrips","tripsMock","pricesLive","fetchedPrices","pricesMock","timetablePeriodLive","fetchedPeriod","timetablePeriodMock","ApiRequestor","journeyServiceApiUrl","smapiUrl","mock","_mock","journeyServiceRequestConfig","smapiConfig","SmapiConfig","_mocksDir","location","port","_placesApi","_tripsApi","_pricesApi","_schedulesApi","prices","timetablePeriod","transportationModesCheckboxesValues","autoreisezug","bus","kabinenbahn","schiff","seilbahn","standseilbahn","tram","zug","connectionModes","bike","getLocationNameFromDidok","didok","apiRequestor","nameMatch","getDidokFromValue","getVias","viaInputValue","ensureDidokForVia","viaId","push","getTransportModes","checkboxesTransportation","modes","checkboxes","getElementsByTagName","checkedCheckboxes","checkbox","add","isDirectConnectionChecked","checkboxesConnections","connectionCheckbox","getNoticeAttributes","noticeAttributes","getAccessibility","radiosAccessibility","radios","inputForm","extendedSearch","a11y","checkedRadio","radio","getJourneySummaryData","results","journeySummary","adjustAppConfigFromUrlParams","requestBody","tripsByOriginAndDestinationRequestBody","inputFrom","inputTo","toggleArrivalDeparture","meansOfTransportation","inputs","has","hsType","icType","irType","rType","utType","stType","size","connections","stringifyConvertSetsToArray","_key","parseConvertArraysToSets","stringToParse","pafSearchFormCss","PafSearchFormStyle0","PafSearchForm","_extended","_searchButtonClicked","_toggleRadioCheckedValue","_hasInputValues","_fromInputValue","_toInputValue","_viaInputValue","_fromDidJustBlur","_toDidJustBlur","_viaDidJustBlur","_abAnValues","ab","an","_resetAutocompleteItems","_autocompleteItemsFrom","_autocompleteItemsTo","_autocompleteItemsVia","_restoreFormFromConfig","issuedByConfigChange","inputVia","searchFormHelper.getLocationNameFromDidok","_config","_apiRequestor","_setDateAndTime","_formHasInputValues","trackingOrigin","trackingDestination","trackingVia","_debouncedInputHandler","autocomplete","minChars","data","transformedData","_onInput","_onToFromInput","fromTo","_debouncedInputEvent","_onToFromSwitch","_onAutocompleteSelect","eventDetail","_onButtonExpandableClick","_onExtendedSearchKeyDown","_onExtendedSearchTransitionEnd","propertyName","_viaFieldset","requestAnimationFrame","_buttonExpandable","shadowRoot","_syncToggleRadios","checkedValue","_onDateTimeKeyDown","_onButtonSearchClick","_onAutocompleteKeyDown","stopImmediatePropagation","fromHasSelected","_autocompleteElementFrom","hasAttribute","toHasSelected","_autocompleteElementTo","viaHasSelected","_autocompleteElementVia","_onAutocompleteBlurHandlerFrom","_onAutocompleteBlurHandlerTo","_onAutocompleteBlurHandlerVia","Promise","resolve","onTransitionEnd","log","_extendedSearch","ensureDidokForFrom","searchFormHelper.getDidokFromValue","ensureDidokForTo","fromId","toId","searchFormHelper.getVias","demandsTimetableRequest","_dateElement","searchFormHelper.getAccessibility","_radiosAccessibility","searchFormHelper.getNoticeAttributes","_checkboxesConnections","searchFormHelper.getTransportModes","_checkboxesTransportation","searchFormHelper.isDirectConnectionChecked","_timeElement","journeySummaryObject","searchFormHelper.getJourneySummaryData","demandsJourneySummaryUpdate","configDate","configTime","_dateValue","_timeValue","_inputHandlerFrom","_inputHandlerTo","_inputHandlerVia","_onAutocompleteSelectHandlerFrom","_onAutocompleteSelectHandlerTo","_onAutocompleteSelectHandlerVia","configWatchHandler","debounceInputEvent","extended","buttonEvents","_toggleRadio","_toggleRadioMobile","_buttonSearch","expandedBlockAttributes","extendedBlockAttributes","expandableBlockAttributes","inert","searchButtonAttributes","hasLink","searchButtonLink","searchFormAssistiveLabel","form","_","rotated","switchFromToIconDescription","xmlns","min","dateTimeIconDescription","optionsName","option1value","option2value","option1label","labelDeparture","option2label","labelArrival","selectAllButton","deselectAllButton","toggleTitle","buttonExpandedSearch","searchButton","s4","floor","random","guid","pafTextInputCss","PafTextInputStyle0","PafTextInput","_isValid","_touched","_id","_handleKeyUp","_input","_validate","checkValidity","_shouldShowError","_onDateTimeIconClick","showPicker","select","isTime","onInput","onKeyUp","searchEvents","resultsEvents","rowEvents","formatISO","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","hour","minute","second","separator","getRideLegs","getDepartureTimeForLeg","getArrivalTimeTimeForLeg","points","getDeparturePlatformForLeg","getArrivalPlatformForLeg","lastPoint","occupancyStrings","getHighestOccupancyForLeg","classKey","point","currentIndex","getPictoForLeg","getDirectionForLeg","rows","getProductIconForLeg","getProductTextForLeg","getProductTextForLegOptional","getTransportationNameForLeg","getOccupancyStringForOccupancies","firstClass","secondClass","templateTexts","hiddenRowSummary","occupancyInfo","getSituationsForLeg","messages","situation","situationCause","messageAlreadyThere","broadcastMessage","startsWith","broadcastMessagesConcat","messageItem","getCusHimMessagesForLeg","compoundChange","alterations","generateNotificationDataForLeg","deupedNotices","relevantNotices","notice","relevantNotice","noticeAlreadyThere","dedeupedNotice","getA11yItemFromLegs","icons","currentPriority","relevantIcon","limitationPriority","priorityIndex","getHighestOccupancyForTrip","legIndex","levelHelpers.getHighestOccupancyForLeg","levelHelpers.occupancyStrings","getOccupancy","_occupancy","getServiceAlteration","trip","rideLegs","levelHelpers.getRideLegs","cusHimForLeg","levelHelpers.getCusHimMessagesForLeg","dedupedAlterations","alteration","alreadyThere","dedupedAlteration","orderedAlterations","getAttributeIcons","a11yChecked","reservation","additionalCharge","specialTicket","topPrioIcon","levelHelpers.getA11yItemFromLegs","toLocaleLowerCase","getWalkTime","getWalkTimeFormatted","getDepartureTime","levelHelpers.getDepartureTimeForLeg","getArrivalTime","levelHelpers.getArrivalTimeTimeForLeg","renderPearlChain","pearlChainLegs","getNoticesStrings","noticesString","relevantNoticeNames","dedupedNotices","self","getRealtimeInfo","getOccupancyInfo","levelHelpers.getOccupancyStringForOccupancies","getHeading","configParsed","departurePlatform","levelHelpers.getDeparturePlatformForLeg","levelHelpers.getTransportationNameForLeg","levelHelpers.getProductTextForLeg","levelHelpers.getDirectionForLeg","renderSummaryGeneral","walkTimeDeparture","walkTimeArrival","walkTimeExpressionDeparture","walkTimeExpressionArrival","general","renderSummaryRealtimeInfo","realTimeInfo","realtimeInfo","renderSummaryTravelNotices","legsNotices","travelNotices","renderSummary","realtime","getBuyLinkFromLinksArray","buyHref","link","pricePlaceHolder","addPriceToHiddenSummary","supersaver","templatePrice","tickets","templatePriceDiscount","discountTickets","priceString","hasQuayChange","tripHasReservation","reservationDataTrip","legReservationObligatory","tripHasReservationPossibleNotice","hasNotice","transformLevelOneData","transformedTrips","cusHimIconsString","departureDateRaw","departureDate","toDateString","buy","withReservation","hiddenText","default","pearlChain","valueOf","pearlChainTime","priceBadge","rowFooter","rowHeader","levelHelpers.getPictoForLeg","levelHelpers.getProductIconForLeg","levelHelpers.getProductTextForLegOptional","getCheapestPricePerTrip","pricePerTripId","getDayChangeIndexForTrips","indexes","currentDate","tripDate","splitTripsByDate","dayChangeIndexes","tripsByDay","lastIndex","dayChangeKeys","iterationIndex","dayChangeIndex","nextIndex","dayTrips","isWithinInterval","interval","sort","dedupedNoticesForLeg","alreadyThereNotice","renderTemplateStringWithArguments","templateArguments","renderInParagraph","returnString","argumentKey","argumentItems","argumentString","endsWith","getWheelchairInfo","arrivalPoint","noInformation","_c","_d","getAttributeIconsForLegs","attributeAlreadyThere","getA11yItemFromLegsWithRenderedTemplates","returnValue","templateText","getHiddenSummaryDeparture","departurePoint","summaryTemplates","hiddenSummary","departureGeneral","renderedTemplate","realtimeInfoTitle","cusHimMessages","attributeNotices","attributesTitle","getHiddenSummaryArrival","arrivalGeneral","levelHelpers.getArrivalPlatformForLeg","getUtilizationItems","getExistingOccupanciesForLegs","occupancies","transformLevelTwoLegData","currentLegNumber","totalLegs","legData","inlineCusHim","journey","_e","_f","service","journeyPartDescription","wheelChairInfo","transformLevelTwoFootpathData","footpath","hiddenTextMinutes","transformLevelTwoAlertData","rawTrip","alerts","levelHelpers.generateNotificationDataForLeg","noticeResults","dedupedNotice","notificationReservation","generateLegendDataForTrip","existingOccupancies","LOW","MEDIUM","HIGH","getServiceCalendarPeriod","serivceCalendarResponse","period","currentPeriod","operatingFrom","operatingTo","fromDate","inRange","generateLevel2LegendFootnote","fromReadable","toReadable","footnote","future","future2","futureLeg","defaultJourneyId","defaultJourney","i18n","earlierConnections","laterConnections","priceLabel","buyLinkUrlParams","storeAndRestoreSearchInUrl","noResults","Tracking","disableTracking","timetableSearch","additionalInfo","accessibility","bicycle","additional_info","original_search_term","search_results","search_term","_push","openOrCollapseLevelTwo","changes","opening","selection","buyButtonClick","URL","searchParams","delete","link_url","previousNextConnections","isForPreviousConnections","_disableTracking","dataLayer","pafTimetableCss","PafTimetableStyle0","PafTimetable","_isLoadingTrips","_isLoadingPrevNext","_trips","_expandedRowId","_footnote","_tempTrips","_paginationCursor","_rowToSetFocusAfterInsertion","_generateUrlWithSearchParams","baseUrl","typelessRequest","requestDate","stringifiedRequest","searchFormHelper.stringifyConvertSetsToArray","urlParams","search","append","_storeRequestToUrlParams","history","replaceState","_restoreRequestFromUrlParams","readParams","searchFormHelper.parseConvertArraysToSets","decodeURIComponent","get","typedRequest","_handleStartLoadingTrips","_summary","_handleStartLoadingPreviousNextTrips","prefOrNext","unshift","_handleFinishLoadingTrips","_setFocusToInsertedTrips","currentTimeTableRows","_getCurrentTimeTableRows","rowToFocus","preventScroll","_handleSummaryUpdate","_addUrlParamsToBuyLink","linkObject","newParams","param","_generatePriceBadgeText","configText","toFixed","_cleanUpPlaceholderPrices","tempTrips","_getPrices","tripsWithoutPrices","tripPricesRequest","xContractId","smapiContractId","xConversationId","pricesTransformed","priceObject","_doRequestWithPayload","payload","skipUrlStore","_lastTripsRequest","stringifiedPayload","stringifiedLastRequest","_rawTripsData","tempResults","_trackSearch","_handleSearchFormSearchRequest","_getFootnoteData","_handlePrevNextClicked","hasPaginationCursor","oldRawTripsData","newRawTripsData","oldTrips","newTrips","_setupTimeTableMutationObserver","_trackPreviousNextClick","lists","_resultsList","allRowReferences","_generateJourneySummary","_renderFootpath","transformedLegData","_renderAlert","_renderPtLeg","Fragment","slot","_renderNotificationForLeg","notificationData","_renderLegendForTrip","tripData","legendData","legendItem","serviceCalendarResponse","serviceCalendarPeriod","_renderTimetableRow","showLoading","ariaAttributesLevel2","_renderLegsForTrip","_toggleTabIndexesOnLevel2","expandedElement","expanding","level2","row","linksInNotifications","linksInLegend","linksInNotificationsArray","linksInLegendArray","allLinks","linkElement","_handleRowButtonChanged","closedRow","_trackExpandCollapseRow","eventPath","firstElem","localName","expandedRow","_timeTableMutationObserver","MutationObserver","mutationsList","mutation","_debounceTimer","disconnect","observe","childList","subtree","_getTrackingTitleForRow","_getTrackingPriceForRow","trim","_tracking","_searchForm","_trackBuyButtonClick","buttons","nodeName","rowsData","rowData","renderedElements","amountOfRideLegs","rideLegCounter","tempConfig","mainConfig","departureValue","arrivalValue","searchFormHelper.adjustAppConfigFromUrlParams","tripsByDayKeys","forceDayChange","firstTrips","firstTrip","firstTripDate","searchDate","tripKey","tripsOfDay","showDayChange","pafToggleCheckboxCss","PafToggleCheckboxStyle0","PafToggleCheckbox","stopPropagation","pafToggleRadioCss","PafToggleRadioStyle0","PafToggleRadio","option"],"sources":["src/components/paf-autocomplete/paf-autocomplete.helper.ts","src/components/paf-text-input/paf-text-input.events.ts","src/components/paf-autocomplete/paf-autocomplete.scss?tag=paf-autocomplete&encapsulation=shadow","src/components/paf-autocomplete/paf-autocomplete.tsx","src/components/paf-autocomplete-item/paf-autocomplete-item.scss?tag=paf-autocomplete-item","src/components/paf-autocomplete-item/paf-autocomplete-item.tsx","src/components/paf-button/paf-button.scss?tag=paf-button&encapsulation=shadow","src/components/paf-button/paf-button.tsx","src/assets/timetable-icons.config.ts","src/components/paf-icon/paf-icon.scss?tag=paf-icon&encapsulation=shadow","src/components/paf-icon/paf-icon.tsx","src/app/paf-timetable/paf-timetable.events.ts","src/components/paf-journey-summary/paf-journey-summary.scss?tag=paf-journey-summary&encapsulation=shadow","src/components/paf-journey-summary/paf-journey-summary.tsx","src/components/paf-no-results/paf-no-results.scss?tag=paf-no-results&encapsulation=shadow","src/components/paf-no-results/paf-no-results.tsx","src/components/paf-notification/paf-notification.scss?tag=paf-notification&encapsulation=shadow","src/components/paf-notification/paf-notification.tsx","src/components/paf-radio-checkbox/paf-radio-checkbox.scss?tag=paf-radio-checkbox","src/components/paf-radio-checkbox/paf-radio-checkbox.tsx","src/components/paf-toggle-checkbox/paf-toggle-checkbox.events.ts","src/components/paf-radio-checkbox-group/paf-radio-checkbox-group.scss?tag=paf-radio-checkbox-group&encapsulation=shadow","src/components/paf-radio-checkbox-group/paf-radio-checkbox-group.tsx","src/components/paf-result-alert/paf-result-alert.scss?tag=paf-result-alert&encapsulation=shadow","src/components/paf-result-alert/paf-result-alert.tsx","src/components/paf-result-attributes/paf-result-attributes.scss?tag=paf-result-attributes&encapsulation=shadow","src/components/paf-result-attributes/paf-result-attributes.tsx","src/components/paf-result-day-change/paf-result-day-change.scss?tag=paf-result-day-change&encapsulation=shadow","src/components/paf-result-day-change/paf-result-day-change.tsx","src/components/paf-result-footpath/paf-result-footpath.scss?tag=paf-result-footpath&encapsulation=shadow","src/components/paf-result-footpath/paf-result-footpath.tsx","src/components/paf-result-legend/paf-result-legend.scss?tag=paf-result-legend&encapsulation=shadow","src/components/paf-result-legend/paf-result-legend.tsx","src/components/paf-result-legend-item/paf-result-legend-item.scss?tag=paf-result-legend-item","src/components/paf-result-legend-item/paf-result-legend-item.tsx","node_modules/date-fns/_lib/getRoundingMethod.js","node_modules/date-fns/constants.js","node_modules/date-fns/constructFrom.js","node_modules/date-fns/toDate.js","node_modules/date-fns/differenceInMilliseconds.js","node_modules/date-fns/differenceInMinutes.js","node_modules/date-fns/isAfter.js","node_modules/date-fns/isBefore.js","node_modules/date-fns/_lib/normalizeDates.js","node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","node_modules/date-fns/startOfDay.js","node_modules/date-fns/differenceInCalendarDays.js","node_modules/date-fns/isDate.js","node_modules/date-fns/isValid.js","node_modules/date-fns/parseISO.js","node_modules/date-fns/locale/en-US/_lib/formatDistance.js","node_modules/date-fns/locale/_lib/buildFormatLongFn.js","node_modules/date-fns/locale/en-US/_lib/formatLong.js","node_modules/date-fns/locale/en-US/_lib/formatRelative.js","node_modules/date-fns/locale/_lib/buildLocalizeFn.js","node_modules/date-fns/locale/en-US/_lib/localize.js","node_modules/date-fns/locale/_lib/buildMatchFn.js","node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","node_modules/date-fns/locale/en-US/_lib/match.js","node_modules/date-fns/locale/en-US.js","node_modules/date-fns/_lib/defaultOptions.js","node_modules/date-fns/formatDuration.js","node_modules/date-fns/startOfYear.js","node_modules/date-fns/getDayOfYear.js","node_modules/date-fns/startOfWeek.js","node_modules/date-fns/startOfISOWeek.js","node_modules/date-fns/getISOWeekYear.js","node_modules/date-fns/startOfISOWeekYear.js","node_modules/date-fns/getISOWeek.js","node_modules/date-fns/getWeekYear.js","node_modules/date-fns/startOfWeekYear.js","node_modules/date-fns/getWeek.js","node_modules/date-fns/_lib/addLeadingZeros.js","node_modules/date-fns/_lib/format/lightFormatters.js","node_modules/date-fns/_lib/format/formatters.js","node_modules/date-fns/_lib/format/longFormatters.js","node_modules/date-fns/_lib/protectedTokens.js","node_modules/date-fns/format.js","node_modules/date-fns/intlFormat.js","src/utils/date-helper.ts","src/components/paf-result-pearl-chain/paf-result-pearl-chain.scss?tag=paf-result-pearl-chain&encapsulation=shadow","src/components/paf-result-pearl-chain/paf-result-pearl-chain.tsx","src/components/paf-result-pearl-chain-time/paf-result-pearl-chain-time.scss?tag=paf-result-pearl-chain-time&encapsulation=shadow","src/components/paf-result-pearl-chain-time/paf-result-pearl-chain-time.tsx","src/components/paf-result-price-badge/paf-result-price-badge.scss?tag=paf-result-price-badge&encapsulation=shadow","src/components/paf-result-price-badge/paf-result-price-badge.tsx","src/components/paf-result-row-footer/paf-result-row-footer.scss?tag=paf-result-row-footer&encapsulation=shadow","src/components/paf-result-row-footer/paf-result-row-footer.tsx","src/components/paf-result-row-header/paf-result-row-header.scss?tag=paf-result-row-header&encapsulation=shadow","src/components/paf-result-row-header/paf-result-row-header.tsx","src/components/paf-result-station-and-platform/paf-result-station-and-platform.scss?tag=paf-result-station-and-platform&encapsulation=shadow","src/components/paf-result-station-and-platform/paf-result-station-and-platform.tsx","src/components/paf-result-time/paf-result-time.scss?tag=paf-result-time&encapsulation=shadow","src/components/paf-result-time/paf-result-time.tsx","src/components/paf-result-timetable-leg/paf-result-timetable-leg.scss?tag=paf-result-timetable-leg&encapsulation=shadow","src/components/paf-result-timetable-leg/paf-result-timetable-leg.tsx","src/components/paf-result-timetable-list/paf-result-timetable-list.scss?tag=paf-result-timetable-list&encapsulation=shadow","src/components/paf-result-timetable-list/paf-result-timetable-list.tsx","src/components/paf-result-timetable-row/paf-result-timetable-row.scss?tag=paf-result-timetable-row&encapsulation=shadow","src/components/paf-result-timetable-row/paf-result-timetable-row.tsx","src/components/paf-result-utilization/paf-result-utilization.scss?tag=paf-result-utilization&encapsulation=shadow","src/components/paf-result-utilization/paf-result-utilization.tsx","src/components/paf-result-utilization-icon/paf-result-utilization-icon.scss?tag=paf-result-utilization-icon&encapsulation=shadow","src/components/paf-result-utilization-icon/paf-result-utilization-icon.tsx","src/components/paf-button/paf-button.events.ts","src/components/paf-toggle-radio/paf-toggle-radio.events.ts","src/components/paf-autocomplete/paf-autocomplete.events.ts","src/utils/debounce.ts","src/api/clients/journey-service/runtime.ts","src/api/clients/journey-service/models/Point.ts","src/api/clients/journey-service/models/Address.ts","src/api/clients/journey-service/models/PointOfInterestCategory.ts","src/api/clients/journey-service/models/PointOfInterest.ts","src/api/clients/journey-service/models/VehicleMode.ts","src/api/clients/journey-service/models/Links.ts","src/api/clients/journey-service/models/StopPlace.ts","src/api/clients/journey-service/models/Place.ts","src/api/clients/journey-service/models/AccessEnd.ts","src/api/clients/journey-service/models/AlternativeModeLeg.ts","src/api/clients/journey-service/models/LinkedText.ts","src/api/clients/journey-service/models/Notice.ts","src/api/clients/journey-service/models/ConnectionEnd.ts","src/api/clients/journey-service/models/PTConnectionLeg.ts","src/api/clients/journey-service/models/LineString.ts","src/api/clients/journey-service/models/OperatingPeriod.ts","src/api/clients/journey-service/models/LegendItemV3.ts","src/api/clients/journey-service/models/Quay.ts","src/api/clients/journey-service/models/DeckPlan.ts","src/api/clients/journey-service/models/TrainElement.ts","src/api/clients/journey-service/models/BoardingPosition.ts","src/api/clients/journey-service/models/TrainComponent.ts","src/api/clients/journey-service/models/Train.ts","src/api/clients/journey-service/models/CompoundTrain.ts","src/api/clients/journey-service/models/TrainStopAssignment.ts","src/api/clients/journey-service/models/Connection.ts","src/api/clients/journey-service/models/NavigationPathAssignment.ts","src/api/clients/journey-service/models/StopCall.ts","src/api/clients/journey-service/models/AccessibilityBoardingAlighting.ts","src/api/clients/journey-service/models/ScheduledStopPoint.ts","src/api/clients/journey-service/models/ServiceAlteration.ts","src/api/clients/journey-service/models/AudienceLink.ts","src/api/clients/journey-service/models/Audience.ts","src/api/clients/journey-service/models/PublicationWindow.ts","src/api/clients/journey-service/models/PTSituationMessage.ts","src/api/clients/journey-service/models/GeofenceCircle.ts","src/api/clients/journey-service/models/AffectedRegion.ts","src/api/clients/journey-service/models/AffectedEdge.ts","src/api/clients/journey-service/models/PTSituationAffectedScope.ts","src/api/clients/journey-service/models/PTSituation.ts","src/api/clients/journey-service/models/Operator.ts","src/api/clients/journey-service/models/ServiceProduct.ts","src/api/clients/journey-service/models/Direction.ts","src/api/clients/journey-service/models/CheckConstraint.ts","src/api/clients/journey-service/models/ServiceJourney.ts","src/api/clients/journey-service/models/PaginationCursor.ts","src/api/clients/journey-service/models/TrainStopAssignmentHint.ts","src/api/clients/journey-service/models/PTRideLeg.ts","src/api/clients/journey-service/models/PersonalLeg.ts","src/api/clients/journey-service/models/Leg.ts","src/api/clients/journey-service/models/AccessLeg.ts","src/api/clients/journey-service/models/AccessibilityEnum.ts","src/api/clients/journey-service/models/TransportModeEnum.ts","src/api/clients/journey-service/models/AlternateMatchEnum.ts","src/api/clients/journey-service/models/ArchiveConnectionReliability.ts","src/api/clients/journey-service/models/AudienceEnum.ts","src/api/clients/journey-service/models/ScheduledStopPointReference.ts","src/api/clients/journey-service/models/DatedVehicleJourneyReference.ts","src/api/clients/journey-service/models/EcoBalance.ts","src/api/clients/journey-service/models/EquipmentType.ts","src/api/clients/journey-service/models/Equipment.ts","src/api/clients/journey-service/models/EquipmentTypeEnum.ts","src/api/clients/journey-service/models/PostalAddress.ts","src/api/clients/journey-service/models/PlaceRefByNameWithDistance.ts","src/api/clients/journey-service/models/FacilityForInfoPortalResponse.ts","src/api/clients/journey-service/models/GroupReservationStatusEnum.ts","src/api/clients/journey-service/models/StopPlaceClassification.ts","src/api/clients/journey-service/models/InheritanceResponse.ts","src/api/clients/journey-service/models/NonPTTripEnum.ts","src/api/clients/journey-service/models/NoticeAttributeEnum.ts","src/api/clients/journey-service/models/OccupancyAverageEnum.ts","src/api/clients/journey-service/models/OptimisationMethod.ts","src/api/clients/journey-service/models/PTViaNoChangeAtReference.ts","src/api/clients/journey-service/models/PTViaNotReference.ts","src/api/clients/journey-service/models/PTViaReference.ts","src/api/clients/journey-service/models/PlaceResponse.ts","src/api/clients/journey-service/models/RealtimeModeEnum.ts","src/api/clients/journey-service/models/ServiceCalendar.ts","src/api/clients/journey-service/models/TariffZone.ts","src/api/clients/journey-service/models/StopPlaceDetailed.ts","src/api/clients/journey-service/models/StopPlaceDetailedResponse.ts","src/api/clients/journey-service/models/TrainStopAssignmentsEnum.ts","src/api/clients/journey-service/models/TripSummary.ts","src/api/clients/journey-service/models/TripStatus.ts","src/api/clients/journey-service/models/Trip.ts","src/api/clients/journey-service/models/TripMobilityFilter.ts","src/api/clients/journey-service/models/TripResponse.ts","src/api/clients/journey-service/models/TripsByLegRequestBody.ts","src/api/clients/journey-service/models/TripsByOriginAndDestinationRequestBody.ts","src/api/clients/journey-service/models/TripsIntervalByOriginAndDestinationRequestBody.ts","src/api/clients/journey-service/apis/PlacesV3Api.ts","src/api/clients/journey-service/apis/SchedulesV3Api.ts","src/api/clients/journey-service/apis/TripsV3Api.ts","src/api/clients/smapi-ticketing/runtime.ts","src/api/clients/smapi-ticketing/models/Link.ts","src/api/clients/smapi-ticketing/models/Period.ts","src/api/clients/smapi-ticketing/models/ProductPrice.ts","src/api/clients/smapi-ticketing/models/ProductPricesRequest.ts","src/api/clients/smapi-ticketing/models/TripPrice.ts","src/api/clients/smapi-ticketing/models/TripPricesRequest.ts","src/api/clients/smapi-ticketing/apis/PriceApi.ts","src/api-helpers/request.ts","src/app/paf-search-form/paf-search-form.helper.ts","src/app/paf-search-form/paf-search-form.scss?tag=paf-search-form&encapsulation=shadow","src/app/paf-search-form/paf-search-form.tsx","src/utils/guid.ts","src/components/paf-text-input/paf-text-input.scss?tag=paf-text-input","src/components/paf-text-input/paf-text-input.tsx","src/app/paf-search-form/paf-search-form.events.ts","src/components/paf-result-timetable-list/paf-result-timetable-list.events.ts","src/components/paf-result-timetable-row/paf-result-timetable-row.events.ts","node_modules/date-fns/formatISO.js","src/app/paf-timetable/data-transform/levelsHelpers.ts","src/app/paf-timetable/data-transform/levelOne.ts","node_modules/date-fns/isWithinInterval.js","src/app/paf-timetable/data-transform/levelTwo.ts","src/components/paf-result-pearl-chain/paf-result-pearl-chain.sample-data.ts","src/components/paf-result-timetable-row/paf-result-timetable-row.sample-data.ts","src/app/paf-timetable/i18n/i18n.ts","src/tracking/tracking.ts","src/app/paf-timetable/paf-timetable.scss?tag=paf-timetable&encapsulation=shadow","src/app/paf-timetable/paf-timetable.tsx","src/components/paf-toggle-checkbox/paf-toggle-checkbox.scss?tag=paf-toggle-checkbox&encapsulation=shadow","src/components/paf-toggle-checkbox/paf-toggle-checkbox.tsx","src/components/paf-toggle-radio/paf-toggle-radio.scss?tag=paf-toggle-radio&encapsulation=shadow","src/components/paf-toggle-radio/paf-toggle-radio.tsx"],"sourcesContent":["/**\n * we check the structure of the data manually, so it's save to use `any`\n * as return type\n */\nexport default (jsonString: string): any => {\n if (!jsonString || jsonString.length === 0) {\n return [];\n }\n\n const jsonArray = JSON.parse(jsonString);\n\n if (!jsonArray || jsonArray.length < 1) {\n console.warn('paf-autocomplete error: you should pass an array of objects to the items property.');\n\n return [];\n }\n\n let foundSomethingThatIsNotAnObject = false;\n let didNotFindNameKey = false;\n\n jsonArray.forEach((item) => {\n if (typeof item === 'object' && !Array.isArray(item) && item !== null) {\n const itemKeys = Object.keys(item);\n\n if (itemKeys.indexOf('name') < 0) {\n didNotFindNameKey = true;\n }\n } else {\n foundSomethingThatIsNotAnObject = true;\n }\n });\n\n if (foundSomethingThatIsNotAnObject || didNotFindNameKey) {\n console.warn('paf-autocomplete error: each object in the array must contain a name property.');\n\n return [];\n }\n\n return jsonArray as any;\n};\n","/**\n * This file is autogenerated by:\n * /stencil-build-helpers/rollup/event-sync.ts\n */\nexport default {\n inputEvent: 'paf-text-input_input',\n keyupEvent: 'paf-text-input_key-up',\n};\n","@include host-component-properties;\n\n:host {\n display: block;\n position: relative;\n\n --paf-autocomplete-input-height: 73;\n --paf-autocomplete-background-color: #fff;\n --paf-box-shadow-color: rgb(0 0 0 / 40%);\n --paf-box-shadow-blur: 4;\n}\n\n.autocomplete {\n position: relative;\n background-color: var(--paf-autocomplete-background-color);\n}\n\n.list {\n box-shadow: var(--paf-box-shadow-color) 0 0 px-to-rem(var(--paf-box-shadow-blur)) 0;\n list-style: none;\n margin: 0;\n padding: 0;\n font-size: inherit;\n cursor: default;\n position: absolute;\n display: none;\n inset-block-start: px-to-rem(var(--paf-autocomplete-input-height));\n inset-inline: 0;\n background-color: var(--paf-autocomplete-background-color);\n z-index: 5;\n\n @include forced-colors {\n background-color: Canvas;\n border: px-to-rem(var(--paf-global-border-width-2x)) solid CanvasText;\n border-block-start: none;\n }\n\n &--visible {\n display: flex;\n flex-direction: column;\n }\n}\n\n.accessibility-hint {\n @include screen-reader-only;\n}\n","import {\n Component,\n ComponentInterface,\n Event,\n EventEmitter,\n h,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\n\nimport itemsDataHelper from './paf-autocomplete.helper';\nimport inputEvents from '../paf-text-input/paf-text-input.events';\nimport { InterfacePafAutocomplete } from './paf-autocomplete.custom';\n\n@Component({\n shadow: true,\n styleUrl: 'paf-autocomplete.scss',\n tag: 'paf-autocomplete',\n})\n\nexport class PafAutocomplete implements ComponentInterface {\n\n /**\n * Items to show in the autocomplete interface. You should pass a stringified\n * array of objects, containing the `name` and `id` key\n * for each object with an appropriate value -> [InterfacePlaces].\n */\n @Prop() public items?: string;\n\n /**\n * The value to use as default value for the input. The input value or the\n * selected autocomplete value is reflected to this attribute.\n */\n @Prop() public value?: string;\n\n /**\n * Autocomplete id. If you use multiple instances on a page,\n * you should set individual id's to each of them.\n */\n @Prop() public autocompleteId? = 'autocomplete-list';\n\n /**\n * a11y text as hint that users can navigate the list with the arrow keys\n */\n @Prop() public helpTextUseArrowKeysToNavigate!: string;\n\n /**\n * a11y text to announce the total number of autocomplete items.\n * You should provide the placeholder {x} inside of this string.\n * We then replace {x} by the amount of autocomplete results.\n */\n @Prop() public helpTextResultsAvailable!: string;\n\n /**\n * Name attribute for the input element. See text-input for details.\n */\n @Prop() public inputName!: string;\n\n /**\n * Label attribute for the input element. See text-input for details.\n */\n @Prop() public inputLabel!: string;\n\n /**\n * Placeholder attribute for the input element. See text-input for\n * details.\n */\n @Prop() public inputPlaceholder?: string;\n\n /**\n * The error message to show if the input field is invalid\n */\n @Prop() public inputErrorMessage?: string;\n\n /**\n * Define if the input is required\n */\n @Prop() public inputRequired = true;\n\n /**\n * The hidden title text to use for the autocomplete list\n */\n @Prop() public listAssistiveText?: string;\n\n /**\n * Property to indicate if user has selected an item.\n * Background: if user has selected an item and presses return key,\n * we need to have this information in timetable, so that we can prevent\n * issuing a search request in this scenario\n */\n @Prop({\n mutable: true,\n reflect: true,\n }) public itemSelected = false;\n\n // @State() private _inputValue: string;\n @State() private _isVisible = false;\n @State() private _selectedAutocompleteItemIndex = -1;\n @State() private _dataItems?: [InterfacePafAutocomplete['item']];\n @State() private _inputValue: string;\n\n @Listen('demand-focus')\n public handleFocusDemandFromOutside(): void {\n this._inputElement.dispatchEvent(new CustomEvent('demand-focus'));\n }\n\n /**\n * Dispatched if an autocomplete item is selected\n */\n @Event({\n bubbles: true,\n composed: true,\n eventName: 'paf-autocomplete_selected',\n })\n public selectedEvent: EventEmitter;\n\n @Watch('items')\n public handleItemsChange(newValue: string): void {\n if (newValue && newValue.length > 0) {\n this._dataItems = itemsDataHelper(this.items);\n\n if (this._dataItems && this._dataItems.length > 0) {\n this._isVisible = true;\n }\n } else {\n this._dataItems = undefined;\n }\n }\n\n @Watch('value')\n public handleValueChange(newValue: string): void {\n this._initialInputValue = newValue;\n this._inputValue = newValue;\n }\n\n private _nativeInputElement!: HTMLInputElement;\n private _inputElement!: HTMLPafTextInputElement;\n private _list!: HTMLUListElement;\n private _userDidManipulateInputValue = false;\n private _initialInputValue = '';\n private _emittedEventPayload = '';\n\n /**\n * ------------------------------------------------------------------------\n * key handling\n * ------------------------------------------------------------------------\n */\n private _handleArrowKeys = (key): void => {\n if (!this._dataItems || this._dataItems.length < 1) {\n return;\n }\n\n this._isVisible = true;\n\n const isDownKey = key === 'ArrowDown';\n\n if (isDownKey) {\n if (this._selectedAutocompleteItemIndex < this._dataItems.length - 1) {\n this._selectedAutocompleteItemIndex++;\n } else {\n this._selectedAutocompleteItemIndex = 0;\n }\n } else {\n if (this._selectedAutocompleteItemIndex > 0) {\n this._selectedAutocompleteItemIndex--;\n } else {\n this._selectedAutocompleteItemIndex = this._dataItems.length - 1;\n }\n }\n\n this._inputValue = this._dataItems[this._selectedAutocompleteItemIndex].name;\n\n const selectedElement =\n this._list.children[this._selectedAutocompleteItemIndex];\n\n selectedElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n });\n\n this.itemSelected = this._selectedAutocompleteItemIndex !== -1;\n\n };\n\n private _handleEscapeKey = (): void => {\n\n this.itemSelected = false;\n\n // we don't want to handle esc-key if the user did not type anything\n if (this._userDidManipulateInputValue) {\n if (this._initialInputValue && this._initialInputValue.length > 0) {\n this._inputValue = this._initialInputValue;\n } else {\n this._inputValue = '';\n }\n }\n\n this._isVisible = false;\n this._userDidManipulateInputValue = false;\n };\n\n private _handleEnterKey = (): void => {\n if (this._selectedAutocompleteItemIndex === -1) {\n return;\n }\n\n const item = this._dataItems[this._selectedAutocompleteItemIndex];\n\n if (!item) {\n return;\n }\n\n this._inputValue = item.name;\n this._initialInputValue = this._inputValue;\n this._selectedAutocompleteItemIndex = -1;\n this.itemSelected = false;\n\n this._emitSelectedEventWithId();\n };\n\n private _handleKeyPress = (evt: KeyboardEvent): void => {\n const {\n key,\n } = evt;\n\n if (key === 'ArrowDown' || key === 'ArrowUp') {\n this._handleArrowKeys(key);\n\n return;\n }\n\n if (key === 'Escape') {\n this._handleEscapeKey();\n\n return;\n }\n\n if (key === 'Enter') {\n this._handleEnterKey();\n }\n };\n\n private _focusInputElement = (): void => {\n const event = new CustomEvent('focus', {\n bubbles: false,\n composed: false,\n });\n\n /**\n * paf-text-input listens to this event\n */\n this._nativeInputElement.dispatchEvent(event);\n };\n\n private _handleInput = (): void => {\n if (this._isVisible) {\n this._selectedAutocompleteItemIndex = -1;\n this.itemSelected = false;\n }\n };\n\n /**\n * ------------------------------------------------------------------------\n * User interaction\n * ------------------------------------------------------------------------\n */\n\n private _emitSelectedEventWithId = (): void => {\n\n /**\n * consumers of paf-autocomplete may listen to this event\n * This event only fires, if the user did select an autocomplete-item.\n * It does not fire by the blur event of the input field.\n * Thus, the payload will contain both a value and an id.\n */\n const searchItem = this._dataItems.filter((item) => item.name === this._inputValue);\n\n if (searchItem.length === 1) {\n if (this._emittedEventPayload !== searchItem[0].name) {\n this.selectedEvent.emit({\n id: searchItem[0].id,\n name: searchItem[0].name,\n });\n }\n }\n\n this._focusInputElement();\n this._isVisible = false;\n this._userDidManipulateInputValue = false;\n this._emittedEventPayload = searchItem[0].name;\n };\n\n private _handleFocus = (): void => {\n this._isVisible = this._dataItems?.length > 0;\n };\n\n private _handleBlur = (evt): void => {\n\n /**\n * tricky:\n * in the event chain, blur comes before click. As soon as a user\n * clicks on a list-item (and these are outside of the input area, thus\n * triggering a blur event), we never get a click event since at that\n * point in time the list has already been hidden by this blur handler.\n * To get around the issue, we check the event's relatedTarget to see\n * if the autocomplete item is contained in it.\n */\n const didClickList = this._list.contains(evt.relatedTarget);\n\n if (didClickList) {\n return;\n }\n\n this._isVisible = false;\n\n this._initialInputValue = this._inputValue;\n this._userDidManipulateInputValue = false;\n\n /**\n * consumers of paf-autocomplete may listen to this event\n * This event only fires by the blur event of input field.\n * It does not fire, if the user clicked an autocomplete item.\n * Thus, the payload will contain only a value but not an id.\n */\n if (this._nativeInputElement.value?.length > 0) {\n if (this._emittedEventPayload !== this._nativeInputElement.value) {\n this.selectedEvent.emit({\n id: false,\n name: this._nativeInputElement.value,\n });\n }\n }\n\n this._emittedEventPayload = this._nativeInputElement.value;\n };\n\n private _handleListClick = (evt): void => {\n const path = evt.composedPath();\n\n let firstElement = null;\n let firstLiElement = null;\n\n if (path.length > 0) {\n [firstElement] = path;\n }\n\n if (firstElement) {\n if (firstElement.tagName.toLowerCase() === 'li') {\n firstLiElement = firstElement;\n } else if (firstElement.tagName.toLowerCase() === 'ul') {\n firstLiElement = firstElement.firstChild;\n }\n }\n\n if (firstLiElement) {\n this._inputValue = firstLiElement.innerText;\n this._initialInputValue = this._inputValue;\n this._emitSelectedEventWithId();\n }\n\n };\n\n /**\n * ------------------------------------------------------------------------\n * Component lifecycle\n * ------------------------------------------------------------------------\n */\n\n public componentWillLoad(): void {\n this._dataItems = itemsDataHelper(this.items);\n this._initialInputValue = this.value;\n this._inputValue = this.value;\n }\n\n public componentDidLoad(): void {\n this._nativeInputElement = this._inputElement.querySelector('input');\n\n this._nativeInputElement.addEventListener('focus', this._handleFocus);\n this._list.addEventListener('click', this._handleListClick);\n this._nativeInputElement.addEventListener('blur', this._handleBlur);\n this._inputElement.addEventListener(inputEvents.inputEvent, this._handleInput);\n this._nativeInputElement.addEventListener('keydown', this._handleKeyPress);\n }\n\n public disconnectCallback(): void {\n this._nativeInputElement.removeEventListener('focus', this._handleFocus);\n this._list.removeEventListener('click', this._handleListClick);\n this._nativeInputElement.removeEventListener('blur', this._handleBlur);\n this._inputElement.removeEventListener(inputEvents.inputEvent, this._handleInput);\n this._nativeInputElement.removeEventListener('keydown', this._handleKeyPress);\n }\n\n /**\n * ------------------------------------------------------------------------\n * render helpers\n * ------------------------------------------------------------------------\n */\n private _listAttributes = (): any => {\n const listAttributes = {};\n\n if (this.autocompleteId) {\n listAttributes['id'] = this.autocompleteId;\n }\n\n if (!this._isVisible) {\n listAttributes['aria-hidden'] = 'true';\n listAttributes['role'] = 'presentation';\n }\n\n return listAttributes;\n };\n\n private _a11yHelpText = (): string => {\n let a11yHintText = '';\n\n if (this._isVisible && this._dataItems) {\n const a11yResults = this.helpTextResultsAvailable.replace('{x}', this._dataItems.length.toString());\n\n a11yHintText = `${a11yResults} ${this.helpTextUseArrowKeysToNavigate}`;\n }\n\n return a11yHintText;\n };\n\n /**\n * ------------------------------------------------------------------------\n * render\n * ------------------------------------------------------------------------\n */\n\n public render(): HTMLDivElement {\n return (\n
\n\n {\n this._inputElement = elem;\n }}\n />\n\n {this._a11yHelpText()}

\n\n {\n this._list = el;\n }}\n data-testid='list'\n >\n {this._dataItems && this._dataItems.map((item, index) => (\n \n ))}\n \n\n
\n );\n }\n}\n",".autocomplete-item {\n @include host-component-properties-without-host;\n\n --paf-autocomplete-item-background: #fff;\n --paf-autocomplete-item-background-selected: #f4f3f1;\n --paf-autocomplete-item-color: #666;\n --paf-autocomplete-item-color-selected: #666;\n --paf-autocomplete-item-font-size-small: 16;\n --paf-autocomplete-item-font-size: 17;\n --paf-autocomplete-item-padding-block: 12;\n --paf-autocomplete-item-padding-inline: 16;\n\n background-color: var(--paf-autocomplete-item-background);\n color: var(--paf-autocomplete-item-color);\n font-size: px-to-rem(var(--paf-autocomplete-item-font-size-small));\n padding-block: px-to-rem(var(--paf-autocomplete-item-padding-block));\n padding-inline: px-to-rem(var(--paf-autocomplete-item-padding-inline));\n list-style-type: none;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n cursor: pointer;\n position: relative;\n z-index: 1;\n user-select: none;\n\n @include mq($from: medium) {\n font-size: px-to-rem(var(--paf-autocomplete-item-font-size));\n }\n\n &--selected,\n &:hover,\n &:focus {\n background-color: var(--paf-autocomplete-item-background-selected);\n color: var(--paf-autocomplete-item-color-selected);\n }\n\n &:hover {\n @include forced-colors {\n background-color: ButtonText;\n }\n }\n\n &--selected {\n @include focus-visible;\n\n @include forced-colors {\n color: ButtonText;\n outline-color: ButtonText;\n }\n\n outline-offset: 0;\n z-index: 2;\n }\n}\n","import {\n Component,\n ComponentInterface,\n h,\n Prop,\n} from '@stencil/core';\n\n@Component({\n shadow: false,\n styleUrl: 'paf-autocomplete-item.scss',\n tag: 'paf-autocomplete-item',\n})\n\nexport class PafAutocompleteItem implements ComponentInterface {\n\n /**\n * Id must be provided in order to properly anounce the aria-activedescendant\n * inside the input field\n */\n @Prop() public itemId!: string;\n\n /**\n * Text to show as content of the autocomplete item\n */\n @Prop() public text!: string;\n\n /**\n * Mark the item as selected, which will change it's appearance and\n * the according aria attributes\n */\n @Prop() public selected?: boolean;\n\n /**\n * The aria-posinset attribute for the list element\n */\n @Prop() public ariaPosinset?: number;\n\n /**\n * The aira-setsize attribute for the list element\n */\n @Prop() public ariaSetsize?: number;\n\n private _setAriaAttributes(): any {\n\n const attrs = {};\n\n if (this.ariaPosinset) {\n attrs['aria-posinset'] = this.ariaPosinset;\n }\n\n if (this.ariaSetsize) {\n attrs['aria-setsize'] = this.ariaSetsize;\n }\n\n return attrs;\n }\n\n public render(): HTMLDivElement {\n return (\n \n {this.text}\n \n );\n }\n}\n","@include host-component-properties;\n\n:host {\n --paf-button-border-weight: var(--paf-global-border-width-2x);\n --paf-button-border-radius: 3;\n --paf-button-transition-duration: 180ms;\n --paf-button-opacity-disabled: 0.65;\n --paf-button-font-size: 16;\n --paf-button-padding-block: 10;\n --paf-button-padding-inline: 18;\n\n & ::slotted(svg) {\n fill: currentcolor;\n\n @include forced-colors {\n fill: ButtonText;\n }\n }\n\n & .secondary ::slotted(svg) {\n @include forced-colors {\n fill: currentcolor;\n }\n }\n}\n\n// Variants\n// --------\n.primary {\n --paf-button-background-color: var(--paf-global-post-brand-dark);\n --paf-button-background-color-hover: var(--paf-global-post-brand-black);\n --paf-button-border-color: var(--paf-global-post-brand-dark);\n --paf-button-border-color-hover: var(--paf-global-post-brand-black);\n --paf-button-color: var(--paf-global-post-brand-white);\n --paf-button-color-hover: var(--paf-global-post-brand-white);\n}\n\n.secondary {\n --paf-button-background-color: var(--paf-global-post-brand-white);\n --paf-button-background-color-hover: var(--paf-global-post-brand-white);\n --paf-button-border-color: hsl(0deg 0% 40% / 50%);\n --paf-button-border-color-hover: var(--paf-global-post-brand-black);\n --paf-button-color: var(--paf-global-post-brand-secondary);\n --paf-button-color-hover: var(--paf-global-post-brand-black);\n}\n\n.expandable {\n --paf-button-expandable-icon-dimensions: 16;\n --paf-button-expandable-icon-gap: 12;\n --paf-button-expandable-color: var(--paf-global-post-brand-dark);\n --paf-button-padding-block: 12;\n --paf-button-padding-inline: 4;\n}\n\n// Icon\n// -------\n.icon-only {\n --paf-icon-size: 36;\n --paf-icon-size-small: 24;\n --paf-icon-padding-block: 16;\n --paf-icon-padding-inline: 22;\n}\n\n.button {\n @include button-reset;\n\n display: inline-block;\n max-width: 100%;\n width: 100%;\n font-size: px-to-rem(var(--paf-button-font-size));\n text-decoration: none;\n border-radius: px-to-rem(var(--paf-button-border-radius));\n border: px-to-rem(var(--paf-button-border-weight)) solid var(--paf-button-border-color);\n background-color: var(--paf-button-background-color);\n color: var(--paf-button-color);\n transition-duration: var(--paf-button-transition-duration);\n transition-property: border-color, background-color, color;\n padding-block: px-to-rem(var(--paf-button-padding-block));\n padding-inline: px-to-rem(var(--paf-button-padding-inline));\n text-align: center;\n\n @include forced-colors {\n color: ButtonText;\n background-color: ButtonFace;\n border-color: ButtonBorder;\n transition: none;\n }\n\n @include reduced-motion {\n transition: none;\n }\n\n @include mq($from: small) {\n width: auto;\n }\n\n &:not([disabled]) {\n @include hover-style {\n cursor: pointer;\n border-color: var(--paf-button-border-color-hover);\n background-color: var(--paf-button-background-color-hover);\n color: var(--paf-button-color-hover);\n\n @include forced-colors {\n color: LinkText;\n background-color: Canvas;\n }\n }\n }\n\n &[disabled] {\n opacity: var(--paf-button-opacity-disabled);\n }\n\n & .text {\n display: block;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n & .hidden-text {\n @include screen-reader-only;\n }\n }\n\n &.secondary {\n @include forced-colors {\n background-color: Canvas;\n\n &:not([disabled]) {\n @include hover-style {\n color: LinkText;\n border-color: LinkText;\n background-color: Canvas;\n }\n }\n }\n }\n\n .expand-icon {\n flex-basis: px-to-rem(var(--paf-button-expandable-icon-dimensions));\n flex-shrink: 0;\n height: px-to-rem(var(--paf-button-expandable-icon-dimensions));\n fill: currentcolor;\n transform-origin: 50% 50%;\n transform: rotate(180deg);\n transition: transform var(--paf-button-transition-duration);\n\n @include reduced-motion {\n transition: none;\n }\n\n @include forced-colors {\n fill: ButtonText;\n }\n }\n\n &.expandable {\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: center;\n column-gap: px-to-rem(var(--paf-button-expandable-icon-gap));\n color: var(--paf-button-expandable-color);\n\n &.expanded .expand-icon {\n transform: rotate(0deg);\n }\n }\n\n .icon {\n display: block;\n width: px-to-rem(var(--paf-icon-size-small));\n height: px-to-rem(var(--paf-icon-size-small));\n\n @include mq($from: medium) {\n width: px-to-rem(var(--paf-icon-size));\n height: px-to-rem(var(--paf-icon-size));\n }\n }\n\n &.icon-only {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n\n &.rotate-icon {\n .icon {\n transform: rotate3d(0, 0, 1, 90deg);\n }\n }\n }\n}\n","import {\n Component,\n ComponentInterface,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { InterfacePafButton } from './paf-button.custom.d';\n\n/**\n * @slot unnamed - Slot to render svg icon. You must pass an svg-element.\n */\n\n@Component({\n shadow: true,\n styleUrl: 'paf-button.scss',\n tag: 'paf-button',\n})\n\nexport class PafButton implements ComponentInterface {\n\n /**\n * The text for the button.\n */\n @Prop() public text?: string;\n\n /**\n * The variant for the button. Available values are primary and secondary\n */\n @Prop() public variant?: InterfacePafButton['variant'] = 'primary';\n\n /**\n * If set to true, the button will be disabled.\n */\n @Prop() public disabled? = false;\n\n /**\n * If set to true, the button will be rendered as a link (semantically)\n */\n @Prop() public isLink? = false;\n\n /**\n * If the button is rendered as link (see isLink), you should provide\n * a href attribute for the link\n */\n @Prop() public href?: string;\n\n /**\n * If the button is rendered as link (see isLink), you should provide\n * a target attribute for the link\n */\n @Prop() public target?: InterfacePafButton['linkTarget'];\n\n /** The type attribute to use for the button */\n @Prop() public type?: InterfacePafButton['type'] = 'button';\n\n /**\n * If defined, this will be used as aria-label attribute on the host element.\n */\n @Prop({\n reflect: true,\n }) public aLabelValue?: string;\n\n /**\n * Set this value to true if you pass an svg icon to the component.\n * (see slot-documentation)\n * Note: due to various different implementations of icon-buttons, the\n * button-variant with icon-only will spread across 100% width and height.\n * This means your implementation is responsible to set it's width and\n * height appropriately.\n */\n @Prop() public icon? = false;\n\n /**\n * If you use an icon without a label, you must provide an iconDescription\n */\n @Prop() public iconDescription?: string;\n\n /**\n * If the button is used as a link with target=\"_blank\", then you should\n * provide a text that we append to the link for screenreaders.\n * Example: \"Link target opens in a new window\"\n */\n @Prop() public hiddenTextOpensInNewWindow?: string;\n\n /**\n * If set to true, the icon will be rotated by 90degrees\n */\n @Prop() public rotateIcon?;\n\n /**\n * If type is expandable, you may define if it is expanded initially\n */\n @Prop() public expanded?;\n\n /**\n * If set to true, preventDefault will be enforced in the click handler,\n * no matter if the component is a button or a link\n *\n * example: button on search form might be a link. But we don't want to\n * follow the href immediately, but first do some work (append params)\n */\n @Prop() public forcePreventDefault = false;\n\n /**\n * Event which will be emitted if the button is clicked\n */\n @Event({\n bubbles: true,\n composed: true,\n eventName: 'paf-button_clicked',\n })\n public clicked: EventEmitter;\n\n /**\n * Event which will be emitted if a keydown event has\n * been noted on the expandable button\n */\n @Event({\n bubbles: true,\n composed: true,\n eventName: 'paf-button_expandable-keydown',\n })\n public expandableKeyDown: EventEmitter;\n\n /**\n * Event which will be emitted if the expandable button state changes.\n * The payload will return true if the button is expanded, false otherwise.\n */\n @Event({\n bubbles: true,\n composed: true,\n eventName: 'paf-button_expandable-changed',\n })\n public expandableChanged: EventEmitter;\n\n @Watch('expanded')\n public expandedWatcher(newValue: boolean): void {\n this._expanded = newValue;\n }\n\n @State() private _expanded = false;\n\n private _buttonClick = (evt: any): void => {\n\n // don't emit events for link variant\n if (this.isLink) {\n if (this.forcePreventDefault) {\n evt.preventDefault();\n } else {\n this.clicked.emit();\n\n return;\n }\n }\n\n evt.preventDefault();\n\n // toggle state for expandable variant\n if (this.variant === 'expandable') {\n this._expanded = !this._expanded;\n }\n\n // emit expandable event\n if (this.variant === 'expandable') {\n this.expandableChanged.emit(this._expanded);\n\n return;\n }\n\n this.clicked.emit();\n };\n\n private _buttonKeyDown = (evt: any): void => {\n if (this.variant === 'expandable') {\n this.expandableKeyDown.emit(evt.detail);\n }\n };\n\n public componentWillLoad(): Promise | void {\n this._expanded = this.expanded;\n }\n\n public render(): HTMLDivElement {\n const hasNoText = !this.text || this.text.length < 1;\n\n // security exit, if neither label nor icon is provided via props\n if (hasNoText && !this.icon) {\n return

Config error: either label or icon must be provided

;\n }\n\n // security exit for icon only button with no icon description\n if (hasNoText && this.icon && !this.iconDescription) {\n return

Config error: you must provide an icon description

;\n }\n\n const TAGNAME = this.isLink\n ? 'a'\n : 'button';\n\n const elementAttributes = {};\n\n if (this.isLink) {\n elementAttributes['href'] = this.href;\n elementAttributes['target'] = this.target;\n }\n\n if (this.icon && hasNoText && this.iconDescription) {\n elementAttributes['aria-label'] = this.iconDescription;\n }\n\n if (this.variant === 'expandable') {\n elementAttributes['aria-expanded'] = this._expanded?.toString() === 'true'\n ? 'true'\n : 'false';\n }\n\n if (this.aLabelValue && this.aLabelValue.length > 0) {\n elementAttributes['aria-label'] = this.aLabelValue;\n }\n\n if (this.disabled) {\n elementAttributes['tabindex'] = '-1';\n }\n\n let textWithOptionalHiddenText = this.text;\n\n if (!hasNoText && this.isLink && this.target === '_blank' && this.hiddenTextOpensInNewWindow) {\n textWithOptionalHiddenText += ` ${this.hiddenTextOpensInNewWindow}`;\n }\n\n return (\n \n {this.icon\n ?