{"version":3,"sources":["components/ad/Banners/images/MkTaxi/mktaxi_logo.png","components/ad/OtherServices/AirportTransferTaxi/images/iyotetsutaxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/king-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/kisakata-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/eastern_airport_logo.png","components/ad/OtherServices/AirportTransferTaxi/images/eastern_airport_logo_en.png","components/ad/OtherServices/AirportTransferTaxi/images/sandenTaxiLogo.png","components/ad/OtherServices/AirportTransferTaxi/images/nahaHireLogo.png","components/ad/OtherServices/AirportTransferTaxi/images/miyakou-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/hinomaruHireLogo.png","components/ad/OtherServices/AirportTransferTaxi/images/nangokuTaxiLogo.png","components/ad/OtherServices/AirportTransferTaxi/images/gotaku-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/asahikawa-chuuo-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/hakodate-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/daiwa-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/kita-fukushima-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/fukushima-chuo-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/iwaki-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/uchigo-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/tajima-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/kinugawa-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/hokto-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/yoko-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/toden-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/ishikawa-taxi-logo.jpg","components/ad/OtherServices/AirportTransferTaxi/images/ube-kounai-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/tsuzu-taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/sakata-no1taxi-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/shoko-hire-logo.png","components/ad/OtherServices/AirportTransferTaxi/images/dummy_taxi_logo.png","components/ad/OtherServices/AirportTransferTaxi/common/Header/images/tabicube_ja.jpg","components/ad/OtherServices/AirportTransferTaxi/common/Header/images/tabicube_en.jpg","components/ad/OtherServices/AirportTransferTaxi/images/logo.png","components/ad/OtherServices/AirportTransferTaxi/images/logoEN.png","components/search/Icons/icon_input_airport.png","components/ad/Banners/images/MkTaxi/bn_mk_taxi_2209_640_100.png","components/ad/Banners/images/MkTaxi/bn_mk_hire_640_100.jpg","components/ad/Banners/images/MkTaxi/bn_mk_kyoto_2209_640_100.png","components/ad/Banners/images/MkTaxi/popup/mktaxi_service_hire.jpg","components/ad/Banners/images/MkTaxi/popup/mktaxi_service.jpg","components/ad/Banners/images/MkTaxi/popup/BarrierFreeImage.png","components/ad/Banners/images/nearMe/popup/service4.png","components/ad/Banners/images/nearMe/logo_black.png","components/result/sections/images/cc.jpg","components/ad/Banners/images/MkTaxi/popup/mktaxi_kyoto_service.jpg","actions/conditionAction.ts","states/conditionState.ts","services/ana/data/arrivalGateToStation.ts","services/ana/data/arrivalGateToStationInt.ts","services/ana/data/busGates.ts","services/ana/data/satelliteGates.ts","states/query.ts","utils/dateTime.ts","utils/Airlines.ts","services/ana/data/airportMapPath.ts","utils/ana.ts","components/result/DepartureGuide/ToArrivalGuide/AirportMap.ts","services/ana/models/flightInfo.ts","states/common.ts","reducers/conditon.ts","actions/publicConditionAction.ts","services/public/models/searchCourse.ts","states/publicConditionState.ts","reducers/publicCondition.ts","actions/generalAction.ts","reducers/general.ts","reducers/index.ts","store.ts","components/common/ScrollToTop.tsx","utils/environment.ts","services/taxi/GetReservation/index.ts","services/taxi/GetTaxiMetaInfo/index.ts","components/ad/OtherServices/AirportTransferTaxi/common/LoadingModal.tsx","utils/regExpUtils.ts","components/common/ScClick.tsx","services/taxi/Reservation/index.ts","components/ad/OtherServices/AirportTransferTaxi/common/Cost.tsx","components/ad/OtherServices/MiyakoTaxi/AlertInReservation/index.tsx","services/taxi/Reservation/ReservationResponse.ts","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectChildrenNum.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectAdultNum.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectCarNum.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectOtherBag.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectSuitcase.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/SelectGolfBag.tsx","components/search/LoadingModal.tsx","services/taxi/GetDirectionAndFare/models/getFareSamplesParams.ts","components/ad/OtherServices/AirportTransferTaxi/common/AMCCaution/jp.tsx","components/ad/OtherServices/AirportTransferTaxi/common/AMCCaution/en.tsx","components/ad/OtherServices/AirportTransferTaxi/common/AMCCaution/index.tsx","components/ad/OtherServices/AirportTransferTaxi/common/CautionsEN.tsx","components/ad/OtherServices/AirportTransferTaxi/common/CautionsJP.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Cautions.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Contact.tsx","utils/lang.ts","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/ShowTaxiComapnyLogo.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Map/Coordinates.ts","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/PickupPattern.ts","services/google/GoogleReCaptcha.ts","services/taxi/TemporaryReservation/index.ts","utils/geoLocation.ts","components/search/Candidate.ts","utils/stringUtils.ts","services/google/Place.ts","services/public/api.ts","services/public/googleApi.ts","services/google/api.ts","utils/luxonUtil.ts","utils/getParams.ts","components/ad/OtherServices/AirportTransferTaxi/common/Address.ts","services/taxi/GetDirectionAndFare/index.ts","services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf.ts","components/ad/OtherServices/CommonTaxi/CommonTaxiDateUtils.ts","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/useForm.tsx","components/ad/OtherServices/AirportTransferTaxi/common/RegExp.ts","components/ad/OtherServices/AirportTransferTaxi/Reservation/index.tsx","components/ad/OtherServices/AirportTransferTaxi/Reservation/Form/useForm.tsx","components/ad/OtherServices/AirportTransferTaxi/common/TabiCube.ts","components/ad/OtherServices/AirportTransferTaxi/common/Header/TabiCube.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Header/TaxiAndHireHeader.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Header/index.tsx","components/common/Footer/ExternalLink.tsx","components/common/Footer/ExternalTransmissionDiscipline.tsx","components/common/Footer/PrivacyPolicy.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/Terms.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/ServiceOverview/JP.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/ServiceOverview/EN.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/ServiceOverview/ServiceBody.tsx","utils/tabIndexList.ts","components/common/ModalHeader.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/ServiceOverview/ServiceDialog.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/ServiceOverview/index.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/TabiCube.tsx","components/common/Terms/TermsBodyJP.tsx","components/common/Terms/TermsBodyEN.tsx","components/common/Terms/TermsBody.tsx","components/common/Terms/TermsDialog.tsx","ekispert/extreme.ts","utils/ekispert.ts","services/ekispert/api.ts","components/common/ServiceAboutBody.tsx","components/common/TaxiServiceAboutBody.tsx","components/common/ServiceAboutDialog.tsx","components/public/common/PublicServiceAboutBody.tsx","components/public/common/PublicServiceAboutDialog.tsx","components/common/Footer.tsx","components/ad/OtherServices/AirportTransferTaxi/common/Footer/index.tsx","components/Booking.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/useTemporaryReservation.tsx","containers/bookingContainer.ts","components/NotFound.tsx","themes/ana.ts","themes/universalMaaS.ts","utils/path.ts","components/search/Icons/AswSearch.tsx","services/google/data/replaceWordList.ts","services/google/fixAutocompleteInput.ts","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Map/SearchBox.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Map/index.tsx","components/common/useGoogleMaps.tsx","services/ana/data/airportNameMap.ts","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectAirport.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectFlightHour.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectFlightMinutes.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectHour.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectMinutes.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectDay.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectMonth.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectYear.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/ButtonToSubmit.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectHourAndMinutesPulldown.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Form/SelectFlight.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/index.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Success.tsx","components/ad/OtherServices/MiyakoTaxi/common/EmailCheckList.tsx","components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Unreceived.tsx","components/LinkToTabicube/util.ts","components/LinkToTabicube/index.tsx","App.tsx","serviceWorker.ts","i18n.ts","services/ana/api.ts","services/datalake/api.ts","services/ekispert/data/exitToStations.ts","services/ekispert/data/airportsAndStations.ts","components/ad/Banners/Banner.tsx","components/common/PopupDialog/ButtonToLink.tsx","components/common/PopupDialog/Type.tsx","components/ad/OtherServices/MkTaxi/MkTaxiService.tsx","components/common/PopupDialog/index.tsx","components/ad/OtherServices/NearMe/NearMeServiceBody.tsx","components/ad/OtherServices/NearMe/NearMeLogic.ts","components/result/sections/ButtonOfSection.tsx","components/ad/OtherServices/NearMe/NearMeDialog.tsx","components/ad/OtherServices/SagaAirportTaxi/index.ts","components/ad/OtherServices/SagaAirportTaxi/Button.tsx","components/result/taxiCourse/TaxiReserversButton.tsx","services/mktaxi/util.ts","components/ad/OtherServices/MkTaxi/MkTaxiAgreementService.tsx","components/result/taxiCourse/UniversalMaaSMKTaxiButton.tsx","components/result/taxiCourse/TaxiReserversAllButtons.tsx","components/ad/OtherServices/MkTaxi/MkTaxiKyotoService.tsx","components/ad/common.tsx","services/ekispert/data/showJRHokkaidoNorthFreePassList.ts","services/ekispert/data/JRKyushuReserveLinkList.ts","services/jrkyushu/JRKyushuReserveLinkData.tsx","services/ekispert/data/showTokyoMetroFreePassList.tsx","services/linktivity/TokyoMetro.tsx","services/ekispert/models/UseTaxiCourse.ts","services/tokyolimousinebus/api.ts","utils/formatCourse.ts","services/universalMaas/api.ts","services/universalMaas/util.ts","utils/carRoute.ts","utils/placeInfoFactory.ts","services/ekispert/data/airportsStationCodeMap.ts","services/ekispert/planeTimetable.ts","utils/referrerParam.ts","services/ekispert/models.ts","services/jreEkinet/ekinetInfoLine.ts","services/jreEkinet/index.ts","sagas/index.ts","index.tsx"],"names":["module","exports","ConditionActionType","updateDirections","v","payload","type","UPDATE_DIRECTIONS","updateTaxiFareSummaries","UPDATE_TAXI_FARE_SUMMARIES","switchIsNoSetTerminalHND","updateCourse","updateSearchedAt","UPDATE_SEARCHED_AT","switchConsentAirportArrivalTime","switchAirportModalShow","getRouteType","start","params","ANA_GET_ROUTE_TYPE_START","succeed","result","ANA_GET_ROUTE_TYPE_SUCCEED","fail","error","ANA_GET_ROUTE_TYPE_FAIL","getFlight","ANA_GET_FLIGHT_START","ANA_GET_FLIGHT_SUCCEED","ANA_GET_FLIGHT_FAIL","getExtreme","EKISPERT_GET_EXTREME_START","EKISPERT_GET_EXTREME_SUCCEED","EKISPERT_GET_EXTREME_FAIL","getCondition","EKISPERT_GET_CONDITION_START","EKISPERT_GET_CONDITION_SUCCEED","EKISPERT_GET_CONDITION_FAIL","ModalStatus","ArrivalGateToStation","ArrivalGateToStationInt","BusGates","SatelliteGates","Lang","changeLang","lang","ja","en","BASE_MAX_DATE_OF_DOMESTIC","BASE_MIN_DATE_OF_DOMESTIC","BASE_MAX_DATE_OF_INTERNATINAL","BASE_MIN_DATE_OF_INTERNATINAL","DIFF_UTC_TO_JST_MINUTES","DateTime","dateStr","localDate","test","format","date","slice","time","minutes","Number","hour","Math","floor","isNaN","addDay","setTime","addDays","parse","Date","zonedTimeToUtc","scheduledTime","isDomestic","baseMaxDate","baseMinDate","now","diff","differenceInCalendarDays","min","getMinutes","setMinutes","addHours","ceil","isToday","hourSuffix","minSuffix","hhmm","depDate","isAfter","getTime","addMinutes","oneMonthAgoDiffDay","subMonths","getDate","ableReserveDay","setDate","getHours","diffDay","baseDate","targetDate","differenceInDays","a","subHours","b","busDepDate","isDepAirport","flightArrTime","isBefore","beforeDay","subDays","utcToZonedTime","formatString","option","tokyoDate","getJSTDate","e","diffJSTMinutes","getTimezoneOffset","subMinutes","userSetDate","JSTFormat","flightDate","rideDate","end","getTotalMinutes","str","hour_minutes","split","nowTotalMintes","depTime","diffDays","isAbleReserveDay","isDurationTime","limit","flightArrDate","Airlines","codeNumber","startNumber","endNumber","replace","CodeShareList","isTargetAirlineCodeShare","flightNumber","targetCodeShareAirline","getAirlineFrotmCodeShare","matchFlight","match","length","airlineLetterCode","marchAirline","Object","keys","AirlineLetterCodes","find","airline","includes","targetLetterCodes","x","airlineCode","ANA","JAL","IBX","SJO","APJ","ADO","JAC","AMX","SNJ","FDA","JJP","ASV","TWB","CAL","HKE","AirlineNameList","AirportMapPath","AnaUtil","code","terminal","HND_TERMINAL_1_KEY","HND_TERMINAL_2_KEY","FUK_TERMINAL_NORTH_KEY","FUK_TERMINAL_SOUTH_KEY","AirportMap","constructor","airportCode","airportName","this","getDomesticArrivalUrl","anchorPath","isHND","getKeyByTerminalInHaneda","FlightInfo","terminalCheck","path","anchor","DOMESTIC_EN_BASE_URL","DOMESTIC_JA_BASE_URL","isTeminal1InHaneda","HND_1_KEY","HND_2_KEY","INTERNATIONAL_JA_BASE_URL","INTERNATIONAL_EN_BASE_URL","ARRIVAL_KEY","SPECFIED_AIRPORTS_INT","Status","monthNames","flight","targetAirLine","hasData","etd","eta","atd","ata","userDate","depAirportCode","arrAirportCode","depAirportName","arrAirportName","bordingGate","securtyCheckPoint","depTerminal","arrTerminal","exit","errorMessage","useBusToBoard","useSatelliteBus","remarks","status","apiArrTerminal","isDifferentArrivalDate","airportMap","data","fsList","request","site","defaultTime","skdDepTime","skdDepMonth","skdDepDay","skdArrTime","skdArrMonth","skdArrDay","actDepTime","actDepMonth","actDepDay","actArrTime","actArrMonth","actArrDay","depAirport","arrAirport","getBordingGate","getSecurtyCheckPoint","getDepTerminal","getArrTerminal","getExit","message","checkBusToBoard","checkSatelliteGates","modifyRemarks","getStatus","Unknown","getAirportMap","dep","arr","updateByQuery","query","fromAirportCode","toAirportCode","toTerminal","fromTerminal","std","sta","updatePartialQuery","undefined","updateHNDTerminalBySFJ","airportList","HNDAirportCodeList","setConsiderationSFJTerminalHND","setIsDomestic","value","updateTimeTableLine","line","yyyymmmddStr","etdHHMMSSStr","DepartureState","Datetime","text","etaHHMMSSStr","ArrivalState","concat","operation","setIsDifferentArrivalDate","isSameDay","statusCheck","Error","checkList","thisInfo","obj","getHour","month","day","monthIndex","toUpperCase","parseInt","utcDate","getFullYear","getSecurityCheckInHaneda","securityName","securityCheckA","anotherAirportCode","HNDDepOrArrDate","isSFJ","isSpecialHNDIntTerminalBefore24Hours","isDepartureGuide","getFlightTimeDate","isHND2ndTerminalArr24Limit","getSpecialHNDIntTerminalNumber","targetFlightNumberList","depAirTerminal","exitName","getDeadLineTime","isAvalableOperationInfo","setHours","getBoardingTime","isBordingGate20min","getFlightTime","isInvalidDate","getFlightDepartureDate","getFlightArrivalDate","isDefaultAtd","isDefaultAta","getSearchTime","getArrivalGateToStation","getArrivalGateToStationInt","modifyAirportCode","statusCode","Normal","getStatusDomestic","getStatusInternational","Delay","Canceled","isDelay","isCanceled","setStatusToNormal","baseAirportCode","getTerminal","terminalName","getHNDTerminal","getNRTTerminal","specialHNDIntTerminalNumber","getFixTerminalCode","terminalCode","getAddTerminalAirportCode","hasPriorityAirportBus","terminalNo","toString","getIsAbleUse","PointType","initialState","point","pointCode","via","viaCode","hasVia","pointType","NONE","arrivalTimeToAirport","isEnabledShinkansen","isEnabledLimitedExpress","isEnabledIc","flightStatus","flightStatusForSeachAd","flightStatusUserSetDateForSearchAd","cityName","course","conditionDetail","referrer","isArrivalGuide","hasPriorityCar","hasPriorityCarWithBarrierFree","searchedAt","consentAirportArrivalTime","airportModalShow","modalStatus","carCourse","HIDE","initModal","tokyoLimousineBusModalShow","busTicketOitaModalShow","isNoSetTerminalHND","isAvalable","directions","courseIndex","pointGeoCode","lat","lng","okinawaBusStopList","isShowOkinawaBusLink","place","lastSelectedPlace","taxiFareSummaries","searchHistories","isShowUMModal","conditionReducer","state","action","_objectSpread","UPDATE_POINT_TYPE","UPDATE_FLIGHT_STATUS","UPDATE_FLIGHT_STATUS_FOR_SEARCH_AD","UPDATE_FLIGHT_STATUS_USER_SET_DATE_FOR_SEARCH_AD","UPDATE_ARRIVAL_TIME_TO_AIRPORT","UPDATE_CITY_BANE","UPDATE_QUERY","UPDATE_PLACE","UPDATE_LAST_SELECTED_PLACE","UPDATE_COURSE_INDEX","UPDATE_OKIBAWABUS_BUSSTOPLIST","UPDATE_SEARCH_HISTORIES","SWITCH_IC","SWITCH_PRIORITY_AIRPORT_BUS","SWITCH_PRIORITY_CAR","SWITCH_PRIORITY_CAR_WITH_BARRIER_FREE","UPDATE_MODAL_STATE","SWITCH_IS_AVALABLE","SWITCH_IS_SHOS_OKINAWA_BUS_LINK","UPDATE_TARGET_AIRLINE","SWITCH_IS_SHOWUMMODAL","PublicConditionActionType","OUTBOUND","RETURN_TRIP","RequestSearchType","SortType","initialOnewayState","depPoint","arrPoint","depPointCode","arrPointCode","depPointType","arrPointType","depPointGeoCode","arrPointGeoCode","getTomorrow","setSeconds","priorityCondition","depPlace","arrPlace","depPrefecture","arrPrefecture","depDirections","arrDirections","depLastSelectedPlace","arrLastSelectedPlace","searchType","DEPARTURE","isUnavailableService","isRound","outbound","returnTrip","sortInfo","faster","cheaper","easier","isMapDeparture","outboundDepPoint","outboundDepPointCode","outboundDepPointType","outboundDepPointGeoCode","outboundArrPoint","outboundArrPointCode","outboundArrPointType","outboundArrPointGeoCode","outboundDate","outboundArrivalTimeToAirport","outboundIsEnabledIc","outboundHasPriorityAirportBus","outboundHasPriorityCar","outboundHasPriorityBarrierFreeMode","outboundSearchType","returnTripDepPoint","returnTripDepPointCode","returnTripDepPointType","returnTripDepPointGeoCode","returnTripArrPoint","returnTripArrPointCode","returnTripArrPointType","returnTripArrPointGeoCode","returnTripDate","returnTripArrivalTimeToAirport","returnTripIsEnabledIc","returnTripHasPriorityAirportBus","returnTripHasPriorityCar","returnTripHasPriorityBarrierFreeMode","returnTripSearchType","selectedSortType","FASTER","aswLinkageInfo","dynamicPackageTicketingLinkList","nowSelectOutbound","unsettled","isLoadingASWInfo","isAcceptEstablishedRoute","requestFlightInfoQuery","isUniversalMaaSMode","isFlightReservedMode","searchRequestBody","searchExpiredDate","publicConditionReducer","SWITCH_IS_UNAVAILABLE_SERVICE","SWITCH_IS_LOADING_ASW_INFO","INITIAL_RETURN_TRIP","SWITCH_ROUND","UPDATE_OUTBOUND","UPDATE_RETURN_TRIP","SWITCH_MAP_DEPARTURE","UPDATE_SEARCH_EXPIRED_DATE","UPDATE_DEP_POINT","parentType","UPDATE_ARR_POINT","UPDATE_DEP_POINT_CODE","UPDATE_DEP_POINT_GEOCODE","UPDATE_ARR_POINT_GEOCODE","UPDATE_ARR_POINT_CODE","UPDATE_DEP_POINT_TYPE","UPDATE_ARR_POINT_TYPE","UPDATE_DEP_PLACE","UPDATE_ARR_PLACE","UPDATE_DEP_PREFECTURE","UPDATE_ARR_PREFECTURE","UPDATE_DATE","UPDATE_COURSE","UPDATE_SORT_INFO","UPDATE_SORT_TYPE","UPDATE_ASW_LINKAGE_INFO","UPDATE_DYNAMIC_PACKAGE_TICKETING_LINK_LIST","SWITCH_NOW_SELECT_OUTBOUND","UPDATE_DEP_DIRECTIONS","UPDATE_ARR_DIRECTIONS","SWITCH_HAS_PRIORITY_AIRPORT_BUS","updateOutboundPriorityBusCondition","updateReturnTripPriorityBusCondition","SWITCH_HAS_PRIORITY_CAR","updateOutboundPriorityCarCondition","updateReturnTripPriorityCarCondition","UPDATE_DEP_LAST_SELECTED_PLACE","UPDATE_ARR_LAST_SELECTED_PLACE","UPDATE_SEARCH_TYPE","UPDATE_UNSETTLED_OUTBOUND_DATE","UPDATE_UNSETTLED_RETURN_TRIP_DATE","SWITCH_IS_ACCEPT_ESTABLISHED_ROUTE","UPDATE_REQUEST_FLIGHT_INFO_QUERY","SWITCH_IS_UNIVERSAL_MAAS_MODE","SWITCH_IS_FLIGHT_RESERVED_MODE","UPDATE_UNIVERSALMAAS_COURSE","universalMaaSCourse","UPDATE_SEARCH_REQUEST_BODY","GeneralActionType","switchIsFailInGetCourses","SWITCH_IS_FAIL_IN_GET_COURSES","switchisLoading","SWITCH_IS_LOADING","updateErrorMessage","UPDATE_ERROR_MESSAGE","updateTraininfo","UPDATE_TRAININFO","updateTaxiCompanyConfigurations","UPDATE_TAXI_COMPANY_CONFIGURATIONS","randomTmpAdRoatationValue","random","pow","RANDOM_TMP_AD_ROATATION_VALUE","switchUseV2","SWITCH_USE_V2","genetalInitial","isFailInGetCourses","isShowMap","candidateSelectorIsVia","isShowCandidateListModal","isFromMapToCandidateListModal","isInitial","isLoading","axiosError","traininfoList","isFailInAssignDia","isBackendCrowded","search","getFlightInfo","searchDiaList","tmp","placeInfo","pointName","isUpdateInMapSelector","updateCheck","isShowPublicSummary","applyConvertingToMultipleAirport","publicInterruptTransferStations","isResearch","isOutbound","debugErrorMessage","adRotationRand","universalMaaSQuery","mode","isShowBarrierFreeInfo","isBarrierFreeMode","interruptTransfer","interruptTransferStations","interruptTransferStationsInUndecided","useV2","generalReducer","newInterruptTransfer","SWITCH_SHOW_MAP","SWITCH_CANDIDATE_SELECTOR_IS_VIA","SWITCH_SHOW_CANDIDATE_LIST_MODAL","SWITCH_IS_FROM_MAP_TO_CANDIDATE_LIST_MODAL","SWITCH_IS_INITIAL","SWITCH_IS_FAIL_ASSIGN_DIA","SWITCH_IS_BACKEND_CROWDED_SEARCH","SWITCH_IS_BACKEND_CROWDED_GET_FLIGHT_INFO","SWITCH_IS_BACKEND_CROWDED_SEARCH_DIA_LIST","UPDATE_REFERRER","UPDATE_AXIOS_ERROR","UPDATE_PUBLIC_LANG","UPDATE_TMP_VALUES","UPDATE_UNIVERSAL_MAAS_QUERY","UPDATE_TMP_IS_UPDATE_IN_MAP_SELECTOR","taxiCompanyConfigurations","UPDATE_TAXI_STAND_INFO","taxiStandInfo","SWITCH_MODE","newMode","modeType","UPDATE_INTERRUPT_TRANSFER_STATIONS","UPDATE_INTERRUPT_TRANSFER_STATIONS_IN_UNDECIDED","rootReducer","history","combineReducers","general","condition","publicCondition","router","connectRouter","createBrowserHistory","sagaMiddleware","createSagaMiddleware","ScrollToTop","pathname","useLocation","useEffect","window","scrollTo","Environment","env","PRODUCTION","STAGING","DEV","CHECK_AIRPORT_GROUP","BACKEND_DEV","process","isProduction","isStaging","isLikeProdEnv","toLowerCase","DEFAULT_API_CONFIG","baseURL","timeout","async","getReservation","config","axios","defaults","headers","post","instance","create","setTaxiEndpoint","err","getEnvironmentType","ComponentKey","getTaxiCompanyConfiguration","response","get","reseponseBody","body","useStyles","makeStyles","theme","createStyles","paper","position","width","backgroundColor","palette","background","boxShadow","shadows","padding","spacing","left","top","transform","LoadingModal","props","classes","React","createElement","Modal","open","disableAutoFocus","disableEnforceFocus","className","Grid","container","justify","alignContent","item","CircularProgress","color","size","isFullWidthKana","RegExp","isNumber","isEmail","isLetter","scClick","name","SCClick","console","log","cookieKey","Cookies","set","submitReservation","setPath","root","textAlign","border","borderRadius","marginTop","Cost","Typography","component","label","notice","AlertInReservation","t","useTranslation","severity","setSeverity","pickupPattern","setMessage","Alert","anyMessage","map","index","key","defaultReservationLabels","fareLabel","distanceLabel","durationLabel","alertLabel","defaultReservationFare","fareType","priceType","notesLabel","height","fontSize","SelectChildrenNum","numbers","Array","from","Select","SelectDisplayProps","style","onChange","n","MenuItem","SelectAdultNum","_","i","SelectCarNum","SelectOtherBag","maxOtherBag","SelectSuitcase","maxNum","SelectGolfBag","useSelector","TaxiCompanyList","convertStringToTaxiCompany","companyString","limoTaxi","eastern","miyakou","ubeSanden","nahahire","hinomaru","nangoku","iyotetsutaxi","iyotetsuTaxi2","gotaku","Asahikawachuuo","hakodateTaxi","daiwaj","kitafukushima","fukushimachuo","iwakiTaxi","tajimaTaxi","kinugawaTaxi","hokutocab","yotoTaxi","kingTaxi","toden","ishikawakotsu","dummyVal","tsuzutaxi","kingTaxi2","ubeKounai","sakataNo1Taxi","shokoHire","airport_liner","nikaho_go","GetDirectionAndFareOperation","FlightType","AMCCautionJP","useTheme","useCautionStyles","Fragment","bold","unorderedList","data-cy","companyDisplayName","company","Link","href","target","link","AMCCautionEN","AMCCaution","i18n","language","CautionsEn","redFont","isSupportAMC","isReservationPage","isMeterFare","CautionsJP","isFukushima","isFukushimaTaxi","tachiyoriMessage","primary","main","paddingInlineStart","textDecoration","fontWeight","come","marginLeft","comeBody","marginRight","springMileMain","springMileLeftMargin","Cautions","CautionsEN","Contact","contact","messages","idx","isEmailStr","isLinkMailAddress","isJapanese","JAPANESE","isEnglish","ENGLISH","changeLanguage","searchParams","getStringParam","easternLogo","margin","maxHeight","ubeSandenLogo","maxWidth","nahahireLogo","miyakohLogo","marginBottom","nangokuLogo","iyotetsutaxiLogo","wideShortTaxiLogo","kinugawaTaxiLogo","ShowTaxiComapnyLogo","taxiCompanyConfiguration","EasternLogo","EasternLogoJP","EasternLogoEN","Logos","MiyakoTaxiLogo","SandenLogo","NahaHireLogo","HinomaruHireLogo","NangokuTaxiLogo","IyotetsuLogo","GotakuLogo","HakodateTaxiLogo","AsahikawachuuoLogo","DaiwaTaxiLogo","KitaFukushimaTaxiLogo","FukushimaChuoTaxiLogo","IwakiTaxiLogo","UchigoTaxiLogo","TajimaTaxiLogo","KinugawaTaxiLogo","hokutocabLogo","YokoTaxiLogo","KingTaxiLogo","TodenTaxiLogo","IshikawaKotsuLogo","UbeKounaiLogo","TsuzuTaxiLogo","SakataNo1TaxiLogo","ShokoHireLogo","KisakataLogo","DummyTaxiLogo","classNames","src","alt","logo","cyName","Coordinates","TOKYO_STATION","PickupPattern","TO_AIRPORT","FROM_AIRPORT","ROUND_TRIP","RECAPTCHA_KEY","submitTemporaryReservation","convertEWSToLocation","baseGeoPoint","lati_d","longi_d","gcs","convertLocationToStr","Candidate","geoPoint","prefecture","description","Station","Name","Type","GeoPoint","Prefecture","getTypeLabel","HISTORY","StringUtils","join","Place","city","address","category","formattedAddress","prefectureKey","administrativeAreaLv2Key","cityKey1","cityKey2","premiseKey","postalCode","country","fillwidthMinus","getFullAddress","getAddressToMunicipality","setFromAddressComponents","addressComponent","cityList","reverse","forEach","c","types","longName","long_name","push","indexOf","filter","sort","reduce","setAddress","addressComponents","sublocalityElements","sublocalityKeys","targetComponent","s","StringUtil","isHouseNumber","endsWithNumbers","getCoordinate","toLog","getLocation","fixCity","matchResult","geometry","location","formatted_address","address_components","setPlaceName","sessionStorageKeys","latlng","formatAddress","baseAddress","matchList","isArray","getClosedPlaceDetail","place_id","optionConfig","fields","error_message","JSON","stringify","getClosedGeocode","results","require","toLuxonDateTime","iso8601","fromISO","zone","setZone","toLuxonDateTimeFromUnixTime","unixtime","fromSeconds","getNowLuxonDateTime","second","millisecond","parseFromyyyyMMddHHmm","fromFormat","setBaseDay","minute","URLParams","URLSearchParams","getParam","getNumberParam","getBooleanParam","getDateParam","getDateFromUnixTimeMilisecondsParam","checkParams","k","param","getFloatParam","defaultDate","getLuxonDateTimeUnixTimeMilisecondsParam","hasParam","has","convertLetter","_params$pointInfo","_params$pointInfo2","_params$pointInfo3","_params$pointInfo4","pointInfo","latLng","latLngForPriceCalc","labelForPriceCalc","TaxiTimePattern","CommonTaxiUtils","limit_days","limit_hours","targetAirport","getErrorMessage","originErrorMessage","isLimoTaxiTYO","isLimoTaxi","isTYO","isAvalableEastern","ridingDate","rideingDateBase","nowDateBase","limitDays","days","deadlineDate","minus","getAvailableDate","plus","AirportTransferTaxiMapMode","REFERRER_TYPE","getSCCkickType","taxiCompany","airportAccess","chatan","asw","fukushima","UNSELECTED_RIDING_DATE_STRING","useForm","useHistory","dispatch","useDispatch","_useTranslation","useRecaptchaV2","hours","_React$useState","useState","_React$useState2","_slicedToArray","setAirportCode","_React$useState3","_React$useState4","center","setCenter","_React$useState5","_React$useState6","markerPoint","setMarkerPoint","_React$useState7","_React$useState8","setPointName","_React$useState9","_React$useState10","placeJP","setPlaceJP","_React$useState11","_React$useState12","setFlight","_React$useState13","_React$useState14","setFlightDate","_React$useState15","_React$useState16","setRidingDate","_React$useState17","_React$useState18","selectFlightData","setSelectFlightData","_React$useState19","_React$useState20","isSubmitted","setSubmitted","_React$useState21","_React$useState22","isEmptyAddress","setEmptyAddress","_React$useState23","_React$useState24","email","setEmail","_React$useState25","_React$useState26","isEmptyEmail","setEmptyEmail","_React$useState27","_React$useState28","isInvalidEmail","setInvalidEmail","_React$useState29","_React$useState30","isUnavalableEmail","setUnavalableEmail","_React$useState31","_React$useState32","isEmptyFlight","setEmptyFlight","_React$useState33","_React$useState34","isInvalidFlight","setInvalidFlight","_React$useState35","_React$useState36","isRequiredRetry","setRequiredRetry","_React$useState37","_React$useState38","isFailed","setFailed","_React$useState39","_React$useState40","isOverDeadline","setOverdeadline","_React$useState41","_React$useState42","invalidFlightErrorMessage","setInvalidFlightErrorMessage","_React$useState43","_React$useState44","invalidFlightDateErrorMessage","setInvalidFlightDateErrorMessage","_React$useState45","_React$useState46","needRetryRecaptcha","switchNeedRetryRecaptcha","_React$useState47","_React$useState48","disallowSupportDirection","switchDisallowSupportDirection","_React$useState49","_React$useState50","invalidFlightPattern","switchInvalidFlightPattern","_React$useState51","_React$useState52","toAirport","setToAirport","_React$useState53","_React$useState54","setPickupPattern","_React$useState55","_React$useState56","municipality","setMunicipality","_React$useState57","_React$useState58","setPlace","_React$useState59","_React$useState60","isSubjectArea","switchSubjectArea","_React$useState61","_React$useState62","setDistance","_React$useState63","_React$useState64","distanceText","setDistanceText","_React$useState65","_React$useState66","setDuration","_React$useState67","_React$useState68","durationText","setDurationText","_React$useState69","_React$useState70","fee","setFee","_React$useState71","_React$useState72","totalFee","setTotalFee","_React$useState73","_React$useState74","feeLabel","setFeeLabel","_React$useState75","_React$useState76","setNotesLabel","_React$useState77","_React$useState78","setAlertLabel","_React$useState79","_React$useState80","setTaxiCompany","_React$useState81","_React$useState82","requestCount","setRequestCount","_React$useState83","_React$useState84","isEdited","switchEdited","_React$useState85","_React$useState86","isEndInit","switchIsEndInit","_React$useState87","_React$useState88","setParams","_React$useState89","_React$useState90","selectPointNumber","setSelectPointNumber","_React$useState91","_React$useState92","pointList","setPointList","_React$useState93","_React$useState94","isEndCallTaxiAPI","switchIsEndCallTaxiAPI","_React$useState95","_React$useState96","isFailCallTaxiAPI","switchIsFailCallTaxiAPI","_React$useState97","_React$useState98","taxiCompanyConf","setTaxiCompanyConf","_React$useState99","_React$useState100","targetAirportCodeList","setTargetAirportCodeList","_React$useState101","_React$useState102","setMode","_React$useState103","_React$useState104","setFareType","_React$useState105","_React$useState106","isAvailableReservation","switchIsAvailableReservation","_React$useState107","_React$useState108","setLang","_React$useState109","_React$useState110","defaultPointlabel","setDefaultPointLabel","_React$useState111","normal","_React$useState112","timePattern","setTimePattern","_React$useState113","_React$useState114","selectTimeList","setSelectTimeList","_React$useState115","_React$useState116","isUnselectedRidingDate","switchIsUnselectedRidingDate","_React$useState117","_React$useState118","isUnselectedFlightHour","switchIsUnselectedFlightHour","_React$useState119","_React$useState120","isUnselectedFlightMinutes","switchIsUnselectedFlightMinutes","_React$useState121","_React$useState122","isUnselectedFlightDate","switchIsUnselectedFlightDate","_React$useState123","_React$useState124","setReferrer","_React$useState125","_React$useState126","isInitGetFareInfo","switchIsInitGetFareInfo","_React$useState127","_React$useState128","flightPattern","setFlightPattern","isKisakataTaxi","_React$useState129","_React$useState130","weekdayPointList","setWeekdayPointList","_React$useState131","_React$useState132","holidayPointList","setHolidayPointList","_React$useState133","_React$useState134","dayOfWeek","setDayOfWeek","setPointListByParams","companyCode","componentKey","pulldown","id","then","res","matchPointList","select","onChangedFlightDateCommon","isUnselected","luxonSetObject","year","onChangedFlightDate","points","checkRideDate","taxiConf","taxiUtils","limitHours","isAvalableDate","setErrorMessage","validate","emptyAddress","emptyEmail","emptyFlight","invalidEmail","invalidFlight","isValidFLight","invalidFlightDate","invalidRidingDate","supportDirection","checkJPNArea","isToAirport","getDirectionAndFare","defaultCenter","newCenter","municipalityByAirport","useCallback","useRideDate","googleAPIDepDate","airportLetter","pickup","dropOff","rideDatetime","toFormat","flightType","domestic","international","gate","modeValue","isHolidayDate","isHoliday","newDayOfWeek","usePointList","_pointList$Number","selectedPointId","newListIndex","findIndex","String","newflightPattern","defaultFlightPattern","paramsPointAddress","pointAddress","paramsPointJPAddress","pointJPAddress","setPointLabel","setPointJPLabel","getDirectionAndFareAPI","totalValue","distance","duration","newSelectTimeList","flat","jsDate","toJSDate","isPublicHoliday","holiday","isWeekend","weekday","getTaxiCompanyConf","getParams","getQueryParams","hasRideDate","hasFlightDate","isDeparture","pointLat","pointLng","dryRun","pointJPName","supportAirports","defaultAirportCode","getTaxiCompany","supportAirportCodeList","companyConf","defaulPickupPattern","setDefaultPointName","places","setMunicipalityFromPosition","fetchPointList","weekdayList","holidayList","currentList","setNikahoPointListByParams","flightpattern","finally","onChangedAirport","onChangedEmail","onChangedFlight","onChangedRidingYear","modifiedDate","onChangedRidingMonth","onChangedRidingDay","onChangedRidingHour","onChangedRidingMinutes","onChangedRidingHourAndMinutes","onSubmit","tokenV2","clickName","scClicks","temporaryReservation","clickType","mailAddressCookieName","sendParams","token","sendPoints","selectPointObject","setFlightInfo","number","datetime","jpAddress","jpPlaceName","mailaddress","taxiConnectFlightNumber","count","vr","getSendParams","recaptcha","load","execute","getRecaptchaToken","validatedResult","overwirteBookingUrl","modifyParams","_response$data","successParams","errorCode","catch","onChangedRidingFlight","selectedFlight","forms","notes","tableLeft","tableRight","tableFlex","display","alignItems","formControl","flexDirection","wordBreak","timeSelect","mailForm","mailText","disableMaileTaxt","button","itemName","validationAlert","costNotice","imgContainer","YellowButton","withStyles","Button","AirportTransferTaxi","_reservation$flight","_props$taxiCompanyCon2","_props$taxiCompanyCon3","_reservation$transfer","_reservation$transfer2","_props$taxiCompanyCon4","isMobileSize","useMediaQuery","breakpoints","down","PDF_HOST","_useForm","setIsFailed","setIsRequiredRetry","setIsUnavalableEmail","isInvalidInput","setIsInvalidInput","lastName","setLastName","firstName","setFirstName","lastNameKana","setLastNameKana","firstNameKana","setFirstNameKana","placard","setPlacard","carType","setCarType","adultNum","setAdultNum","childNum","setChildNum","carNum","setCarNum","phoneNumber","setPhoneNumber","suitcase","setSuitcase","maxSuitcase","setmaxSuitcase","maxSuitcasePerUnit","setMaxSuitcasePerUnit","golfBag","setGolfBag","maxGolfBag","setMaxGolfBag","maxGolfBagPerUnit","setMaxGolfBagPerUnit","otherBag","setOtherBag","payment","setPayment","receiptAddress","setReceiptAddress","setRemarks","reservationFare","setReservationFare","reservationLabels","setReservationLabels","defaultOperatorMailaddress","operatorMailaddress","setOperatorMailaddress","mailUndeliveredProblemReproduction","setMailUndeliveredProblemReproduction","acmMileageNumber","setAcmMileageNumber","isSubmitting","switchSubmitting","onChangeAdultNum","onChangeChildNum","onChangeCarNum","onChangeSuitcase","onChangedGolfBag","onChangeOtherBag","_useState","_useState2","isInvalidLastName","setIsInvalidLastName","_useState3","_useState4","isInvalidFirstName","setIsInvalidFirstName","_useState5","_useState6","isInvalidLastNameKana","setIsInvalidLastNameKana","_useState7","_useState8","isInvalidFirstNameKana","setIsInvalidFirstNameKana","_useState9","_useState10","isInvalidPhoneNumber","setIsInvalidPhoneNumber","_useState11","_useState12","isInvalidOperatorMailaddress","setIsInvalidOperatorMailaddress","_useState13","_useState14","isInvalidACMNumber","setIsInvalidACMNumber","_useState15","_useState16","isEmptyLastName","setIsEmptyLastName","_useState17","_useState18","isEmptyFirstName","setIsEmptyFirstName","_useState19","_useState20","isEmptyLastNameKana","setIsEmptyLastNameKana","_useState21","_useState22","isEmptyFirstNameKana","setIsEmptyFirstNameKana","_useState23","_useState24","isEmptyPhoneNumber","setIsEmptyPhoneNumber","_useState25","_useState26","isTooLongPlacard","setIsTooLongPlacard","_useState27","_useState28","isTooLongRemarks","setInTooLongRemarks","reservation","isShowNotesByDifferenceOfTariffs","_props$reservation","_props$reservation$tr","tariffs","transferInfo","fares","_tariffs$x$fare","fare","Set","setGoogleMapURL","airportNoteLabel","_props$taxiCompanyCon","_props$reservation2","ui","suitcaseObj","bags","maxQuantity","golfBagObj","paymentChange","setFareAndLabelsByCarType","_props$reservation3","_transferInfo$tariffs","_transferInfo$tariffs2","labels","isLangJa","resultIsEmptyLastName","resultIsEmptyFirstName","resultIsEmptyLastNameKana","resultIsEmptyFirstNameKana","resultIsEmptyPhoneNumber","resultIsEmptyACMNumber","resultIsInvalidLastName","resultIsInvalidFirstName","resultIsInvalidLastNameKana","resultIsInvalidFirstNameKana","resultIsInvalidPhoneNumber","resultIsInvalidACMNumber","isACMNumber","resultIsTooLongPlacard","resultIsTooLongRemarks","resultIsInvalidOperatorMailaddress","amc","noSendMails","getFlightTimeLabel","isDisplayAMCInputTable","_props$reservation5","supportAMC","airportInfo","letter","supportAMCPeriod","supportPeriod","_ui$carTypes","_ui$carTypes$","_props$reservation6","defaltCarType","carTypes","_ui$paymentMethod","_ui$paymentMethod$","defaultPayMethod","paymentMethod","tariffConfirmed","tariffTypes","isShonaiAreaTaxi","isYamaguchiTaxi","isMileCampaignPhase1Taxi","isMileCampaignPhase2Taxi","Container","xs","originLatLng","originLabel","destLabel","destLatLng","showDateFormat","FormControl","variant","TextField","lastNameChange","inputProps","FormHelperTextProps","firstNameChange","onChangedLastNameKana","onChangedFirstNameKana","supportPlacardName","onChangedPlacard","fullWidth","getHelperTextPlacard","disabled","phoneNumberChange","isDisplayCarModel","RadioGroup","aria-label","getCarType","FormControlLabel","control","Radio","onClick","isDisplayNumberOfCars","bag","SetSelectArea","pay","isRideDateInMileCampaignPeriod","startDate","endDate","receiptAddressChange","remarksChange","multiline","rows","getHelperTextRemarks","isDev","onChangedOperatorMailaddress","helperText","direction","PriceLabel","NotesLabel","noteLabel","alert","endIcon","ArrowForwardIosIcon","sendOperatorMailaddress","sendMailUndeliveredProblemReproduction","passengers","adult","child","numOfCars","other","useTestAddress","_props$reservation4","temporaryDisplayName","isTabiCube","flexGrow","TabiCube","LogoJp","LogoEn","Divider","TaxiAndHireHeader","TaxiLogo","TaxiLogoJP","TaxiLogoEN","AppBar","Toolbar","AirportTransferTaxiHeader","tabiCube","ExternalLink","url","LaunchIcon","verticalAlign","ExternalTransmissionDiscipline","PrivacyPolicy","Terms","subtitle","annotation","JP","gutterBottom","EN","ServiceBody","TabIndexList","isKeyDownEnter","method","keyCode","appBar","minHeight","appBarSmall","title","flex","createMuiTheme","overrides","MuiAppBar","colorPrimary","MuiToolbar","regular","ModalHeader","titleLabel","isSmall","ThemeProvider","handleClose","IconButton","edge","CloseIcon","Transition","forwardRef","ref","Slide","assign","ServiceDialog","openDialog","setOpenDialog","handleOpen","tabIndex","SERVICE_ABOUT_DIALOG","onKeyDown","Dialog","fullScreen","onClose","TransitionComponent","scroll","List","ListItem","children","ServiceOverview","root_search","bottom","root_result","powered_by_text","TabiCubeFooter","setClass","right","TermsBodyJP","rel","TermsBodyEN","TermsBody","TermsDialog","TERMS_DIALOG","Gcs","APIPath","Ekispert","lineName","lineType","lineNumber","fromCharCode","charCodeAt","distanceNumber","escapeString","input","getEkispertAPIFactory","conditions","Extreme","ResultSet","Course","PassStation","Point","Condition","GeoStation","AddressStation","TrainInfo","LightStation","getDataVersion","getClosedStationDetail","getPlaneTimeTbile","railName","yyyymmdd","ServiceAboutBody","copyRights","setCopyRights","init","setInit","getCopyRights","Copyrights","ServiceAboutBodyJP","ServiceAboutBodyEN","TaxiServiceAboutBody","JPBody","EnBody","ServiceAboutDialog","pathName","isTaxi","PublicServiceAboutBody","PublicServiceAboutDialog","Footer","page","isPublic","AirportTransferTaxiFooter","Booking","_useTemporaryReservat","getCode","getToken","getLang","isLoadingReservation","switchLoadingReservation","hasReservation","setHasReservation","tmpReservation","setTmpReservation","getTemporaryReservation","useTemporaryReservation","targetTaxiComf","Helmet","Redirect","to","redirectOrigin","connect","appState","content","footer","notFoundHeader","notFoundMessage","NotFound","switchIsInitial","Box","anaTheme","secondary","dark","borderBottom","MuiButton","MuiInput","opacity","underline","MuiInputLabel","MuiOutlinedInput","notchedOutline","MuiPaper","elevation4","MuiSelect","icon","universalMaaS","typography","fontFamily","Path","ROOT","SEARCH","SUMMARY","RESULT","PUBLC_ROOT","PUBLC_SEARCH","PUBLC_SUMMARY","PUBLC_RESULT","isSearch","isSummary","isResult","PUBLIC_FLIGHTLIST","AswSearch","Icon","Search","replaceWordList","base","ignoreWordList","getClosedFixAutocomplete","replaced","replceInput","word","replaceInput","components","predictions","p","structured_formatting","main_text","getClosedAutocomplete","departureIcon","publicDepartureIcon","destinationIcon","publicDestinationIcon","textField","zIndex","inputText","pointNameText","whiteSpace","descriptionText","paddingLeft","overflow","textOverflow","SearchBox","candidates","setCandidates","isDisplayCandidates","switchDisplayCandidates","onChangeTextBox","SELECT_ON_MAP","getCandidates","initCandidates","currentPosition","CURRENT_POSITION","stations","getClosedStationLight","sortByType","sortedStations","stationsByType","Autocomplete","getOptionLabel","filterOptions","placeId","placeDetail","coordinates","placeJPDetail","station","parseFloat","navigator","geolocation","getCurrentPosition","coords","latitude","longitude","coordinate","placesJP","updateValue","options","autoComplete","disableOpenOnFocus","includeInputInList","freeSolo","debug","groupBy","renderOption","renderInput","InputProps","endAdornment","InputLabelProps","borderLeft","borderRight","Map","isLoaded","_useJsApiLoader","useJsApiLoader","googleMapsApiKey","loadError","useGoogleMaps","mapRef","getGeoDetail","GoogleMap","onCenterChanged","_mapRef$state$map","centerOnMap","getCenter","onDragEnd","_mapRef$state$map2","selectedPlace","selectedJPPlace","onClicked","mapContainerStyle","zoom","fullscreenControl","mapTypeControl","streetViewControl","zoomControlOptions","Marker","AirportNameMap","SelectAirport","native","airpotCode","airportLabel","SelectFlightHour","_props$value","defaultValue","h","padStart","setValue","SelectFlightMinutes","m","SelectHour","SelectMinutes","SelectDay","lastDay","daysInMonth","d","SelectMonth","months","SelectYear","years","unshift","y","ButtonToSubmit","SelectHourAndMinutesPulldown","currentValue","SelectFlight","pattern","contents","supplement","textItemName","textItemAnnotation","seaGaiaSelect","taxiUnderLogoNoticeArea","redZone","flightBefore","paddingRight","paddingTop","paddingBottom","springMileP","springMilePBold","shounaiCampaignArea","hasErrorInEmail","hasErrorInFlight","isShowTaxiFeeArea","recaptchaUrl","isShokouSakataWithCampaign","defer","displayName","md","getFlightHelperLabel","placeholder","getEmailHelperLabel","Checkbox","checked","event","handleClick","wrapper","document","widgetId","grecaptcha","render","sitekey","callback","appendChild","guide","iconInfo","logoArea","Success","AutomaticDeliveryNotice","InfoIcon","checkBoxIcon","mainText","textWithDescription","EmailCheckList","headline","CheckBoxIcon","headlineWithDescription","Unreceived","hasNotTime","LinkToTabicube","isSoratabi","modifySoratabiParams","isHiroshimaAirport","added","add1am","modifyHiroshimaParams","tabiCubeUrl","getTabicubeProductionUrl","getTabicubeStagingUrl","getTabicubeUrl","App","ConnectedRouter","Switch","Route","exact","BookingContainer","BookingTaxi","SuccessBookingTaxi","Boolean","hostname","resources","translation","ad","airdo","otherAirlines","taxi","use","initReactI18next","ns","defaultNS","fallbackLng","interpolation","escapeValue","react","wait","defaultFlightOptions","isIncrementalSearch","getAirlineCode","getFlightFactory","domDate","intDate","flightForCheckIsInternational","flightInfo","intFlight","getDatalakeFactory","datalakeData","isCacheClear","pathList","isUpperStaging","getDatalakeAllowBusListFactory","ExitToStations","AirportsAndStations","image","cursor","imageWithBorder","bannerSetMaxWidth","alignSelf","banner","topArea","prFont","textTransform","gridItemLeft","gridItemRight","typeText","priceNotice","typeArea","mileAreaStyle","mileAreaBottomStyle","linkStyle","modal","justifyContent","closeButton","customButtonArea","inline","topImage","logoImage","textBody","up","ul1st","ul2nd","listStyleType","ulNotice","reservationArea","triipleMileCampaignArea","textLine","reservationNotice","reservationButton","reservationButtonPTag","reservationTitle","noticeArea","noticePTag","noticePTagRed","noticePTagBold","reservationButtonLine","bigFont","redBold","arrowForwardIosIcon","bonusMileCampaign","NearMeServiceBody","TargetLocalityList","targetLocalityList","NearMeAirport","NearMeLogic","airport","FareTable","isTest","noLoginURL","domid","seUrl","companyid","host","mileLogingHostList","prod","utm_source","utm_medium","utm_campaign","allParams","baseURLList","HND","NRT","OKA","FUK","ITM","KIX","CTS","NGO","AOJ","TKS","KKJ","getAirportFromFlightinfo","isDisplayArea","locality","targetList","prefectureList","TargetPrefecture","hopeAirportDate","targetAirline","getMonth","getAirlineThreeLetterCode","HNDterminal","getNoLoginURL","airportParamsList","getHeaderMessage","targetKu","getFare","contained","outlined","iconSizeMedium","NearMeDialog","SagaAirportTaxi","isBeforeDeadline","isReservable","isTargetPeriod","isTargetAddress","isWithinSagaSouthArea","previousDay","modifiedHour","deadline","getReservableDeadline","southAreaPolygon","polygon","sagaSouthAreaPolygon","features","booleanPointInPolygon","adress","MUNICIPALITIES","some","textInlineBlock","summary","alink","MKTaxiClass","_class","ANAMileageClubURL","HireURL","landmarkAirportList","getHost","getANAMileageClubHost","SerenaLimit","DepthLimit","WidthLimit","HeightLimit","PassengerLimit","WeightLimit","AlphardLimit","getHirePrice","isHireCar","isBanner","MKTaxiANAMileageClubURL","mkTaxiURL","useUrl","getMkTaxiUrl","isHire","other3","landmark","departureTime","flightTime","agent","dpdate","flno","fldate","uaccess","generateMkTaxiParamsToURL","generateMkTaxiUMParamsToURL","landmarkToAirportCode","getIsOverCarLoading","umQuery","carLimit","um2","ds6","ds7","ds8","ds9","ds10","ds11","toCm","unit","depth","weight","toKg","getOther3ByBinary","ds1","ds3","um1","um3","other3Part0","other3Part1","isTargetUser","ds1List","ds4","binary1","binary2","binary3","binary4","isOverAlphard","isOverSerena","other3Part2","switchTextUmQuery","umQueryText","ds1TextList","isAllBlank","ds1Text","every","toText","val","case1","case2","text1","text2","overflowY","subContainer","list","listStyle","quesText","textDecorationColor","bar","wheelChairLogoSmall","wheelChairLogoMiddle","wheelChairLogoLarge","section","buttonSagaAirportTaxi","isDisplayJRHokkaidoNorthFreePass","arrivalDate","ShowJRHookaidoNorthFreePass","showLineList","outOfFreePassStationList","arrStationList","JRKyushuLineList","JRKyushuTrainList","JRKyushuStationList","JRKyushuReserveLinkData","isMobile","daType","rsCode","rsType","sectionParams","paramsTable","setShowReserveLinkFlag","JRKyushuStationArray","OperationLinePattern","isShowLink","beforeRouteLineIndex","sectionDepTime","routeLine","Line","routeLineIndex","isShowSection","depStationCode","arrStationCode","isAbleToReserveJR","isShowJRKyushuLink","isTommorowTrain","generateReserveParams","getInitParams","_course$Price$find","Price","kind","chargeIndex","selected","Oneway","isFareSection","paramIdx","stationList","depStation","pushStation","arrStation","pushTrain","splitDepViaArrStation","depStationName","arrStationName","viaStationName","setAll","isAbleToReserveSection","lineIndex","paramIndex","isShow","device","dev","pc","sp","trainList","outParams","dsName","asName","trYearMonth","trDay","trHour","trMinute","tsn","trn","getURL","setFullYear","setMonth","getURLByLineIndex","stationCode","stationName","train","matchTrain","tokyoMetroLineList","keikyuLineList","excludedKeikyuStationList","isShowTokyoMetroFreePass","arrDate","isAirportSiteTransit","UseTaxiCourse","routeInfo","dataType","SerializeData","charges","isLeastTransferCount","isFast","isLowPrice","sumPrice","hasAirportBus","hasByHighwaySection","isShowTokyoMetroBanner","displayIndex","isRealTime","AswInfo","isJP","route","routes","legs","distanceValue","duration_in_traffic","durationValue","durationMinutes","round","planeTime","airportLocation","targetLocation","airportTime","pointTime","end_location","start_location","taxiLine","stopStationCount","timeOnBoard","track","exhaustCO2","exhaustCO2atPassengerCar","dateToState","Destination","TimeReliability","Color","fareIndex","walkLine","targetPoint","Yomi","longi","lati","airportEntrancePoint","securityCheckpointName","securityCheckPoint","timeOther","timeWalk","transferCount","allTime","userSetTime","max","no","toISOString","getLimousineBusDataFactory","limousineBusData","setIsFast","courses","minTime","courseTime","MAX_VALUE","setIsLowPrice","minPrice","_prices$find","_prices$find2","prices","price","setSumPrice","setIsLeastTransferCount","leastTransferCount","leastTransferCountCourseIndexes","getUniversalMaasWalkURL","is_client_map","isUniversalMaaSServiceIn2023","walkPointList","reseponse","filterNullWalkPointRequest","checkWalkPointRequestParams","isCoordinate","generateUniversalMaaSWalkLinkRequestFromat","course_index","lines","line_index","_depPoint$GeoPoint","_depPoint$GeoPoint2","_arrPoint$GeoPoint","_arrPoint$GeoPoint2","isUseDepPlace","isUseArrPlace","depGeoCode","arrGeoCode","start_lat","start_lon","goal_lat","goal_lon","section_index","setUniversalMaaSWalkLinkFromWalkPointResponse","walkPointResponse","walkPoint","_courses$walkPoint$co","_courses$walkPoint$co2","targetLine","universalMaaSWalk","setUniversalMaaSWalkLinkFactory","args","saveDirection","ARRIVAL_MIN_TIME","PEACH_CODE_SHARE_ARRIVAL_MIN_TIME","SPRING_ARRIVAL_MIN_TIME","arrivalTime","airportTimeUnixTime","taxiAPIParams","datetimeAtAirport","needPolyline","setTerminal","setGate","getDirectionAndFareSamplesAPI","PlaceInfoFactory","localStorageKey","dataLimitDay","getAllPlaceData","getData","localStorage","getItem","checkLimitData","setPlaceData","allData","setItem","getPlaceData","getPlaceObject","STATION","stationDetail","COORDINATE","ADDRESS","AirportsStationCodeMap","filterTimeTable","timetables","fixAirline","flightNumberPart","isMatchAirLine","abbreviation","isMatchNumber","getPlaneTimetabile","fligt","isNotGetTimeTablePlane","depAirportStationCode","statingCode","arrAirportStationCode","_averageRail$Line","averageRail","getAverageRail","upPlaneTimeTabile","TimeTable","downPlaneTimeTabile","ReferrerParam","APP","AIRPORTSITE","HIROSHIMA_AIRPORT","FUKUSHIMA_AIRPORT","MATSUYAMA_AIRPORT","KUMAMOTO_AIRPORT","APP_DOM","APP_INT","APP_DOM_1","APP_INT_1","EkinetCompanyType","JRELineListArray","JRELineList","JRHLineListArray","JRHLineList","EkinetInfoLine","isEkinetSection","companies","mostCheapChage","isShowEkinetLink","olpList","add","JRE","JRH","setIsShowLink","acceptTrainNameList","EkinetStationList","EkinetStationObj","EkinetLineListArray","JREEkinet","linkDatas","ekinetInfoLines","setIsShowLinkSections","olp","targetExtendLineLine","olpLineList","isEkinetTargetLine","priceList","fromLineIndex","toLineIndex","Infinity","getCompanies","initJREEkinetBaseParams","stationCodeList","depTimeList","lineIdxList","currentJREEkinetBaseParams","info","isEmpty","tmpComSet","insertEkinetLinkInLine","_this$linkDatas$","firstDepSectionTimeStr","firstDepSectionTime","isAbleDisplayEkinetLink","linkData","ekinetLinkURL","generateEkinetURL","ekinetLink","stationNameList","ekinetName","depStationList","ekinetParams","from_ticketing_stop_time_id","to_ticketing_stop_time_id","boarding_time","num_adult","ADULT_NUM","num_child","CHILD_NUM","UTM_SOURCE","UTM_MEDIUM","UTM_CAMPAIGN","utm_content","UTM_CONTENT","BASE_URL","jreEkinet","setHNDIntAirportPoint","isShowViaSection","HND_3","HND_2","setHNDIntAirportTerminal","makeViaList","userVia","getTargetIdx","nowalk_indexes","runGetRouteType","put","api","flightOptionsInIncremental","call","runGetFlight","queryDate","isReferenceQuery","isAbleFlightInfo","isAbleToGetFlightInfo","boardingDate","flightOptions","isFromAirportSite","isAirportSite","reRequestDate","isDomesticFlight","hugeAirportCode","isShowAirportModal","isShowSearchNoticeModal","runGetCondition","shinkansen","limitedExpress","ticketSystemType","preferredTicketOrder","plane","condtions","runGetExtreme","searchDate","airportPoint","isNotSetTerminal","airportPointAndTerminal","airportTerminal","CTS_DOM","CTS_INT","HND_1","NRT_3","FUK_DOM_NORTH","FUK_DOM_SOUTH","FUK_DOM","FUK_INT","OKA_DOM","OKA_INT","getAirportPointAndTerminal","isUseNRTThirdTerminal","setPointCode","Wgs","selectPoints","bus","connection","highway","detail","searchPoint","acumlate","prototype","apply","pointData","getWalkTime","Distance","generateLandmark","answerCount","interruptTransferStationCodes","viaList","addStopStation","interruptTransferStationCodeList","filterStationList","filterCourses","target_idx","serializeData","sectionIndex","isShowViaTerminal","viaStation","stationLight","viaTerminalName","viaTerminalCode","filterViaStations","taxiDirectionAndFare","texiDirection","directionsApiResponse","hasTaxiCourse","_taxiDirectionAndFare","existMatchedCompany","fareSummaries","filterCourseNum","l","course1","course2","sortByAirportBus","getArrivalTimeToAirport","taxiCourse","setFlags","datalakeAllowBusListAPI","throwDatalakeBusData","AllowBusLineCode","datalakeBusList","c_idx","InsideInformation","setLineCode","navigatorTransportation","input_date","input_line_code","input_station_code","input_time","extractionDatalakeBusData","datalakeApi","busData","koboBusLink","depStaCode","arrStaCode","wayflg","gpcd","rocd","dtym","dtdd","bncd","bscd","onelineQuery","stationTable","bfcd","isDevEnv","btcd","genarateKoboLink","setKoboLink","universalMaasAPI","setUniversalMaaSWalkLinkArgs","throwTokyoLimousineBusData","limousineBusList","isHighWayAirportBus","_depPoint$Station","_arrPoint$Station2","depCode","arrCode","airportBusStopTable","narita","haneda","airpotBusStopList","isTokyoLimousineBus","extractionTokyoLimousineBusData","extractionTokyoLimousineBusDataCourses","limousineBusDataAPI","tokyoLimousineBusLink","isShowTokyoLimousineBus","isError","setTokyoLimousineBusLink","iine_idx","_line$Type","_line$Type2","_arrPoint$Station","isShowOsakaLimousineBus","busName","setOsakaLimousineBusFlag","showSectionLink","_routeLine$InsideInfo","stopStationList","Stop","isShowJRHokkaidoFreePass","sectionPointList","endIdx","setShowJRHokkaidoNorthFreePassFlag","sections","tokyoSubwayAndKeikyuLineList","excludedKeikyuStationArray","courseLineList","lineList","hasOnlyTokyoSubwaySeciton","hasKeikyuSection","hasOnlyKeikyuOrTokyoSubway","hasTargetKeikyuSection","_routeLine$InsideInfo2","stopList","stop","isNotIncludeTicketexcludedKeikyuArea","hasTokyoSubwaySection","hasKeikyuAndSubwayTicketSection","setShowTokyoMetroFreePass","isMobileOnly","insertJREEkinetURLInCourse","informations","Information","runGetTrainInfo","runGetTaxiCompanyConfigurations","runDisplayResult","cookieStatus","queryString","universalMaasQuery","reservedFlight","makeResultQueryString","expires","hasDisplayedSearch","sendAccessLogAfterSeach","watchGetRouteType","takeLatest","watchGetMembers","watchGetFlightSuccess","watchGetConditionSuccess","watchGetCourses","watchSetFlight","store","preloadedState","composeEnhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","createRootReducer","applyMiddleware","routerMiddleware","configureStore","ReactDOM","Provider","CookiesProvider","getElementById","serviceWorker","ready","registration","unregister","run","all","fork"],"mappings":"+FAAAA,EAAOC,QAAU,IAA0B,yC,8kTCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oLCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,qD,kBCA3CD,EAAOC,QAAU,szH,oBCAjBD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,kBCA3CD,EAAOC,QAAU,svO,oBCAjBD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,sD,oBCA3CD,EAAOC,QAAU,IAA0B,sD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,6C,kBCA3CD,EAAOC,QAAU,khY,oBCAjBD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,yC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,oC,kBCA3CD,EAAOC,QAAU,0qB,66+DCAjBD,EAAOC,QAAU,IAA0B,qD,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,sD,oBCA3CD,EAAOC,QAAU,IAA0B,iD,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,60JCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,wC,g7UCA3CD,EAAO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MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAE9O,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAzBrOF,GA4BGG,eAAiB,CACtB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAIWH,UC3CR,MAAMI,GAA6B,CACxC,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGWC,GAA+C,CAC1D30E,GAAI,CACF,eACA,qBACA,qBACA,6CACA,2BACA,2BACA,eACA,uCACA,2BACA,2BACA,2BACA,2BACA,uCACA,iBACA,qBACA,qBACA,qBACA,qBACA,qBACA,8CACA,qBACA,uCACA,iCACA,iCACA,2BACA,6CACA,iCACA,2BACA,yDACA,2BACA,6CACA,2BACA,mDACA,mDACA,6CACA,eACA,yDACA,2BACA,2BACA,qBACA,2BACA,mDACA,mDACA,2BACA,+DACA,qEACA,eACA,2BACA,qBACA,2BACA,6CACA,qBACA,mDACA,uCACA,2BACA,eACA,+DACA,qEACA,eACA,iBACA,yDACA,2BACA,iCACA,6BACA,iCACA,mDACA,eACA,2EACA,6CACA,6CACA,mDACA,6CACA,+DACA,uCACA,6CACA,yDACA,mDACA,2BACA,uCACA,+DACA,uCACA,4BACA,6CACA,mDACA,eACA,+DACA,+DACA,6CACA,mDACA,yDACA,2BACA,6CACA,6CACA,2BACA,6CACA,uCACA,uCACA,yDACA,uCACA,6CACA,gBAEFC,GAAI,CACF,SACA,SACA,SACA,eACA,WACA,QACA,OACA,iBACA,WACA,YACA,QACA,OACA,UACA,eACA,SACA,SACA,SACA,SACA,SACA,iBACA,UACA,qBACA,iBACA,UACA,UACA,wBACA,UACA,UACA,oBACA,WACA,iBACA,qBACA,wBACA,kBACA,eACA,SACA,iBACA,YACA,UACA,SACA,WACA,iBACA,cACA,YACA,kBACA,iBACA,QACA,WACA,aACA,WACA,cACA,SACA,kBACA,YACA,UACA,QACA,mBACA,wBACA,OACA,eACA,uBACA,WACA,iBACA,iBACA,YACA,iBACA,QACA,oBACA,cACA,gBACA,qBACA,eACA,kBACA,kBACA,kBACA,oBACA,iBACA,kBACA,oBACA,uBACA,kBACA,iBACA,eACA,iBACA,OACA,gBACA,kBACA,kBACA,uBACA,8BACA,YACA,sBACA,iBACA,WACA,eACA,WACA,gBACA,kBACA,UACA,kBACA,OACA,QAIS20E,GAAkE,CAC7E,GAAM,CACJ,MAAS,eACT,MAAS,iCACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,6CACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,iCACT,MAAS,2BACT,MAAS,uCACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,6CACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,iCACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,iCACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,6CACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,uCACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,6CACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,6CACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,6CACT,MAAS,eACT,MAAS,qBACT,MAAS,iCACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,iCACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,6CACT,MAAS,2BACT,MAAS,qBACT,MAAS,6CACT,MAAS,6CACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,SACT,MAAS,iCACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,SACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,iCACT,MAAS,2BACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,6CACT,MAAS,2BACT,MAAS,uCACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,qBACT,MAAS,iCACT,MAAS,iCACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,6CACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,6CACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,mDACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,2BACT,MAAS,iCACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,2BACT,MAAS,eACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,mDACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,2BACT,MAAS,iCACT,MAAS,2BACT,MAAS,2BACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,mDACT,MAAS,qBACT,MAAS,qBACT,MAAS,mDACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,KAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,iCACT,MAAS,eACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,qBACT,MAAS,2BACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,eACT,MAAS,qBACT,MAAS,6CACT,MAAS,2BACT,MAAS,eACT,MAAS,qBACT,MAAS,mDACT,MAAS,uCACT,MAAS,uCACT,MAAS,eACT,MAAS,2BACT,MAAS,iCACT,MAAS,qBACT,MAAS,2BACT,MAAS,qBACT,MAAS,qBACT,MAAS,qBACT,MAAS,eACT,MAAS,eACT,MAAS,uCACT,MAAS,qBACT,MAAS,6CACT,MAAS,qBACT,MAAS,eACT,MAAS,uCACT,MAAS,2BACT,MAAS,iCACT,MAAS,eACT,MAAS,qBACT,MAAS,kCAEX,GAAM,CACJ,MAAS,QACT,MAAS,eACT,MAAS,QACT,MAAS,SACT,MAAS,MACT,MAAS,SACT,MAAS,UACT,MAAS,SACT,MAAS,gBACT,MAAS,UACT,MAAS,QACT,MAAS,WACT,MAAS,MACT,MAAS,iBACT,MAAS,QACT,MAAS,WACT,MAAS,SACT,MAAS,QACT,MAAS,QACT,MAAS,YACT,MAAS,sBACT,MAAS,OACT,MAAS,WACT,MAAS,SACT,MAAS,eACT,MAAS,SACT,MAAS,UACT,MAAS,YACT,MAAS,SACT,MAAS,cACT,MAAS,WACT,MAAS,SACT,MAAS,QACT,MAAS,UACT,MAAS,gBACT,MAAS,kBACT,MAAS,gBACT,MAAS,kBACT,MAAS,SACT,MAAS,SACT,MAAS,SACT,MAAS,SACT,MAAS,WACT,MAAS,WACT,MAAS,kBACT,MAAS,OACT,MAAS,SACT,MAAS,SACT,MAAS,UACT,MAAS,YACT,MAAS,WACT,MAAS,SACT,MAAS,WACT,MAAS,WACT,MAAS,OACT,MAAS,YACT,MAAS,SACT,MAAS,UACT,MAAS,cACT,MAAS,aACT,MAAS,cACT,MAAS,cACT,MAAS,cACT,MAAS,UACT,MAAS,WACT,MAAS,OACT,MAAS,MACT,MAAS,WACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,MAAS,QACT,MAAS,YACT,MAAS,eACT,MAAS,YACT,MAAS,cACT,MAAS,WACT,MAAS,SACT,MAAS,YACT,MAAS,gBACT,MAAS,iBACT,MAAS,iBACT,MAAS,iBACT,MAAS,gBACT,MAAS,kBACT,MAAS,kBACT,MAAS,eACT,MAAS,iBACT,MAAS,gBACT,MAAS,iBACT,MAAS,mBACT,MAAS,iBACT,MAAS,kBACT,MAAS,UACT,MAAS,SACT,MAAS,QACT,MAAS,YACT,MAAS,OACT,MAAS,SACT,MAAS,eACT,MAAS,MACT,MAAS,SACT,MAAS,OACT,MAAS,WACT,MAAS,eACT,MAAS,cACT,MAAS,YACT,MAAS,SACT,MAAS,YACT,MAAS,SACT,MAAS,WACT,MAAS,QACT,MAAS,SACT,MAAS,YACT,MAAS,iBACT,MAAS,mBACT,MAAS,UACT,MAAS,SACT,MAAS,YACT,MAAS,WACT,MAAS,WACT,MAAS,cACT,MAAS,QACT,MAAS,mBACT,MAAS,iBACT,MAAS,aACT,MAAS,eACT,MAAS,YACT,MAAS,eACT,MAAS,MACT,MAAS,WACT,MAAS,SACT,MAAS,WACT,MAAS,gBACT,MAAS,gBACT,MAAS,gBACT,MAAS,iBACT,MAAS,mBACT,MAAS,OACT,MAAS,SACT,MAAS,SACT,MAAS,YACT,MAAS,OACT,MAAS,YACT,MAAS,UACT,MAAS,SACT,MAAS,YACT,MAAS,SACT,MAAS,SACT,MAAS,QACT,MAAS,QACT,MAAS,QACT,MAAS,QACT,MAAS,SACT,MAAS,OACT,MAAS,UACT,MAAS,eACT,MAAS,MACT,MAAS,UACT,MAAS,eACT,MAAS,aACT,MAAS,aACT,MAAS,UACT,MAAS,UACT,MAAS,UACT,MAAS,WACT,MAAS,eACT,MAAS,SACT,MAAS,YACT,MAAS,WACT,MAAS,OACT,MAAS,OACT,MAAS,YACT,MAAS,OACT,MAAS,cACT,MAAS,UACT,MAAS,OACT,MAAS,OACT,MAAS,YACT,MAAS,WACT,MAAS,cACT,MAAS,YACT,MAAS,aACT,MAAS,gBACT,MAAS,kBACT,MAAS,WACT,MAAS,kBACT,MAAS,eACT,MAAS,cACT,MAAS,aACT,MAAS,aACT,MAAS,gBACT,MAAS,aACT,MAAS,kBACT,MAAS,eACT,MAAS,gBACT,MAAS,aACT,MAAS,eACT,MAAS,kBACT,MAAS,aACT,MAAS,aACT,MAAS,WACT,MAAS,aACT,MAAS,WACT,MAAS,mBACT,MAAS,SACT,MAAS,UACT,MAAS,WACT,MAAS,WACT,MAAS,cACT,MAAS,UACT,MAAS,KACT,MAAS,QACT,MAAS,QACT,MAAS,WACT,MAAS,WACT,MAAS,UACT,MAAS,mBACT,MAAS,UACT,MAAS,SACT,MAAS,OACT,MAAS,SACT,MAAS,YACT,MAAS,QACT,MAAS,UACT,MAAS,WACT,MAAS,WACT,MAAS,SACT,MAAS,gBACT,MAAS,gBACT,MAAS,QACT,MAAS,eACT,MAAS,YACT,MAAS,MACT,MAAS,kBACT,MAAS,cACT,MAAS,aACT,MAAS,eACT,MAAS,aACT,MAAS,YACT,MAAS,YACT,MAAS,WACT,MAAS,MACT,MAAS,QACT,MAAS,UACT,MAAS,MACT,MAAS,iBACT,MAAS,QACT,MAAS,WACT,MAAS,aACT,MAAS,eACT,MAAS,aACT,MAAS,OACT,MAAS,aACT,MAAS,MACT,MAAS,gBACT,MAAS,WACT,MAAS,QACT,MAAS,QACT,MAAS,QACT,MAAS,SACT,MAAS,gBACT,MAAS,YACT,MAAS,WACT,MAAS,WACT,MAAS,kBACT,MAAS,SACT,MAAS,WACT,MAAS,UACT,MAAS,sBACT,MAAS,gBACT,MAAS,WACT,MAAS,sBACT,MAAS,iBACT,MAAS,WACT,MAAS,SACT,MAAS,WACT,MAAS,eACT,MAAS,SACT,MAAS,aACT,MAAS,SACT,MAAS,MACT,MAAS,kBACT,MAAS,SACT,MAAS,SACT,MAAS,YACT,MAAS,YACT,MAAS,kBACT,MAAS,OACT,MAAS,UACT,MAAS,WACT,MAAS,aACT,MAAS,WACT,MAAS,gBACT,MAAS,YACT,MAAS,SACT,MAAS,YACT,MAAS,SACT,MAAS,aACT,MAAS,cACT,MAAS,kBACT,MAAS,SACT,MAAS,cACT,MAAS,SACT,MAAS,aACT,MAAS,SACT,MAAS,SACT,MAAS,QACT,MAAS,SACT,MAAS,UACT,MAAS,SACT,MAAS,SACT,MAAS,QACT,MAAS,UACT,MAAS,MACT,MAAS,cACT,MAAS,MACT,MAAS,OACT,MAAS,MACT,MAAS,OACT,MAAS,SACT,MAAS,QACT,MAAS,UACT,MAAS,QACT,MAAS,UACT,MAAS,OACT,MAAS,aACT,MAAS,UACT,MAAS,WACT,MAAS,QACT,MAAS,cACT,MAAS,UACT,MAAS,WACT,MAAS,SACT,MAAS,QACT,MAAS,aACT,MAAS,SACT,MAAS,SACT,MAAS,UACT,MAAS,WACT,MAAS,WACT,MAAS,QACT,MAAS,cACT,MAAS,SACT,MAAS,SACT,MAAS,QACT,MAAS,WACT,MAAS,WACT,MAAS,UACT,MAAS,UACT,MAAS,YACT,MAAS,UACT,MAAS,SACT,MAAS,UACT,MAAS,QACT,MAAS,UACT,MAAS,aACT,MAAS,cACT,MAAS,aACT,MAAS,eACT,MAAS,OACT,MAAS,kBACT,MAAS,gBACT,MAAS,SACT,MAAS,UACT,MAAS,OACT,MAAS,OACT,MAAS,SACT,MAAS,gBACT,MAAS,eACT,MAAS,YACT,MAAS,iBACT,MAAS,eACT,MAAS,eACT,MAAS,gBACT,MAAS,iBACT,MAAS,iBACT,MAAS,gBACT,MAAS,aACT,MAAS,cACT,MAAS,eACT,MAAS,aACT,MAAS,WACT,MAAS,cACT,MAAS,cACT,MAAS,cACT,MAAS,cACT,MAAS,WACT,MAAS,SACT,MAAS,QACT,MAAS,SACT,MAAS,UACT,MAAS,UACT,MAAS,aACT,MAAS,WACT,MAAS,UACT,MAAS,WACT,MAAS,OACT,MAAS,UACT,MAAS,WACT,MAAS,YACT,MAAS,QACT,MAAS,aACT,MAAS,aACT,MAAS,SACT,MAAS,MACT,MAAS,WACT,MAAS,WACT,MAAS,OACT,MAAS,aACT,MAAS,iBACT,MAAS,WACT,MAAS,SACT,MAAS,eACT,MAAS,SACT,MAAS,WACT,MAAS,UACT,MAAS,YACT,MAAS,eACT,MAAS,sBACT,MAAS,WACT,MAAS,UACT,MAAS,UACT,MAAS,kBACT,MAAS,WACT,MAAS,WACT,MAAS,cACT,MAAS,cACT,MAAS,iBACT,MAAS,QACT,MAAS,SACT,MAAS,QACT,MAAS,kBACT,MAAS,mBACT,MAAS,WACT,MAAS,UACT,MAAS,YACT,MAAS,eACT,MAAS,iBACT,MAAS,kBACT,MAAS,WACT,MAAS,eACT,MAAS,iBACT,MAAS,kBACT,MAAS,cACT,MAAS,cACT,MAAS,mBACT,MAAS,gBACT,MAAS,WACT,MAAS,qBACT,MAAS,sBACT,MAAS,SACT,MAAS,aACT,MAAS,aACT,MAAS,iBACT,MAAS,eACT,MAAS,kBACT,MAAS,SACT,MAAS,UACT,MAAS,aACT,MAAS,WACT,MAAS,kBACT,MAAS,gBACT,MAAS,YACT,MAAS,cACT,MAAS,SACT,MAAS,OACT,MAAS,WACT,MAAS,QACT,MAAS,QACT,MAAS,SACT,MAAS,UACT,MAAS,mBACT,MAAS,SACT,MAAS,mBACT,MAAS,KACT,MAAS,WACT,MAAS,gBACT,MAAS,eACT,MAAS,iBACT,MAAS,mBACT,MAAS,SACT,MAAS,YACT,MAAS,SACT,MAAS,aACT,MAAS,YACT,MAAS,QACT,MAAS,gBACT,MAAS,WACT,MAAS,kBACT,MAAS,kBACT,MAAS,QACT,MAAS,YACT,MAAS,WACT,MAAS,SACT,MAAS,WACT,MAAS,oBACT,MAAS,aACT,MAAS,QACT,MAAS,QACT,MAAS,WACT,MAAS,mBACT,MAAS,mBACT,MAAS,oBACT,MAAS,iBACT,MAAS,oBACT,MAAS,YACT,MAAS,WACT,MAAS,uBACT,MAAS,UACT,MAAS,YACT,MAAS,oBACT,MAAS,WACT,MAAS,WACT,MAAS,QACT,MAAS,YACT,MAAS,cACT,KAAS,UACT,MAAS,aACT,MAAS,WACT,MAAS,cACT,MAAS,iBACT,MAAS,SACT,MAAS,SACT,MAAS,YACT,MAAS,iBACT,MAAS,iBACT,MAAS,aACT,MAAS,WACT,MAAS,YACT,MAAS,aAC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","file":"static/js/main.4c22f474.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/mktaxi_logo.b10d8b75.png\";","module.exports = __webpack_public_path__ + \"static/media/iyotetsutaxi-logo.9434a90a.png\";","module.exports = __webpack_public_path__ + \"static/media/king-taxi-logo.b86c4243.png\";","module.exports = __webpack_public_path__ + \"static/media/kisakata-logo.f7b472a5.png\";","module.exports = __webpack_public_path__ + \"static/media/eastern_airport_logo.3c357fc6.png\";","module.exports = __webpack_public_path__ + \"static/media/eastern_airport_logo_en.903065e9.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/nahaHireLogo.9ae7f4a2.png\";","module.exports = __webpack_public_path__ + \"static/media/miyakou-taxi-logo.bfa064a4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hinomaruHireLogo.01d99ae6.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/gotaku-logo.190cdac5.png\";","module.exports = __webpack_public_path__ + \"static/media/asahikawa-chuuo-logo.a7a9c44a.png\";","module.exports = __webpack_public_path__ + \"static/media/hakodate-taxi-logo.1c28c74a.png\";","module.exports = __webpack_public_path__ + \"static/media/daiwa-taxi-logo.ebb32668.jpg\";","module.exports = __webpack_public_path__ + \"static/media/kita-fukushima-taxi-logo.8da7af00.jpg\";","module.exports = __webpack_public_path__ + \"static/media/fukushima-chuo-taxi-logo.7ec37ad1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/iwaki-taxi-logo.9b9b2264.jpg\";","module.exports = __webpack_public_path__ + \"static/media/uchigo-taxi-logo.d777c4b5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/tajima-taxi-logo.10036a53.png\";","module.exports = __webpack_public_path__ + \"static/media/kinugawa-taxi-logo.d701721c.png\";","module.exports = __webpack_public_path__ + \"static/media/hokto-taxi-logo.8fb14335.png\";","module.exports = __webpack_public_path__ + \"static/media/yoko-taxi-logo.bb8c012d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/toden-taxi-logo.baee71ca.png\";","module.exports = __webpack_public_path__ + \"static/media/ishikawa-taxi-logo.de65037f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/ube-kounai-taxi-logo.bf7bebff.png\";","module.exports = __webpack_public_path__ + \"static/media/tsuzu-taxi-logo.b73f58e2.png\";","module.exports = __webpack_public_path__ + \"static/media/sakata-no1taxi-logo.71b2eacf.png\";","module.exports = __webpack_public_path__ + \"static/media/shoko-hire-logo.5ffeb8f1.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/tabicube_ja.624f3f2d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/tabicube_en.8f601f59.jpg\";","module.exports = __webpack_public_path__ + \"static/media/logo.d3664bd6.png\";","module.exports = __webpack_public_path__ + \"static/media/logoEN.04ef5fdc.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAARCAYAAADZsVyDAAAABGdBTUEAALGPC/xhBQAAAaNJREFUOBHNUz1LA0EQnbk7IearEZSIYGWjRSKChanUSjv/gFXENIKlsQhiEE1lIWLQVLb+htgYFQQ1KfwPQUFR86HJ3Y27513uWO6OQBBcWHbuzczbmbdziPEUQR+LqkV0S5fcwH+NubbhVrGSSCc10DJANGP4Ee9lkPfVSuHaLR59NP6MRgbG38snb1IitU2EOQASpEMdEbN65XRPJBcCbTdr5ZiT8kpNUhUBtwYVaZRvbrOLVCI9p0yvL9qZv5bi9arWqBjts0oZUVavnuWbNkNeiq8BAR1our7J4JLtAvCsuBtkahpQ8LyLmYYDS4o+xUvjSDAy9HF7+ComuH/Tt4h7VtxqNyaMYPb6/PxSaVVMdmAV0eepcceM5CPFdF5iWu5yTa32OSnHeJgkYVETmHuaY+9xM9kQn0IYmK8/Hr1Y/LJl+J1Ue7hSYrMlQhphcVG224BQllDKEMIk+2mmOqAth2PJi3btzhicnir2uzQ8lx5uNLVLTg6Oyj0fz4/M6avfFJ5DQXmBk3Lypt7a4P6+iTmJRc7az2VXxnY49mfrB6ywnxFe0O1IAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/bn_mk_taxi_2209_640_100.91020aa9.png\";","module.exports = __webpack_public_path__ + \"static/media/bn_mk_hire_640_100.d1288146.jpg\";","module.exports = __webpack_public_path__ + \"static/media/bn_mk_kyoto_2209_640_100.8cf6d754.png\";","module.exports = __webpack_public_path__ + \"static/media/mktaxi_service_hire.d375beaa.jpg\";","module.exports = __webpack_public_path__ + \"static/media/mktaxi_service.b1fd7fd5.jpg\";","module.exports = __webpack_public_path__ + \"static/media/BarrierFreeImage.00a34e3e.png\";","module.exports = __webpack_public_path__ + \"static/media/service4.2c7d0e0d.png\";","module.exports = __webpack_public_path__ + \"static/media/logo_black.6428fbd1.png\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/mktaxi_kyoto_service.886df85e.jpg\";","import { AxiosError } from 'axios';\nimport { Extreme } from '../services/ekispert/models';\nimport FlightInfo from '../services/ana/models/flightInfo';\nimport { Query } from '../states/query';\nimport Place, { PlaceLog } from '../services/google/Place';\nimport { PlaceDirections } from '../services/google/PlaceDirections';\nimport { GeoLocation } from '../utils/geoLocation';\nimport { ModalStatusList } from '../states/conditionState';\nimport { OkinawaBusStop } from '../states/conditionState';\nimport { TaxiFareSummary } from '../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { AirlineList } from '../utils/Airlines';\nimport History from '../components/search/CandidatesModal/Histories/history';\n\n// 探索æ¡ä»¶ã«é–¢ã‚るアクション。\nexport enum ConditionActionType {\n UPDATE_POINT = 'UPDATE_POINT',\n UPDATE_POINT_CODE = 'UPDATE_POINT_CODE',\n UPDATE_POINT_GEOCODE = 'UPDATE_POINT_GEOCODE',\n UPDATE_VIA = 'UPDATE_VIA',\n UPDATE_VIA_CODE = 'UPDATE_VIA_CODE',\n SWITCH_HAS_VIA = 'SWITCH_HAS_VIA',\n UPDATE_POINT_TYPE = 'UPDATE_POINT_TYPE',\n UPDATE_DATE = 'UPDATE_DATE',\n UPDATE_FLIGHT = 'UPDATE_FLIGHT',\n UPDATE_FLIGHT_NUMBER = 'UPDATE_FLIGHT_NUMBER',\n UPDATE_FLIGHT_STATUS = 'UPDATE_FLIGHT_STATUS',\n UPDATE_FLIGHT_STATUS_FOR_SEARCH_AD = 'UPDATE_FLIGHT_STATUS_FOR_SEARCH_AD',\n UPDATE_FLIGHT_STATUS_USER_SET_DATE_FOR_SEARCH_AD = 'UPDATE_FLIGHT_STATUS_USER_SET_DATE_FOR_SEARCH_AD',\n UPDATE_ARRIVAL_TIME_TO_AIRPORT = 'UPDATE_ARRIVAL_TIME_TO_AIRPORT',\n UPDATE_CITY_BANE = 'UPDATE_CITY_BANE',\n UPDATE_QUERY = 'UPDATE_QUERY',\n UPDATE_COURSE = 'UPDATE_COURSE',\n UPDATE_SEARCHED_AT = 'UPDATE_SEARCHED_AT',\n UPDATE_TRAININFO = 'UPDATE_TRAININFO',\n UPDATE_PLACE = 'UPDATE_PLACE',\n UPDATE_LAST_SELECTED_PLACE = 'UPDATE_LAST_SELECTED_PLACE',\n UPDATE_COURSE_INDEX = 'UPDATE_COURSE_INDEX',\n UPDATE_DIRECTIONS = 'UPDATE_DIRECTIONS',\n UPDATE_OKIBAWABUS_BUSSTOPLIST = 'UPDATE_OKIBAWABUS_BUSSTOPLIST',\n UPDATE_TAXI_FARE_SUMMARIES = 'UPDATE_TAXI_FARE_SUMMARIES',\n UPDATE_TARGET_AIRLINE = 'UPDATE_TARGET_AIRLINE',\n UPDATE_SEARCH_HISTORIES = 'UPDATE_SEARCH_HISTORIES',\n SWITCH_CONSENT_AIRPORT_ARRIVAL_TIME = 'SWITCH_CONSENT_AIRPORT_ARRIVAL_TIME',\n SWITCH_AIRPORT_MODAL_SHOW = 'SWITCH_AIRPORT_MODAL_SHOW',\n SWITCH_IS_DEPARTURE_GUIDE = 'SWITCH_IS_DEPARTURE_GUIDE',\n SWITCH_SHINKANSEN = 'SWITCH_SHINKANSEN',\n SWITCH_LIMITED_EXPRESS = 'SWITCH_LIMITED_EXPRESS',\n SWITCH_IC = 'SWITCH_IC',\n SWITCH_DOMESTIC = 'SWITCH_DOMESTIC',\n SWITCH_PRIORITY_AIRPORT_BUS = 'SWITCH_PRIORITY_AIRPORT_BUS',\n SWITCH_PRIORITY_CAR = 'SWITCH_PRIORITY_CAR',\n SWITCH_PRIORITY_CAR_WITH_BARRIER_FREE = 'SWITCH_PRIORITY_CAR_WITH_BARRIER_FREE',\n SWITCH_IS_NO_SET_TERMINAL_HND = 'SWITCH_IS_NO_SET_TERMINAL_HND',\n SWITCH_IS_INITIAL = 'SWITCH_IS_INITIAL',\n SWITCH_IS_AVALABLE = 'SWITCH_IS_AVALABLE',\n SWITCH_LIMOUSINE_BUS_MODAL_SHOW = 'SWITCH_LIMOUSINE_BUS_MODAL_SHOW',\n SWITCH_BUS_TICKET_OITA_MODAL_SHOW = 'SWITCH_BUS_TICKET_OITA_MODAL_SHOW',\n UPDATE_MODAL_STATE = 'UPDATE_MODAL_STATE',\n SWITCH_IS_SHOS_OKINAWA_BUS_LINK = 'SWITCH_IS_SHOS_OKINAWA_BUS_LINK',\n SWITCH_IS_PEACH_CODE_SHARE = 'SWITCH_IS_PEACH_CODE_SHARE',\n ANA_GET_ROUTE_TYPE_START = 'ANA_GET_ROUTE_TYPE_START',\n ANA_GET_ROUTE_TYPE_SUCCEED = 'ANA_GET_ROUTE_TYPE_SUCCEED',\n ANA_GET_ROUTE_TYPE_FAIL = 'ANA_GET_ROUTE_TYPE_FAIL',\n ANA_GET_FLIGHT_START = 'ANA_GET_FLIGHT_START',\n ANA_GET_FLIGHT_SUCCEED = 'ANA_GET_FLIGHT_SUCCEED',\n ANA_GET_FLIGHT_FAIL = 'ANA_GET_FLIGHT_FAIL',\n EKISPERT_GET_EXTREME_START = 'EKISPERT_GET_EXTREME_START',\n EKISPERT_GET_EXTREME_SUCCEED = 'EKISPERT_GET_EXTREME_SUCCEED',\n EKISPERT_GET_EXTREME_FAIL = 'EKISPERT_GET_EXTREME_FAIL',\n EKISPERT_GET_CONDITION_START = 'EKISPERT_GET_CONDITION_START',\n EKISPERT_GET_CONDITION_SUCCEED = 'EKISPERT_GET_CONDITION_SUCCEED',\n EKISPERT_GET_CONDITION_FAIL = 'EKISPERT_GET_CONDITION_FAIL',\n SWITCH_IS_SHOWUMMODAL = 'SWITCH_IS_SHOWUMMODAL'\n}\n\nexport interface ConditionAction {\n payload: any;\n type: ConditionActionType;\n}\n\nexport const updatePoint = (v: string) => ({\n payload: v,\n type: 'UPDATE_POINT',\n});\n\nexport const updatePointCode = (v: string) => ({\n payload: v,\n type: 'UPDATE_POINT_CODE',\n});\n\nexport const updatePointGeoCode = (v: GeoLocation) => ({\n payload: v,\n type: 'UPDATE_POINT_GEOCODE',\n});\n\nexport const updateVia = (v: string) => ({\n payload: v,\n type: 'UPDATE_VIA',\n});\n\nexport const updateViaCode = (v: string) => ({\n payload: v,\n type: 'UPDATE_VIA_CODE',\n});\n\nexport const switchHasVia = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_HAS_VIA',\n});\n\nexport const updatePointType = (v: string) => ({\n payload: v,\n type: 'UPDATE_POINT_TYPE',\n})\n\nexport const updateDate = (v: Date) => ({\n payload: v,\n type: 'UPDATE_DATE',\n});\n\nexport const updateFlight = (v: string) => ({\n payload: v,\n type: 'UPDATE_FLIGHT',\n})\n\nexport const updateFlightNumber = (v: string) => ({\n payload: v,\n type: 'UPDATE_FLIGHT_NUMBER',\n})\n\nexport const updateFlightStatus = (v: FlightInfo) => ({\n payload: v,\n type: ConditionActionType.UPDATE_FLIGHT_STATUS,\n})\n\nexport const updateflightStatusForSeachAd = (v: FlightInfo) => ({\n payload: v,\n type: ConditionActionType.UPDATE_FLIGHT_STATUS_FOR_SEARCH_AD,\n})\n\n\nexport const updateflightStatusUserSetDateForSearchAd = (v: FlightInfo) => ({\n payload: v,\n type: ConditionActionType.UPDATE_FLIGHT_STATUS_USER_SET_DATE_FOR_SEARCH_AD,\n})\n\nexport const updateArrivalTimeToAirport = (v: number) => ({\n payload: v,\n type: ConditionActionType.UPDATE_ARRIVAL_TIME_TO_AIRPORT,\n})\n\nexport const updateCityName = (v: string) => ({\n payload: v,\n type: ConditionActionType.UPDATE_CITY_BANE,\n})\n\nexport const updateQuery = (v: Query) => ({\n payload: v,\n type: ConditionActionType.UPDATE_QUERY,\n});\n\nexport const updatePlace = (v: Place | null) => ({\n payload: v,\n type: ConditionActionType.UPDATE_PLACE,\n});\n\nexport const updateLastSelectedPlace = (v: Place) => ({\n payload: v,\n type: ConditionActionType.UPDATE_LAST_SELECTED_PLACE,\n});\n\nexport const updateOkinawaBusStopList = (v: OkinawaBusStop[]) => ({\n payload: v,\n type: ConditionActionType.UPDATE_OKIBAWABUS_BUSSTOPLIST,\n})\n\nexport const updateCourseIndex = (v: number) => ({\n payload: v,\n type: ConditionActionType.UPDATE_COURSE_INDEX,\n})\n\nexport const updateDirections = (v: PlaceDirections | null) => ({\n payload: v,\n type: ConditionActionType.UPDATE_DIRECTIONS,\n})\n\nexport const updateTaxiFareSummaries = (v: TaxiFareSummary[]) => ({\n payload: v,\n type: ConditionActionType.UPDATE_TAXI_FARE_SUMMARIES,\n})\n\nexport const switchIsDepartureGuide = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_IS_DEPARTURE_GUIDE',\n})\n\nexport const swtichShinkansen = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_SHINKANSEN',\n})\n\nexport const switchLimitedExpress = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_LIMITED_EXPRESS',\n})\n\nexport const switchIc = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_IC,\n})\n\nexport const switchPriorityAirportBus = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_PRIORITY_AIRPORT_BUS,\n})\n\nexport const switchPriorityCar = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_PRIORITY_CAR,\n})\n\nexport const switchPriorityCarWithBarrierFree = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_PRIORITY_CAR_WITH_BARRIER_FREE,\n})\n\nexport const switchDomestic = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_DOMESTIC',\n})\n\nexport const switchIsNoSetTerminalHND = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_IS_NO_SET_TERMINAL_HND',\n})\n\nexport const switchIsAvalable = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_IS_AVALABLE,\n})\n\nexport const switchIsShowOkinawaBusLink = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_IS_SHOS_OKINAWA_BUS_LINK,\n})\n\nexport const updateTargetAirline = (v: AirlineList) => ({\n payload: v,\n type: ConditionActionType.UPDATE_TARGET_AIRLINE,\n})\n\nexport const updateCourse = (v: object) => ({\n payload: v,\n type: 'UPDATE_COURSE',\n})\n\nexport const updateSearchedAt = (v: Date) => ({\n payload: v,\n type: ConditionActionType.UPDATE_SEARCHED_AT,\n})\n\nexport const updateSearchHistories = (v: History[]) => ({\n payload: v,\n type: ConditionActionType.UPDATE_SEARCH_HISTORIES,\n})\n\nexport const switchConsentAirportArrivalTime = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_CONSENT_AIRPORT_ARRIVAL_TIME',\n})\n\nexport const switchAirportModalShow = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_AIRPORT_MODAL_SHOW',\n})\n\nexport const updateModalState = (v: ModalStatusList) => ({\n payload: v,\n type: ConditionActionType.UPDATE_MODAL_STATE,\n})\n\nexport const switchLimousineBusModalShow = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_LIMOUSINE_BUS_MODAL_SHOW',\n})\n\nexport const switchBusTicketOitaModalShow = (v: boolean) => ({\n payload: v,\n type: 'SWITCH_BUS_TICKET_OITA_MODAL_SHOW',\n})\n\nexport const switchIsShowUMModal = (v: boolean) => ({\n payload: v,\n type: ConditionActionType.SWITCH_IS_SHOWUMMODAL,\n})\n\ninterface GetFlightParams {\n flightNumber: string;\n}\ninterface GetFlightResult {\n flightInfo: FlightInfo;\n}\n\ninterface GetExtremeParams {\n // 駅コードã€é§…ã®å称ã€åº§æ¨™æƒ…å ±ã€ä½æ‰€æƒ…å ±ã¾ãŸã¯åœ°ç‚¹ãƒ‡ãƒ¼ã‚¿ãªã©ã®ãƒªã‚¹ãƒˆã€‚\n viaList: string;\n // 探索日。\n date?: string,\n // 探索時刻。\n time?: string,\n // 探索種別。\n searchType?: string,\n // 詳細探索æ¡ä»¶ãƒ‡ãƒ¼ã‚¿ã€‚\n conditionDetail?: string,\n // 座標ã®æ¸¬åœ°ç³»ã€‚\n gcs: string,\n}\n\ninterface GetExtremeResult {\n extreme: Extreme,\n}\n\ninterface GetConditionParams {\n shinkansen?: boolean,\n limitedExpress? : boolean,\n highwayBus?: boolean,\n connectionBus?: boolean,\n localBus?: boolean,\n ship?: boolean,\n}\n\ninterface GetConditionResult {\n condition: string,\n}\n\n/**\n * 路線ã®ç¨®åˆ¥ï¼ˆå›½å†…ç·šã¾ãŸã¯å›½éš›ç·šï¼‰ã‚’å–å¾—ã™ã‚‹ã€‚\n */\nexport const getRouteType = {\n start: (params: GetFlightParams) => ({\n type: ConditionActionType.ANA_GET_ROUTE_TYPE_START as typeof ConditionActionType.ANA_GET_ROUTE_TYPE_START,\n payload: params,\n }),\n\n succeed: (params: GetFlightParams, result: GetFlightResult) => ({\n type: ConditionActionType.ANA_GET_ROUTE_TYPE_SUCCEED as typeof ConditionActionType.ANA_GET_ROUTE_TYPE_SUCCEED,\n payload: { params, result },\n }),\n\n fail: (params: GetFlightParams, error: AxiosError) => ({\n type: ConditionActionType.ANA_GET_ROUTE_TYPE_FAIL as typeof ConditionActionType.ANA_GET_ROUTE_TYPE_FAIL,\n payload: { params, error },\n error: true,\n }),\n}\n\nexport const getFlight = {\n start: (params: GetFlightParams) => ({\n type: ConditionActionType.ANA_GET_FLIGHT_START as typeof ConditionActionType.ANA_GET_FLIGHT_START,\n payload: params,\n }),\n\n succeed: (params: GetFlightParams, result: GetFlightResult) => ({\n type: ConditionActionType.ANA_GET_FLIGHT_SUCCEED as typeof ConditionActionType.ANA_GET_FLIGHT_SUCCEED,\n payload: { params, result },\n }),\n\n fail: (params: GetFlightParams, error: AxiosError) => ({\n type: ConditionActionType.ANA_GET_FLIGHT_FAIL as typeof ConditionActionType.ANA_GET_FLIGHT_FAIL,\n payload: { params, error },\n error: true,\n }),\n};\n\nexport const getExtreme = {\n start: (params: GetExtremeParams) => ({\n type: ConditionActionType.EKISPERT_GET_EXTREME_START as typeof ConditionActionType.EKISPERT_GET_EXTREME_START,\n payload: params,\n }),\n\n succeed: (params: GetExtremeParams, result: GetExtremeResult) => ({\n type: ConditionActionType.EKISPERT_GET_EXTREME_SUCCEED as typeof ConditionActionType.EKISPERT_GET_EXTREME_SUCCEED,\n payload: { params, result },\n }),\n\n fail: (params: GetExtremeParams, error: AxiosError) => ({\n type: ConditionActionType.EKISPERT_GET_EXTREME_FAIL as typeof ConditionActionType.EKISPERT_GET_EXTREME_FAIL,\n payload: { params, error },\n error: true,\n }),\n};\n\nexport const getCondition = {\n start: (params: GetConditionParams) => ({\n type: ConditionActionType.EKISPERT_GET_CONDITION_START as typeof ConditionActionType.EKISPERT_GET_CONDITION_START,\n payload: params,\n }),\n\n succeed: (params: GetConditionParams, result: GetConditionResult) => ({\n type: ConditionActionType.EKISPERT_GET_CONDITION_SUCCEED as typeof ConditionActionType.EKISPERT_GET_CONDITION_SUCCEED,\n payload: { params, result },\n }),\n\n fail: (params: GetConditionParams, error: AxiosError) => ({\n type: ConditionActionType.EKISPERT_GET_CONDITION_FAIL as typeof ConditionActionType.EKISPERT_GET_CONDITION_FAIL,\n payload: { params, error },\n error: true,\n }),\n};\n","import { AxiosError } from 'axios';\nimport { Course } from './../services/ekispert/models';\nimport { Query } from '../states/query';\nimport FlightInfo from '../services/ana/models/flightInfo';\nimport Place from '../services/google/Place';\nimport { PlaceDirections } from '../services/google/PlaceDirections';\nimport { GeoLocation } from '../utils/geoLocation';\nimport { PointType } from './common';\nimport { TaxiFareSummary } from '../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { AirlineList } from '../utils/Airlines';\nimport History from '../components/search/CandidatesModal/Histories/history';\n\n// 探索æ¡ä»¶ã«é–¢ã‚る状態。\nexport interface ConditionState {\n // ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã€‚(出発地ã¾ãŸã¯ç›®çš„地。)\n point: string,\n // ユーザーãŒæŒ‡å®šã—ãŸé§…ã®ã‚³ãƒ¼ãƒ‰ã€ã¾ãŸã¯åœ°ç‚¹ã€‚\n pointCode: string,\n // ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã®åº§æ¨™æƒ…å ±\n pointGeoCode: GeoLocation,\n // 経由地。\n via: string,\n // 経由地ã®é§…コード。\n viaCode: string,\n // 経由地ãŒã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n hasVia: boolean,\n // ユーザーãŒå–å¾—ã—ãŸåœ°ç‚¹ï¼ˆå‡ºç™ºåœ°ã¾ãŸã¯ç›®çš„地)ã®ç¨®åˆ¥ã€‚\n // (駅åã€ç·¯åº¦çµŒåº¦ã€ä½æ‰€ã®3種類。)\n pointType: PointType,\n // 探索日時。\n date: Date,\n // æ乗便å。(例. ANA65)\n flight: string,\n // æ乗便åã®æ•°å—部分。(例. 65)\n flightNumber: string,\n // ユーザーãŒæŒ‡å®šã™ã‚‹ç©ºæ¸¯æ»žåœ¨æ™‚間。\n arrivalTimeToAirport: number,\n // 「出発案内ã€ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n // (Falseã®å ´åˆã¯ã€Œåˆ°ç€æ¡ˆå†…ã€ã¨ã—ã¦æ‰±ã†ã€‚)\n isDepartureGuide: boolean,\n // 新幹線を利用ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n isEnabledShinkansen: boolean,\n // 有料特急を利用ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n isEnabledLimitedExpress: boolean,\n // ICカードé‹è³ƒã‚’有効ã«ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n isEnabledIc: boolean,\n // 探索æ¡ä»¶è©³ç´°ã€‚(利用ã™ã‚‹äº¤é€šç¨®åˆ¥ãªã©ã€‚)\n conditionDetail: string,\n /** ã€ä½¿ç”¨éžæŽ¨å¥¨ã€‘検索画é¢ã«ãŠã„ã¦å›½å†…ç·šã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ï¼šä¸€è¦§ãƒ»çµæžœç”»é¢ã§ã¯ flightStatus.isDomesticを使用ã—ã¦ãã ã•ã„ */\n isDomestic: boolean,\n flightStatus: FlightInfo;\n /** 検索画é¢ã®åºƒå‘Šç”¨ã«å–å¾—ã—ãŸé‹èˆªæƒ…å ±ã€‚ */\n flightStatusForSeachAd: FlightInfo;\n /** 検索画é¢ã®åºƒå‘Šç”¨ã«å–å¾—ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸæ—¥ä»˜ã‚’å…ƒã«ã—ãŸé‹èˆªæƒ…å ± */\n flightStatusUserSetDateForSearchAd: FlightInfo;\n /** 出発地・到ç€åœ°ã®å¸‚区町æ‘データ */\n cityName: string;\n error?: AxiosError | null;\n course: Course[] | [];\n // 入力クエリ\n query: Query;\n /** 空港連絡ãƒã‚¹ã‚’優先ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityAirportBus: boolean;\n /** 自動車を優先ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityCar: boolean;\n /** 自動車を優先をãƒãƒªã‚¢ãƒ•ãƒªãƒ¼ã‹ã‚‰ONã«ã—ãŸã‹åˆ¤å®šã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityCarWithBarrierFree: boolean;\n /** çµæžœç”»é¢ã§è¡¨ç¤ºã™ã‚‹æƒ…å ±ã‚’æä¾›ã—ãŸæ—¥æ™‚(表示ã—ã¦ã„ã‚‹çµæžœã‚’å–å¾—ã—ãŸæ—¥æ™‚)。 */\n searchedAt: Date;\n /** 利用者ãŒç©ºæ¸¯åˆ°ç€æ™‚é–“ã«åŒæ„ã—ãŸã‹ã‚’判定 */\n consentAirportArrivalTime: boolean;\n /** 空港到ç€æ™‚é–“åŒæ„モーダルを出ç¾ã™ã‚‹ã‹åˆ¤å®š */\n airportModalShow: boolean;\n /** å„種モーダルã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’定義 */\n modalStatus: ModalStatusList;\n /** リムジンãƒã‚¹ãƒ¢ãƒ¼ãƒ€ãƒ«ã‚’表示ä¸ã‹ã‚’判定 */\n tokyoLimousineBusModalShow: boolean;\n /** 大分ãƒã‚¹ãƒã‚±ãƒƒãƒˆãƒ¢ãƒ¼ãƒ€ãƒ«ã‚’表示ä¸ã‹ã‚’判定 */\n busTicketOitaModalShow: boolean;\n /** 羽田空港国際線利用ã§ã‹ã¤ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åãŒæœªæ±ºå®šã‹ã©ã†ã‹ã‚’判定 */\n isNoSetTerminalHND: boolean;\n /** 空港アクセスナビãŒåˆ©ç”¨å¯èƒ½ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isAvalable: boolean;\n /** çµæžœç”»é¢ã§è¡¨ç¤ºã™ã‚‹çµŒè·¯ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚ */\n courseIndex: number,\n /** 工房連æºã§ä½¿ç”¨ã™ã‚‹æ²–縄ãƒã‚¹ã®åœç•™æ‰€ä¸€è¦§ */\n okinawaBusStopList: OkinawaBusStop[];\n /** 検索画é¢ã§æ²–縄ãƒã‚¹ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ã‚’判定 */\n isShowOkinawaBusLink: boolean;\n /** インクリメンタルサーãƒã§å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ± */\n place: Place | null;\n /** 最後ã«ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«ã‚µãƒ¼ãƒã§å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ± */\n /** TODO: place ã«çµ±åˆã—ãŸã„ */\n lastSelectedPlace: Place | null;\n /** 空港ã‹ã‚‰ç›®çš„地ã¾ã§ã®GoogleDirectionAPIã‹ã‚‰å–å¾—ã—ãŸãƒ«ãƒ¼ãƒˆæƒ…å ± */\n directions: PlaceDirections | null;\n /** 連æºãƒ‘ラメータより判æ–ã™ã‚‹ä½¿ç”¨ã™ã‚‹èˆªç©ºä¼šç¤¾ */\n targetAirLine: AirlineList;\n /** タクシー料金ã¨è·é›¢ã®ä¸€è¦§ */\n taxiFareSummaries: TaxiFareSummary[],\n /** 検索時ã«æŒ‡å®šã—ãŸç™ºç€åœ°ã®å±¥æ´ã€‚ */\n searchHistories: History[],\n /** UM */\n isShowUMModal: boolean,\n}\n\nexport interface ModalStatusList {\n /** 自動車経路表示時ã«1時間å‰æœªæº€ã‚’é¸æŠžã—ãŸéš›ã®æ³¨æ„モーダル */\n carCourse: ModalStatus,\n /** 他サイトã‹ã‚‰é·ç§»æ™‚ã«è¡¨ç¤ºã™ã‚‹åˆæœŸãƒ¢ãƒ¼ãƒ€ãƒ« */\n initModal: ModalStatus\n}\n\n/**\n * 一度ã—ã‹è¡¨ç¤ºã—ãªã„モーダルã®çŠ¶æ…‹\n */\nexport enum ModalStatus {\n HIDE = 'HIDE',\n SHOW = 'SHOW',\n ACCEPT = 'ACCEPT'\n}\n\n/** 沖縄ãƒã‚¹åœç•™æ‰€ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ */\nexport interface OkinawaBusStop {\n lat: number,\n lng: number,\n area: string,\n busStopName: string,\n direction: string,\n ekispertCode: string\n}\n","export const ArrivalGateToStation: { [key:string]: number; } = {\n // 羽田空港\n \"HND\": 30,\n // æˆç”°ç©ºæ¸¯\n 'NRT': 30,\n // æ±äº¬\n 'TYO': 30,\n // 稚内空港\n 'WKJ': 1,\n // 利尻空港\n 'RIS': 20,\n // オホーツク紋別空港\n 'MBE': 15,\n // 女満別空港\n 'MMB': 1,\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': 15,\n // æ—å·ç©ºæ¸¯\n 'AKJ': 20,\n // 釧路空港\n 'KUH': 20,\n // 帯広空港\n 'OBO': 15,\n // æ–°åƒæ³ç©ºæ¸¯\n 'CTS': 30,\n // æ–°åƒæ³ç©ºæ¸¯\n // (ANA APIã‹ã‚‰ã¯æ–°åƒæ³ç©ºæ¸¯ã®ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦ã€ŒSPKã€ãŒè¿”ã£ã¦ãã‚‹ãŸã‚。\n // 丘ç 空港ã¯ANAãŒå°±èˆªã—ã¦ã„ãªã„ãŸã‚ã€ã€ŒSPKã€ã‚‚æ–°åƒæ³ç©ºæ¸¯ã¨ã—ã¦æ‰±ã†ã€‚)\n 'SPK': 30,\n // 函館空港\n 'HKD': 15,\n // é’森空港\n 'AOJ': 15,\n // 大館能代空港\n 'ONJ': 15,\n // 秋田空港\n 'AXT': 15,\n // 庄内空港\n // 接続ãƒã‚¹ã®ãƒ€ã‚¤ãƒ¤ã«é–“ã«åˆã‚ã›ã‚‹ã‚ˆã†ã«10分ã¨ã™ã‚‹\n 'SYO': 10,\n // ä»™å°ç©ºæ¸¯\n 'SDJ': 20,\n // 新潟空港\n 'KIJ': 20,\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': 15,\n // 八丈島空港\n 'HAC': 20,\n // é™å²¡ç©ºæ¸¯\n 'FSZ': 20,\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': 30,\n // 伊丹空港\n 'ITM' : 30,\n // 関西空港(大阪)\n 'KIX': 30,\n // 神戸空港\n 'UKB': 20,\n // 徳島空港\n 'TKS': 10,\n // 高æ¾ç©ºæ¸¯\n 'TAK': 15,\n // 岡山空港\n 'OKJ': 10,\n // 高知空港\n 'KCZ': 5,\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': 10,\n // 広島空港\n 'HIJ': 20,\n // 岩国空港\n 'IWK': 10,\n // 富山空港\n 'TOY': 10,\n // 能登空港\n 'NTQ': 15,\n // å°æ¾ç©ºæ¸¯\n 'KMQ': 15,\n // é³¥å–空港\n 'TTJ': 10,\n // ç±³å空港\n 'YGJ': 15,\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': 20,\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': 15,\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': 20,\n // 対馬空港\n 'TSJ': 20,\n // 壱å²ç©ºæ¸¯\n 'IKI': 20,\n // ç¦å²¡ç©ºæ¸¯\n 'FUK': 30,\n // 長崎空港\n 'NGS': 20,\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': 20,\n // ä½è³€ç©ºæ¸¯\n 'HSG': 15,\n // 熊本空港\n 'KMJ': 15,\n // 鹿å…島空港\n 'KOJ': 20,\n // 宮崎空港\n 'KMI': 20,\n // 大分空港\n 'OIT': 10,\n // 那覇空港\n 'OKA': 30,\n // å®®å¤ç©ºæ¸¯\n 'MMY': 20,\n // 石垣空港\n 'ISG': 20,\n // 天è‰ç©ºæ¸¯\n 'AXJ': 20,\n // 種å島空港\n 'TNE': 20,\n // 屋久島空港\n 'KUM': 20,\n // 与論空港\n 'RNJ': 20,\n // 喜界空港\n 'KKX': 20,\n // 沖永良部空港\n 'OKE': 20,\n // 奄美空港\n 'ASJ': 20,\n // 徳之島空港\n 'TKN': 20\n}\n","/**\n * 国際線ã®å ´åˆã®æ乗便到ç€ã‚²ãƒ¼ãƒˆã‹ã‚‰æœ€å¯„ã‚Šã®å…¬å…±äº¤é€šæ©Ÿé–¢ã¾ã§ã®æ‰€è¦æ™‚間。\n */\nexport const ArrivalGateToStationInt: { [key:string]: number; } = {\n // 羽田空港\n \"HND\": 40,\n // æˆç”°ç©ºæ¸¯\n 'NRT': 60,\n // 関西空港(大阪)\n 'KIX': 40,\n}\n","/**\n * æä¹—å£ã‹ã‚‰ãƒã‚¹åˆ©ç”¨ã¨ãªã‚‹å„空港ã”ã¨ã®æä¹—å£ã®ãƒªã‚¹ãƒˆã€‚\n */\nexport const BusGates: { [key:string]: string[]; } = {\n // æ供データã«å…¨è§’ãŒå«ã¾ã‚Œã¦ãŸå ´åˆã¯å¿µã®ç‚ºã€å…¨è§’・åŠè§’ã®2パターンを定義。\n 'KOJ': ['ï¼”A', '4A'],\n 'SDJ': ['A2', 'A3'],\n 'NRT': ['B', 'C', 'D', 'E', 'F', 'G'],\n 'CTS': ['0', '1B', '3B', '101', '102'],\n 'FUK': ['41', '42', '43', '44', '45', '50', '81', '82'],\n 'HND': ['500', '501', '502', '503', '504', '505', '506', '507', '508', '509', '510', '511', '512', '513'],\n 'ITM': ['5A', '5A', 'ï¼™A', '9A', 'ï¼™B', '9B', 'ï¼™C', '9C'],\n 'KIX': ['201', '202', '211', '212'],\n 'NGO': ['101', '102', '103', '104', '105', '106'],\n 'OKA': ['38A', '38B', '38B', '38D', '96', '97'],\n 'KMJ': ['103', '104', '105'],\n}\n","/**\n * サテライトã¸ç§»å‹•ã™ã‚‹ãŸã‚ã®ãƒã‚¹åˆ©ç”¨ã¨ãªã‚‹æä¹—å£ã®ãƒªã‚¹ãƒˆã€‚\n * (2020/03/03ç¾åœ¨ã€ç¾½ç”°ç©ºæ¸¯ã®ã¿å˜åœ¨ã™ã‚‹ã€‚)\n */\nexport const SatelliteGates: { [key:string]: string[]; } = {\n 'HND': ['46', '47', '48'],\n}\n","export interface Query {\n // 対象ã®ä¾¿ã®ä¾¿ç•ªå·\n flightNumber: string,\n // 出発空港\n depAirport: string,\n // 到ç€ç©ºæ¸¯\n arrAirport: string,\n // 出発空港ã®3レターコード\n fromAirportCode: string,\n // 到ç€ç©ºæ¸¯ã®3レターコード\n toAirportCode: string,\n // 出発空港ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å称\n fromTerminal: string,\n // 到ç€ç©ºæ¸¯ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å称\n toTerminal: string,\n // 対象便ã®å‡ºç™ºäºˆå®šæ—¥æ™‚\n std: Date | null,\n // 対象便ã®åˆ°ç€äºˆå®šæ—¥æ™‚\n sta: Date | null,\n // å‚照元を特定ã™ã‚‹ãŸã‚ã®ãƒ‘ラメータ\n referrer: string,\n // 到ç€æ¡ˆå†…フラグ\n isArrivalGuide: boolean,\n // ç”»é¢ã®è¡¨ç¤ºè¨€èªž\n lang: Lang,\n // 国内線ã‹\n isDomestic: boolean\n}\n\n// TOOO: LangClassã¨çµ±åˆã™ã‚‹\nexport enum Lang {\n ja = 'ja',\n en = 'en',\n}\n\nexport const changeLang = (lang: string) => {\n switch(lang) {\n case 'ja':\n return Lang.ja;\n case 'en':\n return Lang.en;\n default:\n return Lang.ja;\n }\n}\n","import { differenceInCalendarDays, isBefore, isAfter, setMinutes, addHours, isToday, addDays, subDays, parse, addMinutes, differenceInDays, subHours, subMonths, isSameDay, subMinutes } from \"date-fns\";\nimport { format, utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\n\n// 国内線ã®æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる最大ã®åŸºæº–日。(1日先ã¾ã§å–å¾—å¯èƒ½ã€‚)\nconst BASE_MAX_DATE_OF_DOMESTIC = 1;\n// 国内線ã®æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる最å°ã®åŸºæº–日。(1æ—¥å‰ã¾ã§å–å¾—å¯èƒ½ã€‚)\nconst BASE_MIN_DATE_OF_DOMESTIC = -1;\n\n// 国際線ã®æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる最大ã®åŸºæº–日。(2日先ã¾ã§å–å¾—å¯èƒ½ã€‚)\nconst BASE_MAX_DATE_OF_INTERNATINAL = 2;\n// 国際線ã®æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる最å°ã®åŸºæº–日。(2æ—¥å‰ã¾ã§å–å¾—å¯èƒ½ã€‚)\nconst BASE_MIN_DATE_OF_INTERNATINAL = -2;\n// UTCã¨JSTã®æ™‚間差(分)\nconst DIFF_UTC_TO_JST_MINUTES = 540;\n\n/**\n * 日時ã«é–¢ã™ã‚‹ç‹¬è‡ªã®å‡¦ç†ã‚’ã¾ã¨ã‚ãŸã‚¯ãƒ©ã‚¹ã€‚\n */\nclass DateTime {\n /**\n * 24時間を上回る表記ã§æ—¥ä»˜æ–‡å—列を与ãˆãŸæ™‚ã«å‡¦ç†ã‚’ã™ã‚‹\n * @param dateStr 返還対象ã®æ—¥ä»˜æ–‡å—列\n */\n static convertOver24HoursDate(dateStr: string | null) {\n let localDate = null;\n if(!dateStr){\n return null;\n }\n // YYYYMMDDHHmmã§æ¥ãŸå ´åˆ\n else if(/^\\d{12}$/.test(dateStr)) {\n const format = 'yyyyMMddHHmm';\n const date = dateStr.slice(0, 8);\n const time = dateStr.slice(8);\n let minutes = Number(time.slice(2));\n let hour = Number(time.slice(0, 2)) + Math.floor(minutes/60);\n if(isNaN(minutes) || isNaN(hour)){\n return null;\n }\n minutes = minutes%60;\n const addDay = Math.floor(hour/24);\n hour = hour%24;\n const setTime = ('0'+hour).slice(-2) + ('0'+minutes).slice(-2);\n localDate = addDays(parse(date+setTime, format, new Date()), addDay);\n }\n // YYYYMMDDã§æ¥ãŸå ´åˆ\n else if(/^\\d{8}$/.test(dateStr)) {\n const format = 'yyyyMMdd';\n localDate = parse(dateStr, format, new Date())\n }\n if(localDate !== null) {\n return zonedTimeToUtc(localDate, 'Asia/Tokyo');\n }\n return null;\n }\n\n /**\n * æ乗便ã®æ—¥ä»˜ãŒé‹è¡Œæƒ…å ±ï¼ˆANA API)をå‚ç…§å¯èƒ½ãªæ—¥ä»˜ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param scheduledTime æ乗便ã®å®šåˆ»ã€‚\n * @param isDomestic æ乗便ãŒå›½å†…ç·šã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n */\n static isAvalableOperationInfo(scheduledTime: Date, isDomestic: boolean) {\n const baseMaxDate = isDomestic ? BASE_MAX_DATE_OF_DOMESTIC : BASE_MAX_DATE_OF_INTERNATINAL;\n const baseMinDate = isDomestic ? BASE_MIN_DATE_OF_DOMESTIC : BASE_MIN_DATE_OF_INTERNATINAL;\n // ç¾åœ¨æ—¥æ™‚ã‚’å–å¾—ã™ã‚‹ã€‚(実行環境ã«å¿œã˜ã¦ã‚¿ã‚¤ãƒ ゾーンã¯è‡ªå‹•ã§è¨å®šã•ã‚Œã‚‹ã€‚)\n const now = new Date();\n // 「(æ乗便ã®å®šåˆ»ã®æ—¥ä»˜) - (ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜)ã€ã®å·®ã‚’å–å¾—ã™ã‚‹ã€‚\n const diff = differenceInCalendarDays(scheduledTime, now);\n // å·®ãŒæœ€å¤§ã®åŸºæº–日以下ã€ã‹ã¤ã€å·®ãŒæœ€å°ã®åŸºæº–日以上ã§ã‚ã‚‹å ´åˆã¯é‹è¡Œæƒ…å ±ã‚’åˆ©ç”¨ã§ãる日付ã¨ã¿ãªã™ã€‚\n return diff <= baseMaxDate && diff >= baseMinDate ;\n }\n\n /**\n * 時刻ã®åˆ†æ•°ã«å¿œã˜ã¦ã€15分刻ã¿ã®æ™‚刻(0分ã€15分ã€30分ã€45分)ã«æ•´å½¢ã™ã‚‹ã€‚\n * @param date 日時。\n */\n static adjustBy15Minutes(date: Date) {\n const min = date.getMinutes();\n // 分数ãŒ1~14ã®å ´åˆã¯15分ã«ã™ã‚‹ã€‚\n if (min > 0 && min < 15) {\n return setMinutes(date, 15);\n // 分数ãŒ16~29ã®å ´åˆã¯30分ã«ã™ã‚‹ã€‚\n } else if (min > 15 && min < 30) {\n return setMinutes(date, 30);\n // 分数ãŒ31~44ã®å ´åˆã¯45分ã«ã™ã‚‹ã€‚\n } else if (min > 30 && min < 45) {\n return setMinutes(date, 45);\n // 分数ãŒ46~59ã®å ´åˆã¯å…ƒã®æ™‚é–“ã«1時間足ã—ãŸä¸Šã§ã€åˆ†æ•°ã‚’0分ã«ã™ã‚‹ã€‚\n // (例. 9:46ã®å ´åˆã€10:00ã¨ã™ã‚‹ã€‚)\n } else if (min > 45 && min < 60) {\n return setMinutes(addHours(date, 1), 0);\n // 分数ãŒ0・15・30・45ã®å ´åˆã«ã¯å…ƒã®æ—¥æ™‚ã‚’ãã®ã¾ã¾è¿”ã™ã€‚\n } else {\n return date;\n }\n }\n /**\n * 時刻ã®åˆ†æ•°ã«å¿œã˜ã¦ã€30分刻ã¿ã®æ™‚刻(0分ã€30分)ã«æ•´å½¢ã™ã‚‹ã€‚\n * @param date 日時。\n */\n static adjustBy30Minutes(date: Date) {\n const min = date.getMinutes();\n // 0 - 29分ã®å ´åˆã«ã¯0分ã«åˆ‡ã‚Šæ¨ã¦ã‚’ã™ã‚‹\n return setMinutes(date, Math.floor(min/30)*30);\n }\n /**\n * 時刻ã®åˆ†æ•°ã«å¿œã˜ã¦ã€30分刻ã¿ã®æ™‚刻(0分ã€30分)ã«åˆ‡ã‚Šä¸Šã’ã¦æ•´å½¢ã™ã‚‹ã€‚\n * @param date 日時。\n */\n static adjustBy30MinutesCeil(date: Date) {\n const min = date.getMinutes();\n // const hour = date.getHours();\n // 0 - 29分ã®å ´åˆã«ã¯30分ã«åˆ‡ã‚Šä¸Šã’ã‚’ã™ã‚‹\n return setMinutes(date, Math.ceil(min/30)*30);\n }\n\n /**\n * 時刻ã®åˆ†æ•°ã«å¿œã˜ã¦ã€10分刻ã¿ã®æ™‚刻ã«æ•´å½¢ã™ã‚‹ã€‚\n * @param date 日時。\n */\n static adjustBy10Minutes(date: Date) {\n /** 10分å˜ä½ã§åˆ†ã‚’切り上ã’ã‚‹ */\n const min = Math.ceil(date.getMinutes()/10) * 10;\n /** 60分以上ã«ãªã‚‹ã¨ãã«ã¯æ™‚間を切り上ã’ã‚‹ */\n if(min >= 60) {\n return setMinutes(addHours(date, 1), (min - 60));\n }\n else {\n return setMinutes(date, min);\n }\n }\n\n /**\n * 翌日以é™ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚(レンタカーã®ãƒãƒŠãƒ¼ã®è¡¨ç¤ºæ¡ä»¶ã§åˆ©ç”¨ã™ã‚‹ã€‚2020/05/07ç¾åœ¨ã€‚)\n * @param date 判別ã—ãŸã„日時。\n * */\n static isAfterToday(date: Date) {\n // 今日ã§ã¯ãªã„ã€ã‹ã¤ã€ã€ŒæŒ‡å®šã•ã‚ŒãŸæ—¥æ™‚ - ç¾åœ¨æ—¥æ™‚ã€ã®å·®ã‚’å–ã£ãŸæ™‚ã«1以上ã«ãªã‚‹å ´åˆã®ã¿ã€ç¿Œæ—¥ä»¥é™ã¨ã¿ãªã™ã€‚\n return !isToday(date) && differenceInCalendarDays(date, new Date()) > 0;\n }\n /**\n * å‰æ—¥ä»¥å‰ã‹ã‚’判定ã™ã‚‹ã€‚(Airporter沖縄連æºï¼‰\n * @param date 判別ã—ãŸã„日時。\n */\n static isBeforeToday(date: Date) {\n return differenceInCalendarDays(date, new Date()) < 0;\n }\n\n /** \n * 当日以é™ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚(GoToトラベルã®ãƒãƒŠãƒ¼ã®è¡¨ç¤ºæ¡ä»¶ã§åˆ©ç”¨ã™ã‚‹ã€‚2020/08/04ç¾åœ¨ã€‚)\n * @param date 判別ã—ãŸã„日時。\n * */\n static isTodayOrLater(date: Date) {\n // 今日ã§ã‚ã‚‹ã€ã¾ãŸã¯ã€ã€ŒæŒ‡å®šã•ã‚ŒãŸæ—¥æ™‚ - ç¾åœ¨æ—¥æ™‚ã€ã®å·®ã‚’å–ã£ãŸæ™‚ã«1以上ã«ãªã‚‹å ´åˆã®ã¿ã€ç¿Œæ—¥ä»¥é™ã¨ã¿ãªã™ã€‚\n return isToday(date) || differenceInCalendarDays(date, new Date()) > 0;\n }\n\n /**\n * 所è¦æ™‚é–“ã®åˆ†æ•°ã‚’「x時間xx分ã€ã®å½¢å¼ã«å¤‰æ›ã™ã‚‹ã€‚\n * @param minutes 所è¦æ™‚é–“ã®åˆ†æ•°ã€‚\n */\n static toHHmm(minutes: number, hourSuffix: string, minSuffix: string) {\n let hhmm = '';\n /** 時間。(分数を60ã§å‰²ã£ãŸå•†ã‚’切りæ¨ã¦ã—ãŸã‚‚ã®ã€‚) */\n const hour = Math.floor(minutes / 60);\n /** 分数。(分数を60ã§å‰²ã£ãŸä½™ã‚Šã€‚) */\n const min = minutes % 60;\n // 割り算をã—ãŸçµæžœã€1時間以上ã§ã‚ã‚‹å ´åˆã¯ã€ã€Œxx時間ã€ã‚’è¿”å´ã™ã‚‹æ–‡å—列ã«åŠ ãˆã‚‹ã€‚\n if (hour > 0) { hhmm += hour + hourSuffix; }\n // 分数を返å´ã™ã‚‹æ–‡å—列ã«åŠ ãˆã‚‹ã€‚\n hhmm += min + minSuffix;\n return hhmm;\n }\n\n /**\n * JRã®åˆ—車予約リンクを表示ã™ã‚‹ã‹\n * 列車出発10åˆ†å‰ ~ 1ヶ月å‰ã®æœ10時以é™ã—ã‹äºˆç´„ã§ããªã„\n * @param depDate 列車出発日時\n * @param now ç¾åœ¨æ™‚刻(debug用)\n */\n static isAbleToReserveJR(depDate: Date, now: Date = new Date()){\n // 出発10分å‰ã‚’切るã¨äºˆç´„ãŒã§ããªã„\n const isAfter: boolean = depDate.getTime() > addMinutes(now, 10).getTime();\n // 出発日1ヶ月å‰ã¨æ¤œç´¢æ—¥ã®æ—¥ã®å·®ã‚’求ã‚ã‚‹\n let oneMonthAgoDiffDay = differenceInCalendarDays(now, subMonths(depDate, 1));\n // 1ヶ月å‰ã¨åŒã˜æ—¥ãŒå˜åœ¨ã—ãªã„å ´åˆã€åŒã˜æœˆã®åˆæ—¥ãŒäºˆç´„å¯èƒ½æ—¥ã¨ãªã‚‹\n // å‚考リンク:\n // https://faq.jr-odekake.net/faq_detail.html?id=4294&category=722&page=1\n if(depDate.getDate() !== subMonths(depDate, 1).getDate()) {\n const ableReserveDay = depDate.setDate(1);\n oneMonthAgoDiffDay = differenceInCalendarDays(now, ableReserveDay);\n }\n // 検索日ã®1ヶ月後ã®10時以é™ã—ã‹äºˆç´„ãŒã§ããªã„\n const isBefore: boolean = oneMonthAgoDiffDay > 0 || (oneMonthAgoDiffDay === 0 && now.getHours() >= 10);\n return isBefore && isAfter;\n }\n\n /**\n * å—海ラピートã®äºˆç´„ãŒå¯èƒ½ã‹\n * 列車出発å‰æ—¥ 〜 1ヶ月å‰ä»¥é™ã—ã‹äºˆç´„ã§ããªã„\n * @param depDate 列車出発日時\n * @param now ç¾åœ¨æ™‚刻(debug用)\n */\n static isAbleToReserveNankaiRapid(depDate: Date, now: Date = new Date()) {\n const diffDay = differenceInCalendarDays(now, depDate);\n // 検索日ã®å½“日以é™ã¯äºˆç´„ã§ããªã„\n const isAfter = diffDay < 0;\n // 出発日1ヶ月å‰ã¨æ¤œç´¢æ—¥ã®æ—¥ã®å·®ã‚’求ã‚ã‚‹\n let oneMonthAgoDiffDay = differenceInCalendarDays(now, subMonths(depDate, 1));\n // å‚考リンク:\n // https://www.club-nankai.jp/traffic/ticketless/faq.html\n if(depDate.getDate() !== subMonths(depDate, 1).getDate()) {\n const ableReserveDay = depDate.setDate(1);\n oneMonthAgoDiffDay = differenceInCalendarDays(now, ableReserveDay);\n }\n // 検索日ã®1ヶ月後ã—ã‹äºˆç´„ãŒã§ããªã„\n const isBefore: boolean = oneMonthAgoDiffDay >= 0;\n return isBefore && isAfter;\n }\n\n /**\n * 沖縄ãƒã‚¹ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹\n * 3ヶ月å‰ã®åŒæ—¥ãŒãªã„å ´åˆã«ã¯æ¬¡ã®æœˆã®åˆæ—¥ä»¥é™ãªã‚‰äºˆç´„å¯èƒ½ã¨ã™ã‚‹\n * @param depDate æ乗便ã®æä¹—æ—¥\n * @param now ç¾åœ¨æ™‚刻(debug用)\n */\n static isShowOkinawaBusBanner(depDate: Date, now: Date = new Date()) {\n // å‰æ—¥ä»¥å‰ã—ã‹äºˆç´„ã§ããªã„\n const isAfter: boolean = differenceInCalendarDays(now, depDate) <= 0;\n // 出発日3ヶ月å‰ã¨æ¤œç´¢æ—¥ã®æ—¥ã®å·®ã‚’求ã‚ã‚‹\n let diffDay = differenceInCalendarDays(now, subMonths(depDate, 3));\n // 3ヶ月å‰ã¨åŒã˜æ—¥ãŒå˜åœ¨ã—ãªã„å ´åˆã€åŒã˜æœˆã®åˆæ—¥ãŒäºˆç´„å¯èƒ½æ—¥ã¨ãªã‚‹\n if(depDate.getDate() !== subMonths(depDate, 3).getDate()) {\n const ableReserveDay = subMonths(depDate, 2).setDate(1);\n diffDay = differenceInCalendarDays(now, ableReserveDay);\n }\n // 検索日ã®1ヶ月後ã—ã‹äºˆç´„ãŒã§ããªã„\n const isBefore: boolean = diffDay >= 0;\n return isBefore && isAfter;\n }\n /**\n * 終電を跨ãã‹ã‚’判定ã™ã‚‹\n * 翌日ã®åˆå‰3時を跨ã„ã å ´åˆã«ã¯çµ‚電を跨ã„ã ã¨åˆ¤å®šã‚’ã™ã‚‹\n * @param baseDate 基準ã¨ãªã‚‹æ™‚刻\n * @param targetDate 判定対象ã®æ™‚刻\n */\n static isTommorowTrain(baseDate: Date, targetDate: Date) {\n // 1日以上離れãŸå ´åˆã«ã¯è·¨ã„ã ã¨åˆ¤å®š\n if(differenceInDays(targetDate, baseDate) > 0) {\n return true;\n }\n const a = subHours(baseDate, 3);\n const b = subHours(targetDate, 3);\n // 日付を3時間ãšã‚‰ã—ã¦ã€æ—¥ã‚’è·¨ã„ã§ã„ãªã„ã‹ã‚’判定\n return differenceInCalendarDays(b, a) > 0;\n }\n\n /**\n * æ±äº¬ãƒªãƒ ジンãƒã‚¹ã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param busDepDate ãƒã‚¹å‡ºç™ºæ™‚刻\n * @param isDepAirport ãƒã‚¹ãŒç©ºæ¸¯ç™ºã‹\n * @param flightArrTime フライト到ç€æ™‚刻\n * @param now ç¾åœ¨æ™‚刻(debu用)\n */\n static isAbleToReserveTokyoLimousineBus(busDepDate: Date, isDepAirport: boolean, flightArrTime: Date, now: Date = new Date()) {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 1. 空港発ç€ã«é–¢ã‚らãšã€ãƒã‚¹å‡ºç™º10分å‰ä»¥é™ã¯äºˆç´„ã§ããªã„よã†ã«ã™ã‚‹\n * 2-1. 空港発便ã®å ´åˆã€æ乗便ã®å®Ÿåˆ°ç€æ™‚間以é™ã®ã¿äºˆç´„ã§ãるよã†ã«ã™ã‚‹\n * 2-2. 空港ç€ä¾¿ã®å ´åˆã€30æ—¥å‰ä»¥é™ã‚ˆã‚Šäºˆç´„ã§ãるよã†ã«ã™ã‚‹\n */\n // 出発10分å‰ã‚’切るã¨äºˆç´„ãŒã§ããªã„\n const isAfter: boolean = busDepDate.getTime() >= addMinutes(now, 10).getTime();\n let isBefore;\n // 空港発ã®ä¾¿ã§ã¯æ乗便ã®å®Ÿåˆ°ç€æ™‚間以é™ã§äºˆç´„ã§ãã‚‹\n if(isDepAirport) {\n isBefore = now.getTime() >= flightArrTime.getTime();\n }\n else {\n // 空港ç€ã®ä¾¿ã§ã¯30æ—¥å‰ä»¥é™ã‚ˆã‚Šäºˆç´„ã§ãるよã†ã«ã™ã‚‹\n const diffDay = differenceInCalendarDays(busDepDate, now);\n isBefore = diffDay < 31;\n }\n return isBefore && isAfter;\n }\n\n /**\n * MKタクシーã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param date フライト日時\n */\n static isMkTaxi(date: Date) {\n const now = new Date();\n const beforeDay = subDays(date, 1);\n const diff = differenceInCalendarDays(beforeDay, now);\n\n // å‰æ—¥ã®16時ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff > 0 || (diff === 0 && now.getHours() < 16);\n }\n /**\n * MKタクシーã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param date フライト日時\n */\n static isMkTaxiTYO(date: Date, now: Date = new Date()) {\n const beforeDay = subDays(date, 1);\n const diff = differenceInCalendarDays(beforeDay, now);\n\n // 24時間å‰ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff > 0 || (diff === 0 && now.getTime() < beforeDay.getTime());\n }\n /**\n * MKタクシーã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param date フライト日時\n */\n static isMkTaxiKyoto(date: Date) {\n const now = new Date();\n const beforeDay = subDays(date, 1);\n const diff = differenceInCalendarDays(beforeDay, now);\n\n // 2æ—¥å‰ã®17時ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff > 1 || (diff === 1 && now.getHours() < 17);\n }\n /**\n * MKãƒã‚¤ãƒ¤ãƒ¼ã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param date フライト日時\n */\n static isMkHire(date: Date) {\n const now = new Date();\n const diff = differenceInCalendarDays(date, now);\n\n // 2æ—¥å‰ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff > 1;\n }\n\n /**\n * 検索画é¢ã«ã¦å¤§é˜ªãƒªãƒ ジンãƒã‚¹ã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param date 検索ã«è¨å®šã—ãŸæ—¥ä»˜\n */\n static isShowSearchOsakaLimousineBus(date: Date, now: Date = new Date()) {\n // 検索日付ãŒ60æ—¥å‰ã€œå½“æ—¥ã§ã‚ã‚‹å ´åˆã«è¡¨ç¤ºã™ã‚‹\n const diff = differenceInCalendarDays(date, now);\n const limitDay = 60;\n return diff <= limitDay && diff >= 0;\n }\n\n /**\n * çµæžœç”»é¢ã«ã¦å¤§é˜ªãƒªãƒ ジンãƒã‚¹ã®ãƒãƒŠãƒ¼ãƒ»ãƒœã‚¿ãƒ³ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param busDepDate ãƒã‚¹å‡ºç™ºæ™‚é–“\n */\n static isShowResultOsakaLimousineBus(busDepDate: Date, now: Date = new Date()) {\n // ãƒã‚¹å‡ºç™ºæ—¥æ™‚ãŒ60æ—¥å‰ã€œãƒã‚¹å‡ºç™ºæ™‚刻ã¾ã§ã§ã‚ã‚‹ã“ã¨\n const diff = differenceInCalendarDays(busDepDate, now);\n const limitDay = 60;\n return diff <= limitDay && busDepDate.getTime() >= now.getTime();\n }\n\n\n /** 指定ã—ãŸDateãŒInvalidDateã‹ã‚’判定ã™ã‚‹ */\n static isInvalidDate(date: Date) {\n // UNIX時間をå–å¾—ã—ãŸã¨ãã«æ•°å€¤ä»¥å¤–ãŒè¿”ã£ã¦ããŸå ´åˆã¯Invaid Dateã¨ã—ã¦ã¿ãªã™ã€‚\n return isNaN(date.getTime());\n }\n\n /**\n * ç¾åœ°æ™‚é–“ã‹ã‚‰æ—¥æœ¬æ™‚é–“ã«å¤‰æ›ã—ãŸDateåž‹ã‚’å–å¾—ã™ã‚‹\n * @param date ç¾åœ°æ™‚é–“Date\n * @returns\n */\n static getJSTDate(date: Date) {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n return utcToZonedTime(date, 'Asia/Tokyo');\n }\n\n /**\n * Dateåž‹ã®æ™‚刻表示ã¯å¿…ãšã“ã®é–¢æ•°ã‚’経由ã—ã¦è¡Œã†ã‚ˆã†ã«ã™ã‚‹\n * @param date 表示ã—ãŸã„時刻\n * @param formatString 表示ã—ãŸã„å½¢å¼\n * @param option\n * @returns\n */\n static JSTFormat(date: Date, formatString: string, option: any = {}) {\n try {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n const tokyoDate = DateTime.getJSTDate(date);\n return format(tokyoDate, formatString, option);\n }\n catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n return '';\n }\n }\n\n /**\n * ç¾åœ°æ™‚é–“Date -> JSTUNXTIMEã‚’å–å¾—ã™ã‚‹\n * UTCã® 10/01 00:00 を与ãˆãŸã‚‰JST 10/01 00:00 ã®UNIX TIMEã‚’è¿”ã™\n */\n static getJSTTime(date: Date) {\n const diffJSTMinutes = date.getTimezoneOffset() + DIFF_UTC_TO_JST_MINUTES;\n const JSTDate: Date = subMinutes(date, diffJSTMinutes);\n return JSTDate.getTime();\n }\n\n /**\n * æ±äº¬ã‚¹ã‚«ã‚¤ãƒ„リーãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹\n * 7æ—¥å‰ã€œå‰æ—¥ã®ã¿æŽ²è¼‰\n */\n static isShowTokyoSkyTreeBanner(userSetDate: Date, now: Date = new Date()) {\n const diff = differenceInCalendarDays(userSetDate, now);\n return diff > 0 && diff < 8;\n }\n\n /**\n * JSTã®ISO8601å½¢å¼ã«å¤‰æ›ã—ã¦è¿”ã™\n * @param date\n */\n static toISOString(date: Date) {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n return DateTime.JSTFormat(date, \"yyyy-MM-dd'T'HH:mm:ss+09:00\");\n }\n\n /**\n * 北谷MaaS予約ボタンを表示ã™ã‚‹ã‹\n */\n static isShowChatanMaaSButton(flightDate: Date, now: Date = new Date()) {\n const diff = differenceInCalendarDays(flightDate, now);\n // 3æ—¥å‰ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff > 2;\n }\n\n /**\n * å鉄ãƒã‚¹CentX予約ボタンを表示ã™ã‚‹ã‹\n * end: 2023/05/01 00:00\n */\n static isShowMeitetsuBusCentxButton(rideDate: Date) {\n const end = new Date(\"2023-05-01T00:00:00+09:00\");\n return isBefore(rideDate, end)\n }\n\n /**\n * ANASmartTravelオンラインãƒã‚§ãƒƒã‚¯ã‚¤ãƒ³ãƒãƒŠãƒ¼ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹\n * @param flightDate フライト日付\n */\n static isShowSmartTravelBanner(flightDate: Date) {\n const now = new Date();\n const diff = differenceInCalendarDays(flightDate, now);\n // 2æ—¥å‰ã¾ã§ã¯è¡¨ç¤ºã™ã‚‹\n return diff <= 2;\n }\n\n\n /**\n * ç¾åœ¨ãŒæŒ‡å®šã®æ™‚刻ã«åŽã¾ã£ã¦ã„ã‚‹ã‹ã‚’判定ã™ã‚‹\n * @param start 開始時刻(HH:mm)\n * @param end 終了時刻(HH:mm)\n * @param now ç¾åœ¨æ™‚刻\n */\n static isDurationTime(start: string, end: string, now = new Date()) {\n const getTotalMinutes = (str: string) => {\n const hour_minutes = str.split(':');\n return Number(hour_minutes[0]) * 60 + Number(hour_minutes[1]);\n }\n const nowTotalMintes = now.getHours() * 60 + now.getMinutes();\n return nowTotalMintes >= getTotalMinutes(start) && nowTotalMintes <= getTotalMinutes(end);\n }\n\n /**\n * ãˆããã£ã¨äºˆç´„リンクãŒè¡¨ç¤ºã§ãã‚‹ã‹\n * @param depTime 最åˆã®åŒºé–“ã®åˆ—車出発時刻\n * @param now ç¾åœ¨æ™‚刻\n */\n static isAbleDisplayEkinetLink(depTime: Date, now = new Date()) {\n // 入力ã•ã‚ŒãŸDate㌠invalid Date ã®ã¨ãã¯è¡¨ç¤ºã—ãªã„\n if(isNaN(depTime.getTime())) {\n return false;\n }\n // 出発10分å‰ã‚’切るã¨äºˆç´„ãŒã§ããªã„\n const isAfter: boolean = depTime.getTime() > addMinutes(now, 10).getTime();\n // 出発ãŒ1ヶ月後+6æ—¥å‰ä»¥å‰ã®å ´åˆã«ã¯è¡¨ç¤ºã—ãªã„\n let diffDays: number = -1;\n // 1ヶ月å‰ã¨åŒã˜æ—¥ãŒå˜åœ¨ã—ãªã„å ´åˆã€åŒã˜æœˆã®åˆæ—¥ãŒäºˆç´„å¯èƒ½æ—¥ã¨ãªã‚‹\n if(depTime.getDate() !== subMonths(depTime, 1).getDate()) {\n const ableReserveDay = subDays(depTime.setDate(1), 6);\n diffDays = differenceInCalendarDays(now, ableReserveDay);\n }\n else {\n /** 予約å¯èƒ½ãªæ—¥ä»˜ */\n const isAbleReserveDay = subDays(subMonths(depTime, 1), 6);\n diffDays = differenceInCalendarDays(now, isAbleReserveDay);\n }\n const isBefore = diffDays >= 0;\n if(!(isAfter && isBefore)) {\n return false;\n }\n // ãˆããã£ã¨ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹æ™‚刻(23:50 - 5:00)ã¾ã§ã¯è¡¨ç¤ºã—ãªã„\n return DateTime.isDurationTime(\"05:00\", \"23:50\", now);\n }\n\n /**\n * UniversalMaaS実証実験・社会実装ã®ã‚µãƒ¼ãƒ“スイン済ã¿ã‹ï¼Ÿ\n * 2023-01-27T11:00 以é™ã§ã‚れ㰠true\n * @param now ç¾åœ¨æ™‚刻(デãƒãƒƒã‚°ç”¨ï¼‰\n */\n static isUniversalMaaSServiceIn2023(now: Date = new Date()) {\n const limit = new Date(\"2023-01-27T11:00:00+09:00\");\n return now.getTime() >= limit.getTime();\n }\n\n /**\n * A2NetworkBannerã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ï¼Ÿ\n * llimit: 2024/01/25 23:59:59\n */\n static isShowA2networkBanner(now = new Date()) {\n const limit = new Date(\"2024-01-26T00:00:00+09:00\");\n return isBefore(now, limit);\n }\n\n /**\n * 伊予鉄タクシー観光ãƒãƒŠãƒ¼ï¼šAM-854\n * start: 2023/07/01\n * end: 2024/03/31\n * @param flightDate\n * @returns\n */\n static isShowIyotetsuTaxiBanner(now: Date = new Date()) {\n const start = new Date(\"2023-06-30T23:59:59+09:00\");\n const end = new Date(\"2024-04-01T00:00:00+09:00\");\n return isAfter(now, start) && isBefore(now, end)\n }\n\n /**\n * NH159便ã®ã¿9/2以é™ã¯ç¬¬3ターミナルã¨ãªã‚‹\n * @param flightDate フライト日付\n * @returns 第二ターミナル発ç€ã¨ãªã‚‹ã‹ï¼Ÿ\n */\n static isHND2ndTerminalNH159limit(flightDate: Date) {\n const limit = new Date(\"2023-09-02T00:00:00+09:00\");\n return isBefore(flightDate, limit);\n }\n\n /**\n * 羽田国際ã®ç‰¹å®šä¾¿åˆ°ç€æ™‚ã¯24時間å‰ä»¥å‰ã¯é‹è¡Œæƒ…å ±APIを見ãšã«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’確定ã•ã›ã‚‹\n * @param flightArrDate フライト到ç€æ™‚刻\n * @returns 24時間å‰ã‚’切ã£ã¦ã„ã‚‹ã‹ï¼Ÿ\n */\n static isHND2ndTerminalArr24Limit(flightArrDate: Date, now: Date = new Date()) {\n return flightArrDate.getTime() < addHours(now, 24).getTime();\n }\n\n /**\n * AM-858: TIS広告ãƒãƒŠãƒ¼è¡¨ç¤ºæ¡ä»¶\n * start: 2023/08/01\n * end: 2023/08/31\n * @param now\n * @returns\n */\n static isShowTISOkinawaBanner(now: Date = new Date()) {\n const start = new Date(\"2023-07-31T23:59:59+09:00\");\n const end = new Date(\"2023-09-01T00:00:00+09:00\");\n return isAfter(now, start) && isBefore(now, end)\n }\n}\n\n/**\n * HH:mmå½¢å¼ã®æ™‚刻ã®æ–‡å—列ã«ã™ã‚‹ã€‚\n * @param date 変æ›ã—ãŸã„Date型オブジェクト。\n */\nexport function formatToHHmm(date: Date) {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n return DateTime.JSTFormat(date, \"HH:mm\");\n}\n\n/**\n * Dateåž‹ã®ã‚ªãƒ–ジェクトを「yyyyMMddHHmmã€å½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列ã«ã™ã‚‹ã€‚\n * @param date 変æ›ã—ãŸã„オブジェクト。\n */\nexport function toyyyyMMddHHmm(date: Date) {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n return DateTime.JSTFormat(date, \"yyyyMMddHHmm\");\n}\n\n/**\n * yyyyMMddHHmmå½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列をDateåž‹ã«ãƒ‘ースã™ã‚‹ã€‚\n * @param dateString 「yyyyMMddHHmmã€å½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列。\n */\nexport function parseFromyyyyMMddHHmm(dateString: string) {\n return parse(dateString, 'yyyyMMddHHmm', new Date());\n}\n\n/**\n * 有効ãªDateåž‹ã®å€¤ã§ã‚ã‚‹ã‹ï¼ˆInvalid Dateã§ã¯ãªã„ã‹ï¼‰ã‚’判別ã™ã‚‹ã€‚\n * @param date 判別ã—ãŸã„Dateåž‹ã®å€¤ã€‚\n */\nexport function isValidDate(date: Date) {\n return date.toString() !== 'Invalid Date';\n}\n\n/**\n * Dateåž‹ã®åˆæœŸå€¤ï¼ˆ1970/01/01 00:00:00 UTC)ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param date 判別ã—ãŸã„Dateåž‹ã®å€¤ã€‚\n */\nexport function isInitialDate(date: Date) {\n return date.getTime() === 0;\n}\n\n/**\n * 言語è¨å®šã«å¿œã˜ãŸå¹´æœˆæ—¥ã®æ–‡å—列を返ã™ã€‚\n * @param date 探索画é¢ã§è¨å®šã—ãŸæ—¥ä»˜ã€‚\n */\nexport function getDate(date: Date, lang: string) {\n // タイムゾーンを'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n const formatString = (lang === 'en') ? 'MMMM do yyyy': 'yyyy/MM/dd';\n return DateTime.JSTFormat(date, formatString);\n}\n\n/**\n * 引数ã§æŒ‡å®šã—ãŸé–‹å§‹æ—¥ã¨çµ‚了日ã®é–“ã«ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * (経路ã«é–¢ã—ã¦é‹è¡Œæƒ…å ±ã‚’è¡¨ç¤ºã™ã‚‹ã‹ã‚’判別ã™ã‚‹éš›ã«åˆ©ç”¨ã™ã‚‹ã€‚2020/10/26ç¾åœ¨ã€‚)\n * @param startDate 開始日。\n * @param endDate 終了日。\n */\nexport function isIncludedToday(startDate: Date, endDate: Date) {\n const now = new Date();\n // 以下ã®2ã¤ã®æ¡ä»¶ã‚’ã¨ã‚‚ã«æº€ãŸã—ã¦ã„ã‚‹å ´åˆã«trueã‚’è¿”ã™ã€‚\n // 1. ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜ã¨é–‹å§‹æ—¥ãŒä¸€è‡´ã€ã¾ãŸã¯ã€ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜ãŒé–‹å§‹æ—¥ã‚ˆã‚Šå¾Œã®æ—¥ã§ã‚ã‚‹ã“ã¨ã€‚\n // 2. ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜ã¨çµ‚了日ãŒä¸€è‡´ã€ã¾ãŸã¯ã€ç¾åœ¨æ—¥æ™‚ã®æ—¥ä»˜ãŒçµ‚了日よりå‰ã®æ—¥ã§ã‚ã‚‹ã“ã¨ã€‚\n return (isSameDay(now, startDate) || isAfter(now, startDate)) && (isSameDay(now, endDate) || isBefore(now, endDate));\n}\n\nexport default DateTime;\n","export type AirlineList = 'ANA' | 'JAL' | 'IBX' | 'SJO' | 'APJ' | 'ADO' | 'JAC' | 'AMX' | 'SNJ' | 'FDA' | 'JJP' | 'ASV' | 'TWB' | 'CAL' | 'HKE';\n\ntype AirlineLetterCodesType = {\n [key in AirlineList]: string[];\n};\n\n/**\n * ANA以外ã®èˆªç©ºä¼šç¤¾ã«é–¢ã™ã‚‹ãƒ©ã‚¤ãƒ–ラリ\n */\nexport default class Airlines {\n /** å„航空会社ã¨2レター・3レターã®ä¸€è¦§ */\n static AirlineLetterCodes: AirlineLetterCodesType = {\n ANA: ['ANA', 'NH'],\n JAL: ['JAL', 'JL'],\n IBX: ['IBX', 'FW'],\n SJO: ['SJO', 'IJ'],\n APJ: ['APJ', 'MM'],\n ADO: ['ADO', 'HD'],\n JAC: ['JAC', 'JC'],\n AMX: ['AMX', 'AHX', 'MZ'],\n SNJ: ['SNJ', 'SNA', '6J'],\n FDA: ['FDA', 'JH'],\n JJP: ['GK', 'JJP'],\n ASV: ['RS', 'ASV'],\n TWB: ['TW', 'TWB'],\n CAL: ['CI', 'CAL'],\n HKE: ['UO', 'HKE'],\n }\n\n static AirlineNameList: {[key in AirlineList]: string } = {\n ANA: '全日本空輸',\n JAL: '日本航空',\n IBX: 'IBEXエアラインズ',\n SJO: 'SPRING JAPAN',\n APJ: 'Peach Aviation',\n ADO: 'AIRDO',\n JAC: '日本エアコミューター',\n AMX: '天è‰ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³',\n SNJ: 'ソラシドエア',\n FDA: 'フジドリームエアラインズ',\n JJP: 'ジェットスター',\n ASV: 'エアソウル',\n TWB: 'ティーウェイ航空',\n CAL: 'ãƒãƒ£ã‚¤ãƒŠã‚¨ã‚¢ãƒ©ã‚¤ãƒ³',\n HKE: '香港エクスプレス'\n }\n\n /**\n * 便åã®æ•°å—部分より特定ã®èˆªç©ºä¼šç¤¾ã®ã‚³ãƒ¼ãƒ‰ã‚·ã‚§ã‚¢ä¾¿ã‹ã‚’判定ã™ã‚‹\n */\n static isTargetAirlineCodeShare(codeNumber: number | string, startNumber: number, endNumber: number) {\n if(typeof codeNumber === 'string') {\n // 便åã‹ã‚‰ä¾¿ç•ªå·ã®ã¿ã‚’å–å¾—ã™ã‚‹ã€‚\n codeNumber = Number(codeNumber.replace(/[^0-9]/g,''));\n }\n return startNumber <= codeNumber && endNumber >= codeNumber;\n }\n\n /**\n * 便åã®æ•°å—部分よりã©ã®èˆªç©ºä¼šç¤¾ã®ã‚³ãƒ¼ãƒ‰ã‚·ã‚§ã‚¢ä¾¿ã‹ã‚’判定ã™ã‚‹\n * @param codeNumber\n */\n static getAirlineFrotmCodeShare(codeNumber: number | string): AirlineList {\n const CodeShareList = {\n APJ: {\n start: 4001,\n end: 4300 // TODO: 範囲ã«ã¤ã„ã¦ã¯è©³ç´°ãŒæ¥ãŸã‚‰ä¿®æ£ã™ã‚‹\n },\n AMX: {\n start: 4301,\n end: 4314,\n },\n JAC: {\n start: 4321,\n end: 4400\n }\n }\n /** Peach判定 */\n if(Airlines.isTargetAirlineCodeShare(codeNumber, CodeShareList.APJ.start, CodeShareList.APJ.end)) {\n return 'APJ';\n }\n /** 日本エアコミューター判定 */\n if(Airlines.isTargetAirlineCodeShare(codeNumber, CodeShareList.AMX.start, CodeShareList.AMX.end)) {\n return 'AMX';\n }\n /** 天è‰ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³åˆ¤å®š */\n if(Airlines.isTargetAirlineCodeShare(codeNumber, CodeShareList.JAC.start, CodeShareList.JAC.end)) {\n return 'JAC';\n }\n return 'ANA';\n }\n\n /** 便åよりã©ã®èˆªç©ºä¼šç¤¾ã‹ã‚’判別ã™ã‚‹ */\n static getAriline(flightNumber: string): AirlineList {\n /** 便åã®ç¯„囲よりCodeShare便ã‹ã‚’判定ã™ã‚‹ */\n const targetCodeShareAirline = Airlines.getAirlineFrotmCodeShare(flightNumber)\n if(targetCodeShareAirline !== 'ANA') {\n return targetCodeShareAirline;\n }\n /** NH1000 ã®ã‚ˆã†ã«ãƒ¬ã‚¿ãƒ¼ã‚³ãƒ¼ãƒ‰ï¼‹æ•°å—ã§æ¥ã‚‹ã®ã§ãƒ¬ã‚¿ãƒ¼ã‚³ãƒ¼ãƒ‰éƒ¨åˆ†ã¨æ•°å—部分を分離ã™ã‚‹ */\n const matchFlight = flightNumber.match(/^([A-Z]{2,3})(\\d+)$/);\n if(matchFlight && matchFlight.length > 2) {\n /** 抽出ã•ã‚ŒãŸãƒ¬ã‚¿ãƒ¼ã‚³ãƒ¼ãƒ‰ */\n const airlineLetterCode = matchFlight[1];\n /** AirlineLetterCodesよりã€ã©ã®èˆªç©ºä¼šç¤¾ã«å½“ãŸã‚‹ã®ã‹ã‚’判定ã™ã‚‹ */\n const marchAirline = Object.keys(Airlines.AirlineLetterCodes).find((airline)=>{\n const targetLetterCodes = Airlines.AirlineLetterCodes[<AirlineList>airline];\n return targetLetterCodes.includes(airlineLetterCode);\n })\n if(marchAirline) {\n return <AirlineList>marchAirline;\n }\n /** 一覧ã«ãªã„航空会社ã®å ´åˆã¯ANAã«ã™ã‚‹ */\n return 'ANA';\n }\n /** flightNumber連æºãŒãªã„ã¨ãã‚„ã€ç•°å¸¸å€¤ãŒå…¥ã£ãŸå ´åˆã«ã¯ANAã«ã™ã‚‹ */\n else {\n return 'ANA';\n }\n }\n\n /**\n * 検索画é¢ã‹ã‚‰çµæžœç”»é¢ã«é·ç§»ã™ã‚‹ã¨ãã«æ³¨æ„もーダルを表示ã™ã‚‹èˆªç©ºä¼šç¤¾ã‹ã‚’判別ã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isShowSearchNoticeModal(airline: AirlineList) {\n return ['APJ', 'SJO', 'AMX', 'JAC'].includes(airline)\n }\n\n /**\n * stringã‹ã‚‰AirlineListã«å¤‰æ›ã™ã‚‹\n * 対応ã—ã¦ãªã„航空会社ãŒå…¥ã‚Œã‚‰ã‚ŒãŸå ´åˆã«ã¯ANAã‚’è¿”ã™\n **/\n static convertAirline(airline: string): AirlineList {\n return <AirlineList>airline;\n // const list: string[] = Object.entries(AirlineList).map((x)=>{ return <string>x[1] })\n // if(list.includes(airline)) {\n // return <AirlineList>airline;\n // }\n // return 'ANA';\n }\n\n /**\n * æ乗便åを変更ã§ãる航空会社ã‹ã‚’判定ã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isAbleToChangeFlightNumber(airline: AirlineList) {\n const ableList = ['ANA'];\n return ableList.includes(airline);\n }\n\n /**\n * 日付を変更ã§ãる航空会社化を判定ã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isAbleToChangeDate(airline: AirlineList) {\n const ableList = ['ANA', 'IBX', 'SJO', 'ADO', 'JAL', 'SNJ', 'FDA', 'JJP'];\n return ableList.includes(airline);\n }\n\n /**\n * é‹è¡Œæƒ…å ±APIã‹ã‚‰ä¾¿æƒ…å ±ã‚’å–å¾—å¯èƒ½ãªèˆªç©ºä¼šç¤¾ã‹åˆ¤å®šã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isAbleToGetFlightInfo(airline: AirlineList) {\n const ableList = ['ANA', 'ADO', 'IBX', 'SNJ'];\n return ableList.includes(airline);\n }\n\n /**\n * 広告を表示ã™ã‚‹èˆªç©ºä¼šç¤¾ã‹ã‚’判æ–ã™ã‚‹\n * TODO: 今後ã¯èˆªç©ºä¼šç¤¾ã”ã¨ã«è¡¨ç¤ºã™ã‚‹åºƒå‘Šã‚’é¸åˆ¥ã™ã‚‹äºˆå®šãªã®ã§ãã®ã¨ãã¯åˆ¥é€”対応(2022/03/15)\n */\n static isShowAd(airline: AirlineList) {\n const showAdList = ['ANA', 'APJ', 'ADO', 'IBX', 'SNJ', 'ASV', 'TWB', 'CAL', 'HKE'];\n return showAdList.includes(airline);\n }\n\n /**\n * ヘッダーå³ä¸Šã®ãƒãƒ³ãƒãƒ¼ã‚¬ãƒ¼ãƒœã‚¿ãƒ³ã‚’表示ã™ã‚‹èˆªç©ºä¼šç¤¾ã‹ã‚’判æ–ã™ã‚‹\n */\n static isShowRightMenu(airline: AirlineList) {\n const showAdList = ['ANA', 'APJ', 'ADO', 'IBX'];\n return showAdList.includes(airline);\n }\n\n /**\n * 空港割引クーãƒãƒ³ã‚’表示ã™ã‚‹èˆªç©ºä¼šç¤¾ã‹ã‚’判æ–ã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isShowAirportCouponButton(airline: AirlineList) {\n const showAdList = ['ANA', 'APJ', 'ADO', 'SNJ'];\n return showAdList.includes(airline);\n }\n\n /**\n * ãƒãƒŠãƒ¼åºƒå‘Šã‚’表示ã™ã‚‹èˆªç©ºä¼šç¤¾ã‹ã‚’判æ–ã™ã‚‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isShowBannerAd(airline: AirlineList) {\n const showAdList = ['ANA', 'APJ', 'ADO', 'IBX', 'SNJ', 'ASV', 'TWB', 'CAL', 'HKE'];\n return showAdList.includes(airline);\n }\n\n /**\n * 駅ã™ã±ã‚ã¨ã®ç©ºè·¯æ™‚åˆ»è¡¨ã‚ˆã‚Šç©ºè·¯æƒ…å ±ã‚’å–å¾—ã—ãªã„航空会社ã‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns\n */\n static isNotGetTimeTablePlane(airline: AirlineList) {\n const showAdList = ['APJ', 'ADO', 'JAC', 'AMX', 'ASV', 'TWB', 'CAL', 'HKE'];\n return showAdList.includes(airline);\n }\n\n /**\n * ä¿å®‰æ¤œæŸ»å ´é€šéŽæ™‚刻を表示ã—ãªã„事æ¥è€…ã‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\n static isDisableSecurityGateDate(airline: AirlineList) {\n const target = ['SJO', 'ASV', 'TWB', 'CAL', 'HKE'];\n return target.includes(airline);\n }\n\n /**\n * æä¹—å£ç· ã‚切り時間時刻を表示ã—ãªã„事æ¥è€…ã‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\n static isDisableBoardingGateDate(airline: AirlineList) {\n const target = ['ASV', 'TWB', 'CAL', 'HKE'];\n return target.includes(airline);\n }\n\n /**\n * ANA APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹éš›ã«ä½¿ç”¨ã™ã‚‹èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ï¼ˆ2æ–‡å—)をå–å¾—ã™ã‚‹ã€‚\n * @param 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n * @returns 航空会社コード。\n */\n static getAirlineCode(airline: AirlineList) {\n const targetLetterCodes = Airlines.AirlineLetterCodes[airline];\n if(targetLetterCodes) {\n return targetLetterCodes.find((x) => {\n return x.length === 2;\n })\n }\n return '';\n }\n\n /**\n * å„種連æºã‚µãƒ¼ãƒ“スã«é·ç§»ã™ã‚‹éš›ã«é€£æºã™ã‚‹èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ï¼ˆ3æ–‡å—)をå–å¾—ã™ã‚‹ã€‚\n * @param isAirdo AIRDO便ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @returns 3æ–‡å—ã®èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ã€‚\n */\n static getAirlineThreeLetterCode(airline: AirlineList): string {\n const targetLetterCodes = Airlines.AirlineLetterCodes[airline];\n if(targetLetterCodes) {\n return targetLetterCodes.find((x) => {\n return x.length === 3;\n }) || '';\n }\n return '';\n }\n\n /**\n * æˆç”°ç©ºæ¸¯ã§ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’使用ã™ã‚‹å¯èƒ½æ€§ãŒã‚る事æ¥è€…ã‹ã©ã†ã‹\n */\n static isUseNRTThirdTerminal(airline: AirlineList) {\n const targetAirline = ['SJO'];\n return targetAirline.includes(airline);\n }\n\n /**\n * æä¹—å£ã§ç· ã‚切り時間20分å‰ã‹ã‚’判別ã™ã‚‹ã‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\n static isBordingGate20min(airline: AirlineList) {\n const targetAirline = ['SJO', 'APJ'];\n return targetAirline.includes(airline);\n }\n\n /**\n * 空港内マップを表示ã™ã‚‹ã‹\n * @param airline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\n static isShowAirportMap(airline: AirlineList) {\n const targetAirline = ['ANA', 'APJ'];\n return targetAirline.includes(airline);\n }\n\n /**\n * 全画é¢å…±é€šã®æ³¨æ„äº‹é …ã§é‹èˆªæƒ…å ±ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param airlineCode 航空会社ã®3æ–‡å—ã®ã‚³ãƒ¼ãƒ‰ã€‚\n * @returns é‹èˆªæƒ…å ±ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹å ´åˆã¯trueã‚’è¿”ã™ã€‚\n */\n static isShowFlightStatusLink(airlineCode: AirlineList) {\n // AIRDOã€æ—¥æœ¬ã‚¨ã‚¢ã‚³ãƒŸãƒ¥ãƒ¼ã‚¿ãƒ¼ã€å¤©è‰ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ã®å ´åˆã¯è¡¨ç¤ºã—ãªã„。\n return airlineCode !== 'ADO' && airlineCode !== 'JAC' && airlineCode !== 'AMX';\n }\n}\n","export interface Airport {\n 'path': string,\n 'anchor': {\n 'arr': string,\n 'dep': string\n }\n}\n\nexport const AirportMapPath: { [key:string]: Airport; } = {\n // 羽田空港第1ターミナル\n \"HND_1\": {\n 'path': 'hnd.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor001'\n }\n },\n // 羽田空港第2ターミナル\n \"HND_2\": {\n 'path': 'hnd02.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor001'\n }\n },\n // æˆç”°ç©ºæ¸¯\n 'NRT': {\n 'path': 'nrt.html',\n 'anchor': {\n 'arr': '#floor001',\n 'dep': '#floor003'\n }\n },\n // 稚内空港\n 'WKJ': {\n 'path': 'wkj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 利尻空港\n 'RIS': {\n 'path': 'ris.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // オホーツク紋別空港\n 'MBE': {\n 'path': 'mbe.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 女満別空港\n 'MMB': {\n 'path': 'mmb.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': {\n 'path': 'shb.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // æ—å·ç©ºæ¸¯\n 'AKJ': {\n 'path': 'akj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 釧路空港\n 'KUH': {\n 'path': 'kuh.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 帯広空港\n 'OBO': {\n 'path': 'obo.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // æ–°åƒæ³ç©ºæ¸¯\n 'CTS': {\n 'path': 'spk.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor001'\n }\n },\n // æ–°åƒæ³ç©ºæ¸¯\n // (ANA APIã‹ã‚‰ã¯æ–°åƒæ³ç©ºæ¸¯ã®ã‚³ãƒ¼ãƒ‰ã¨ã—ã¦ã€ŒSPKã€ãŒè¿”ã£ã¦ãã‚‹ãŸã‚。\n // 丘ç 空港ã¯ANAãŒå°±èˆªã—ã¦ã„ãªã„ãŸã‚ã€ã€ŒSPKã€ã‚‚æ–°åƒæ³ç©ºæ¸¯ã¨ã—ã¦æ‰±ã†ã€‚)\n 'SPK': {\n 'path': 'spk.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor001'\n }\n },\n // 函館空港\n 'HKD': {\n 'path': 'hkd.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // é’森空港\n 'AOJ': {\n 'path': 'aoj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 大館能代空港\n 'ONJ': {\n 'path': 'onj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 秋田空港\n 'AXT': {\n 'path': 'axt.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 庄内空港\n 'SYO': {\n 'path': 'syo.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ä»™å°ç©ºæ¸¯\n 'SDJ': {\n 'path': 'sdj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 新潟空港\n 'KIJ': {\n 'path': 'kij.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': {\n 'path': 'fks.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 八丈島空港\n 'HAC': {\n 'path': 'hac.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // é™å²¡ç©ºæ¸¯\n 'FSZ': {\n 'path': 'fsz.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': {\n 'path': 'ngo02.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor001'\n }\n },\n // 伊丹空港\n 'ITM' : {\n 'path': 'itm.html',\n 'anchor': {\n 'arr': '#floor001',\n 'dep': '#floor002'\n }\n },\n // 関西空港(大阪)\n 'KIX': {\n 'path': 'kix.html',\n 'anchor': {\n 'arr': '#floor002',\n 'dep': '#floor002'\n }\n },\n // 神戸空港\n 'UKB': {\n 'path': 'ukb.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 徳島空港\n 'TKS': {\n 'path': 'tks.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 高æ¾ç©ºæ¸¯\n 'TAK': {\n 'path': 'tak.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 岡山空港\n 'OKJ': {\n 'path': 'okj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 高知空港\n 'KCZ': {\n 'path': 'kcz.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': {\n 'path': 'myj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 広島空港\n 'HIJ': {\n 'path': 'hij.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 岩国空港\n 'IWK': {\n 'path': 'iwk.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 富山空港\n 'TOY': {\n 'path': 'toy.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 能登空港\n 'NTQ': {\n 'path': 'ntq.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // å°æ¾ç©ºæ¸¯\n 'KMQ': {\n 'path': 'kmq.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // é³¥å–空港\n 'TTJ': {\n 'path': 'ttj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ç±³å空港\n 'YGJ': {\n 'path': 'ygj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': {\n 'path': 'iwj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': {\n 'path': 'ubj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': {\n 'path': 'kkj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 対馬空港\n 'TSJ': {\n 'path': 'tsj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 壱å²ç©ºæ¸¯\n 'IKI': {\n 'path': 'iki.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ç¦å²¡ç©ºæ¸¯\n 'FUK': {\n 'path': 'fuk.html',\n 'anchor': {\n 'arr': '#floor004',\n 'dep': '#floor004'\n }\n },\n // 長崎空港\n 'NGS': {\n 'path': 'ngs.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': {\n 'path': 'fuj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // ä½è³€ç©ºæ¸¯\n 'HSG': {\n 'path': 'hsg.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 熊本空港\n 'KMJ': {\n 'path': 'kmj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 鹿å…島空港\n 'KOJ': {\n 'path': 'koj.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 宮崎空港\n 'KMI': {\n 'path': 'kmi.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 大分空港\n 'OIT': {\n 'path': 'oit.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 那覇空港\n 'OKA': {\n 'path': 'oka.html',\n 'anchor': {\n 'arr': '#floor003',\n 'dep': '#floor001'\n }\n },\n // å®®å¤ç©ºæ¸¯\n 'MMY': {\n 'path': 'mmy.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n // 石垣空港\n 'ISG': {\n 'path': 'isg.html',\n 'anchor': {\n 'arr': '',\n 'dep': ''\n }\n },\n}\n","/**\n * ANA APIã«é–¢ã™ã‚‹ç‹¬è‡ªã®å‡¦ç†ã‚’ã¾ã¨ã‚ãŸã‚¯ãƒ©ã‚¹ã€‚\n */\nexport default class AnaUtil {\n static readonly HND_TERMINAL_1_KEY = 'terminal_1';\n static readonly HND_TERMINAL_2_KEY = 'terminal_2';\n static readonly FUK_TERMINAL_NORTH_KEY = 'north';\n static readonly FUK_TERMINAL_SOUTH_KEY = 'south';\n /**\n * 空港コードをè¨å®šã™ã‚‹ã€‚(一般的ã«åˆ©ç”¨ã—ãªã„空港コードã§ã‚ã‚‹å ´åˆã€é©å®œå¤‰æ›ã™ã‚‹ã€‚)\n * @param code 3レターã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã€‚\n */\n static setAirportCode(code: string) {\n switch(code) {\n // 「TYOã€ã®å ´åˆã¯ã€ŒHNDã€ï¼ˆç¾½ç”°ï¼‰ã¨ã—ã¦æ‰±ã†ã€‚\n case 'TYO':\n return 'HND';\n // 「SPKã€ã®å ´åˆã¯ã€ŒCTSã€ï¼ˆæ–°åƒæ³ï¼‰ã¨ã—ã¦æ‰±ã†ã€‚\n case 'SPK':\n return 'CTS';\n default:\n return code;\n }\n }\n\n /**\n * 羽田空港ã®ç¬¬1ターミナルã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param terminal æ乗便ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å称。\n */\n static isTeminal1InHaneda(terminal: string) {\n // ターミナルåã«ã€Œç¬¬1ターミナルã€ãƒ»ã€ŒTerminal 1ã€ã‚’å«ã‚“ã§ã„ã‚‹å ´åˆã€ã¾ãŸã¯ã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒã€Œ1ã€ã§ã‚ã‚‹å ´åˆã¯trueã‚’è¿”ã™ã€‚\n return terminal.includes('第1ターミナル') || terminal.includes('Terminal 1') || terminal === '1';\n }\n}\n\n/**\n * 国内線ã®ç¾½ç”°ç©ºæ¸¯ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã®i18nã®ã‚ーをå–å¾—ã™ã‚‹ã€‚\n * @param terminal ANAã®é‹èˆªæƒ…å ±APIã‹ã‚‰å–å¾—ã€ã¾ãŸã¯ãƒ‘ラメーター連æºã•ã‚ŒãŸç¾½ç”°ç©ºæ¸¯ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å。\n */\nexport function getTerminalKeyDomInHND(terminal: string) {\n // 到ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«ã€Œ1ã€ã‚’å«ã‚“ã§ã„ã‚Œã°ç¬¬1ターミナルã€ãれ以外ã¯ç¬¬2ターミナルã¨ã™ã‚‹ã€‚\n return terminal.includes('1') ? AnaUtil.HND_TERMINAL_1_KEY : AnaUtil.HND_TERMINAL_2_KEY;\n}\n\n/**\n * 空港コードãŒç¾½ç”°ç©ºæ¸¯ã®ã‚‚ã®ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param airportCode 3レターã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã€‚\n * TODO: airportNameã®å¼•æ•°ã‚’マストã«ã™ã‚‹\n */\nexport function isHND(airportCode: string, airportName: string = \"Haneda\") {\n return airportCode === 'HND' || (airportCode === 'TYO' && airportName.includes('Haneda'));\n}\n\n/**\n * 国内線ã®ç¦å²¡ç©ºæ¸¯ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã®i18nã®ã‚ーをå–å¾—ã™ã‚‹ã€‚\n * @param terminal ターミナルå。\n */\nexport function getTerminalKeyDomInFUK(terminal: string) {\n let key = '';\n // ç¦å²¡ç©ºæ¸¯ã®åŒ—å´ã«åˆ°ç€ã™ã‚‹å ´åˆã¯åŒ—å´ã®ã‚ーをè¨å®šã™ã‚‹ã€‚\n if (isNorthTerminalInFUK(terminal)) { key = AnaUtil.FUK_TERMINAL_NORTH_KEY; }\n // ç¦å²¡ç©ºæ¸¯ã®å—å´ã«åˆ°ç€ã™ã‚‹å ´åˆã¯å—å´ã®ã‚ーをè¨å®šã™ã‚‹ã€‚\n if (isSouthTerminalInFUK(terminal)) { key = AnaUtil.FUK_TERMINAL_SOUTH_KEY; }\n return key;\n}\n\n/**\n * ç¦å²¡ç©ºæ¸¯ã®åŒ—ターミナルã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param terminal ターミナルå。\n */\nexport function isNorthTerminalInFUK(terminal: string) {\n return terminal.includes('北') || terminal.includes('North');\n}\n\n/**\n * ç¦å²¡ç©ºæ¸¯ã®å—ターミナルã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param terminal ターミナルå。\n */\nexport function isSouthTerminalInFUK(terminal: string) {\n return terminal.includes('å—') || terminal.includes('South');\n}\n","import { AirportMapPath } from \"../../../../services/ana/data/airportMapPath\";\nimport FlightInfo from \"../../../../services/ana/models/flightInfo\";\nimport { Lang } from \"../../../../states/query\";\nimport AnaUtil, { isHND } from \"../../../../utils/ana\";\n\n/** 空港マップを扱ã†ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class AirportMap {\n /** 日本語版ã®å›½å†…ç·šã®ç©ºæ¸¯ãƒžãƒƒãƒ—ã®ãƒ™ãƒ¼ã‚¹URL。 */\n static readonly DOMESTIC_JA_BASE_URL = 'https://www.ana.co.jp/ja/jp/domestic/departure/airport/map/';\n /** 英語版ã®å›½å†…ç·šã®ç©ºæ¸¯ãƒžãƒƒãƒ—ã®ãƒ™ãƒ¼ã‚¹URL。 */\n static readonly DOMESTIC_EN_BASE_URL = 'https://www.ana.co.jp/en/jp/domestic/departure/airport/map/';\n /** 日本語版ã®å›½éš›ç·šã®ç©ºæ¸¯ãƒžãƒƒãƒ—ã®ãƒ™ãƒ¼ã‚¹URL。 */\n static readonly INTERNATIONAL_JA_BASE_URL = 'https://www.ana.co.jp/ja/jp/international/departure/airport/map/';\n /** 英語版ã®å›½éš›ç·šã®ç©ºæ¸¯ãƒžãƒƒãƒ—ã®ãƒ™ãƒ¼ã‚¹URL。 */\n static readonly INTERNATIONAL_EN_BASE_URL = 'https://www.ana.co.jp/en/jp/international/departure/airport/map/';\n /** 空港内マップURLã®è¾žæ›¸ãƒ‡ãƒ¼ã‚¿ã§åˆ°ç€ãƒãƒ“ーã®ã‚¢ãƒ³ã‚«ãƒ¼ãƒªãƒ³ã‚¯ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ã‚ー。 */\n static readonly ARRIVAL_KEY = 'arr';\n /** 空港内マップURLã®è¾žæ›¸ãƒ‡ãƒ¼ã‚¿ã§ç¾½ç”°ç©ºæ¸¯ç¬¬1ターミナルã®ãƒ‘スをå‚ç…§ã™ã‚‹ãŸã‚ã®ã‚ー。 */\n static readonly HND_1_KEY = 'HND_1';\n /** 空港内マップURLã®è¾žæ›¸ãƒ‡ãƒ¼ã‚¿ã§ç¾½ç”°ç©ºæ¸¯ç¬¬2ターミナルã®ãƒ‘スをå‚ç…§ã™ã‚‹ãŸã‚ã®ã‚ー。 */\n static readonly HND_2_KEY = 'HND_2';\n /** 空港コード。 */\n airportCode: string;\n /** 空港å。 */\n airportName: string;\n /** ターミナルå。 */\n terminal: string;\n\n /**\n * コンストラクタ。\n * @param airportCode 空港コード。\n * @param airportName 空港å。\n * @param terminal ターミナルå。\n */\n constructor(airportCode: string, airportName: string, terminal: string) {\n this.airportCode = airportCode;\n this.airportName = airportName;\n this.terminal = terminal;\n }\n\n /**\n * 国内線ã®åˆ°ç€ç©ºæ¸¯ã®ãƒžãƒƒãƒ—ã®URLã‚’å–å¾—ã™ã‚‹ã€‚\n * @param lang 言語è¨å®šã€‚(日本語版ã¾ãŸã¯è‹±èªžç‰ˆï¼‰\n */\n public getDomesticArrivalUrl(lang: string, isDepAirport: boolean) {\n const anchorPath = isDepAirport? 'dep': 'arr';\n let airportCode = this.airportCode;\n // 国内線ã®ç¾½ç”°ç©ºæ¸¯ã®å ´åˆã€æ¡ˆå†…ページãŒã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã”ã¨ã«åˆ†ã‹ã‚Œã‚‹ãŸã‚ã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«å¿œã˜ã¦ã‚ーをè¨å®šã™ã‚‹ã€‚\n if (isHND(this.airportCode, this.terminal)) {\n airportCode = this.getKeyByTerminalInHaneda();\n }\n if(AirportMapPath[airportCode]) {\n // æˆç”°ç©ºæ¸¯ç¬¬3ターミナルã®å ´åˆã«ã¯ä½•ã‚‚表示ã—ãªã„\n if(this.airportCode === 'NRT' && FlightInfo.terminalCheck(3, this.terminal)) {\n return '';\n }\n // 空港コードã«å¿œã˜ã¦ãƒ‘スをè¨å®šã™ã‚‹ã€‚\n const path = AirportMapPath[airportCode]['path'];\n // 到ç€ãƒãƒ“ー用ã®ã‚¢ãƒ³ã‚«ãƒ¼ãƒªãƒ³ã‚¯ã‚’è¨å®šã™ã‚‹ã€‚\n const anchor = AirportMapPath[airportCode]['anchor'][anchorPath];\n // 言語è¨å®šãŒè‹±èªžã§ã‚ã‚Œã°è‹±èªžã®ã€ãれ以外ã®å ´åˆã¯æ—¥æœ¬èªžã®ãƒ™ãƒ¼ã‚¹URLã‚’è¨å®šã™ã‚‹ã€‚\n const baseUrl = (lang === Lang.en) ? AirportMap.DOMESTIC_EN_BASE_URL : AirportMap.DOMESTIC_JA_BASE_URL;\n return baseUrl + path + anchor;\n }\n return '';\n }\n\n /** 羽田空港ã®ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åˆ¥ã®ã‚ー(空港内マップURLã®è¾žæ›¸ãƒ‡ãƒ¼ã‚¿ã®ã‚ー)をå–å¾—ã™ã‚‹ã€‚ */\n getKeyByTerminalInHaneda() {\n // 第1ターミナルã§ã‚ã‚‹å ´åˆã¯ç¬¬1ターミナルã®ã‚ーをã€ãれ以外ã®å ´åˆã¯ç¬¬2ターミナルã®ã‚ーを返ã™ã€‚\n return AnaUtil.isTeminal1InHaneda(this.terminal) ? AirportMap.HND_1_KEY : AirportMap.HND_2_KEY;\n }\n}\n","import { Flight, FSList } from \"../models\";\nimport { addDays, format, isSameDay } from \"date-fns\";\nimport { ArrivalGateToStation } from './../data/arrivalGateToStation';\nimport { ArrivalGateToStationInt } from './../data/arrivalGateToStationInt';\nimport { AirportMapPath } from './../data/airportMapPath';\nimport { AirportMapPathInt } from './../data/airportMapPathInt';\n\nimport { BusGates } from '../data/busGates';\nimport { SatelliteGates } from '../data/satelliteGates';\nimport { Query, Lang } from \"../../../states/query\";\n\nimport DateTime from '../../../utils/dateTime';\nimport Airlines, { AirlineList } from \"../../../utils/Airlines\";\nimport { TimeTableLine } from \"../../ekispert/models/planeTimetable\";\nimport AirportMap from \"../../../components/result/DepartureGuide/ToArrivalGuide/AirportMap\";\nimport { zonedTimeToUtc } from \"date-fns-tz\";\n\n/**\n * 到ç€æ¡ˆå†…時ã«æ乗便到ç€ã‚²ãƒ¼ãƒˆã‹ã‚‰æœ€å¯„ã‚Šã®å…¬å…±äº¤é€šæ©Ÿé–¢ã¾ã§ã®æ‰€è¦æ™‚é–“ã‚’è¨å®šã™ã‚‹ç©ºæ¸¯ã®ã‚³ãƒ¼ãƒ‰ã€‚(2020/01/23ç¾åœ¨ï¼‰\n */\nconst SPECFIED_AIRPORTS_INT = ['HND', 'NRT', 'KIX', 'TYO'];\n\n/** 対象ã®ä¾¿ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’表ã™å®šæ•°ã€‚ */\nenum Status {\n /** 通常é‹èˆª */\n Normal = 0,\n /** é…延 */\n Delay = 1,\n /** æ¬ èˆª */\n Canceled = 2,\n /** å–å¾—ã§ããªã‹ã£ãŸå ´åˆãªã©ä¸æ˜Žã®å ´åˆã€‚ */\n Unknown = 3,\n}\n\n/** ANA API英語版ã‹ã‚‰è¿”å´ã•ã‚Œã‚‹æœˆå称(MMMå½¢å¼ï¼‰ã«å¯¾å¿œã™ã‚‹æœˆã®æ•°å—を定義ã—ãŸé€£æƒ³é…列。 */\nconst monthNames: { [key: string]: number } = {\n 'JAN': 1,\n 'FEB': 2,\n 'MAR': 3,\n 'APR': 4,\n 'MAY': 5,\n 'JUN': 6,\n 'JUL': 7,\n 'AUG': 8,\n 'SEP': 9,\n 'OCT': 10,\n 'NOV': 11,\n 'DEC': 12,\n}\n\nclass FlightInfo {\n flightNumber: string;\n hasData: boolean;\n isDomestic: boolean;\n etd: Date;\n eta: Date;\n atd: Date;\n ata: Date;\n userDate: Date;\n depAirportCode: string;\n arrAirportCode: string;\n depAirportName: string;\n arrAirportName: string;\n bordingGate: string;\n securtyCheckPoint: string;\n depTerminal: string;\n arrTerminal: string;\n exit: string;\n errorMessage: string | null;\n lang: string;\n /** æä¹—å£ã‹ã‚‰ãƒã‚¹åˆ©ç”¨ã®ãƒ•ãƒ©ã‚°ã€‚ */\n useBusToBoard: boolean;\n /** æä¹—å£ã‹ã‚‰ã‚µãƒ†ãƒ©ã‚¤ãƒˆã¸ç§»å‹•ã™ã‚‹ãŸã‚ã®ãƒã‚¹åˆ©ç”¨ã®ãƒ•ãƒ©ã‚°ã€‚ */\n useSatelliteBus: boolean;\n remarks: string;\n status: Status;\n /** é‹è¡Œæƒ…å ±APIã‹ã‚‰è¿”ã•ã‚ŒãŸåˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ± */\n apiArrTerminal: string;\n /** 到ç€æ¡ˆå†…ã®å ´åˆã«ãƒ•ã‚©ãƒ¼ãƒ 上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã¨å–å¾—ã—ãŸåˆ°ç€æ—¥ãŒç•°ãªã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isDifferentArrivalDate: boolean;\n /** ç©ºæ¸¯å†…ãƒžãƒƒãƒ—æƒ…å ± */\n airportMap: {\n dep: AirportMap,\n arr: AirportMap\n }\n /** èˆªç©ºä¼šç¤¾æƒ…å ± */\n targetAirLine: AirlineList\n\n constructor(flight?: Flight, date?: Date, lang: string = Lang.ja, targetAirLine: AirlineList = 'ANA') {\n this.hasData = (flight && flight.data !== null) ? true : false;\n const dummy: any = {};\n const fsList: FSList = flight && flight.data? flight.data.fsList[0] : dummy;\n this.isDomestic = flight ? flight.request.site === 'DOM' : false;\n const defaultTime = new Date(0);\n const flightNumber = flight? flight.request.flightNumber: '';\n\n // ユーザãŒå…¥åŠ›ã—ãŸæ™‚刻\n this.userDate = date || defaultTime;\n this.etd = (fsList.skdDepTime && fsList.skdDepMonth && fsList.skdDepDay && date) ? this.setTime(fsList.skdDepTime, fsList.skdDepMonth, fsList.skdDepDay, date) : defaultTime;\n this.eta = (fsList.skdArrTime && fsList.skdArrMonth && fsList.skdArrDay && date) ? this.setTime(fsList.skdArrTime, fsList.skdArrMonth, fsList.skdArrDay, date) : defaultTime;\n this.atd = (fsList.actDepTime && fsList.actDepMonth && fsList.actDepDay && date) ? this.setTime(fsList.actDepTime, fsList.actDepMonth, fsList.actDepDay, date) : defaultTime;\n this.ata = (fsList.actArrTime && fsList.actArrMonth && fsList.actDepDay && date) ? this.setTime(fsList.actArrTime, fsList.actArrMonth, fsList.actArrDay, date) : defaultTime;\n this.flightNumber = flightNumber;\n this.depAirportCode = fsList ? fsList.depAirportCode : '';\n this.arrAirportCode = fsList ? fsList.arrAirportCode : '';\n this.depAirportName = fsList ? fsList.depAirport : '';\n this.arrAirportName = fsList ? fsList.arrAirport : '';\n this.bordingGate = fsList ? this.getBordingGate(fsList.bordingGate) : '';\n this.securtyCheckPoint = (fsList && flight) ? this.getSecurtyCheckPoint(fsList.bordingGate, fsList.depAirportCode, fsList.depAirport, flight.request.site, fsList.depTerminal, lang) : '';\n this.depTerminal = fsList? this.getDepTerminal(fsList.bordingGate, fsList.depAirportCode, fsList.depTerminal) : '';\n this.arrTerminal = fsList? this.getArrTerminal(fsList.arrTerminal) : '';\n this.apiArrTerminal = this.arrTerminal;\n this.exit = fsList ? this.getExit(fsList.arrTerminal) : '';\n this.errorMessage = (flight && flight.result.status === 'ERROR') ? flight.result.message : '';\n this.lang = lang;\n this.useBusToBoard = fsList ? this.checkBusToBoard(this.getBordingGate(fsList.bordingGate)) : false;\n this.useSatelliteBus = fsList ? this.checkSatelliteGates(fsList.depAirportCode, this.getBordingGate(fsList.bordingGate)) : false;\n this.remarks = fsList ? this.modifyRemarks(fsList.remarks) : '';\n this.status = (fsList && flight) ? this.getStatus(fsList.remarks, fsList.actDepTime, flight.request.site) : Status.Unknown;\n this.isDifferentArrivalDate = false;\n this.airportMap = this.getAirportMap();\n this.targetAirLine = targetAirLine;\n }\n\n /** 空港内マップを更新ã™ã‚‹ */\n getAirportMap() {\n return {\n dep: new AirportMap(this.depAirportCode, this.depAirportName, this.depTerminal),\n arr: new AirportMap(this.arrAirportCode, this.arrAirportName, this.arrTerminal)\n }\n }\n\n public updateByQuery(query: Query){\n /** é‹è¡Œæƒ…å ±APIã‚ˆã‚Šæƒ…å ±ãŒå–ã‚Œãªã„å ´åˆã®ã¿ã‚¯ã‚¨ãƒªã‹ã‚‰å†…際判定を行ㆠ*/\n if(!this.hasData) {\n this.isDomestic = query.isDomestic;\n }\n this.depAirportCode = this.depAirportCode || query.fromAirportCode;\n this.arrAirportCode = this.arrAirportCode || query.toAirportCode ;\n this.depAirportName = this.depAirportName || query.depAirport;\n this.arrAirportName = this.arrAirportName || query.arrAirport;\n this.arrTerminal = this.arrTerminal || query.toTerminal;\n this.depTerminal = this.depTerminal || query.fromTerminal;\n if(this.etd.getTime() === 0) {\n this.etd = query.std || this.etd;\n }\n if(this.eta.getTime() === 0) {\n this.eta = query.sta || this.eta;\n }\n // ã‚¯ã‚¨ãƒªã‚ˆã‚Šå¿…é ˆè¦ç´ ãŒå–ã‚Œã¦ã„ã‚‹ãªã‚‰hasDataã‚’trueã«ã™ã‚‹\n this.hasData = true;\n this.airportMap = this.getAirportMap();\n }\n\n // é‹è¡Œæƒ…å ±ã‚’å–å¾—ã§ããªã„航空会社ã®å ´åˆã€æ—¥ä»˜ã‚’変ãˆãŸå ´åˆã§ã‚‚発ç€ç©ºæ¸¯ã ã‘ã¯å¤‰æ›´ã™ã‚‹\n public updatePartialQuery(query: Query, flightNumber: string) {\n this.flightNumber = flightNumber;\n this.depAirportCode = this.depAirportCode || query.fromAirportCode;\n this.arrAirportCode = this.arrAirportCode || query.toAirportCode ;\n this.depAirportName = this.depAirportName || query.depAirport;\n this.arrAirportName = this.arrAirportName || query.arrAirport;\n // TODO: 日付変ãˆãŸå ´åˆã§ã‚‚ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ã¯ãã®ã¾ã¾ã§ã„ã„ã®ã‹ï¼Ÿ\n this.arrTerminal = this.arrTerminal || query.toTerminal;\n this.depTerminal = this.depTerminal || query.fromTerminal;\n this.isDomestic = query.isDomestic === undefined? true: query.isDomestic;\n // ã‚¯ã‚¨ãƒªã‚ˆã‚Šå¿…é ˆè¦ç´ ãŒå–ã‚Œã¦ã„ã‚‹ãªã‚‰hasDataã‚’trueã«ã™ã‚‹\n this.hasData = true;\n this.airportMap = this.getAirportMap();\n }\n\n /**\n * スターフライヤー便ã§HND発ç€ã®å ´åˆã¯ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«è¿½åŠ 処ç†ã‚’åŠ ãˆã‚‹\n */\n public updateHNDTerminalBySFJ() {\n const airportList = [this.depAirportCode, this.arrAirportCode];\n const HNDAirportCodeList = ['HND', 'TYO'];\n // 出発地・到ç€åœ°ã„ãšã‚Œã‹ãŒHNDã§ã¯ãªã„å ´åˆã¯å‡¦ç†ã‚’è¡Œã‚ãªã„\n if( airportList.includes(HNDAirportCodeList[0]) || airportList.includes(HNDAirportCodeList[1]) ) {\n if(HNDAirportCodeList.includes(this.depAirportCode)) {\n this.depTerminal = this.depTerminal || this.setConsiderationSFJTerminalHND(this.arrAirportCode, this.etd);\n } else {\n this.arrTerminal = this.arrTerminal || this.setConsiderationSFJTerminalHND(this.depAirportCode, this.eta);\n }\n }\n }\n\n /** 国内線ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’æ›´æ–°ã™ã‚‹ã€‚ */\n setIsDomestic(value: boolean) {\n this.isDomestic = value;\n }\n\n /** ç©ºè·¯æ™‚åˆ»è¡¨æƒ…å ±ã‚ˆã‚Šç™ºç€æ™‚刻を更新ã™ã‚‹ */\n updateTimeTableLine(depDate: Date, line: TimeTableLine) {\n const yyyymmmddStr = DateTime.JSTFormat(depDate, \"yyyy-MM-dd\");\n const etdHHMMSSStr = line.DepartureState.Datetime.text;\n const etaHHMMSSStr = line.ArrivalState.Datetime.text;\n this.etd = new Date(`${yyyymmmddStr}T${etdHHMMSSStr}`);\n this.eta = new Date(`${yyyymmmddStr}T${etaHHMMSSStr}`);\n if(line.DepartureState.Datetime.operation === 'yesterday') {\n this.etd = addDays(this.etd, 1);\n }\n if(line.ArrivalState.Datetime.operation === 'yesterday') {\n this.eta = addDays(this.eta, 1);\n }\n }\n\n /** フォーム上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã¨å®šåˆ»ã®åˆ°ç€æ—¥ä»˜ãŒç•°ãªã‚‹ã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚ */\n setIsDifferentArrivalDate(date: Date) {\n // åŒã˜æ—¥ã§ã‚ã‚Œã°falseã‚’è¨å®šã—ã€åˆ¥ã®æ—¥ã§ã‚ã‚Œã°trueã‚’è¨å®šã™ã‚‹ã€‚\n this.isDifferentArrivalDate = isSameDay(date, this.eta) ? false : true;\n }\n\n public statusCheck() {\n if (this.etd.getTime() === 0 || this.eta.getTime() === 0){\n throw new Error('計画出発・到ç€æ™‚é–“ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“');\n }\n // クエリã‹ANA APIã‹ã©ã¡ã‚‰ã‹ã®ãƒ‡ãƒ¼ã‚¿ãŒå…¥ã£ã¦ã„ã‚‹ã‹ãƒã‚§ãƒƒã‚¯\n const checkList:Array<string> = ['depAirportCode', 'arrAirportCode', 'depAirportName', 'arrAirportName'];\n const thisInfo:any = this;\n for(const obj of checkList){\n if(thisInfo[obj] === ''){\n throw new Error(`å¿…é ˆè¦ç´ : ${obj} ãŒç©ºã§ã™`);\n }\n }\n }\n\n getHour(time: string): string {\n return time.split(':')[0];\n }\n\n getMinutes(time: string): string {\n return time.split(':')[1];\n }\n\n setTime(time: string, month: string, day: string, date: Date) {\n const hour = this.getHour(time);\n const minutes = this.getMinutes(time);\n // Dateåž‹ã®åˆæœŸåŒ–ã§æŒ‡å®šã™ã‚‹æœˆã®éƒ¨åˆ†ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ï¼ˆ0始ã¾ã‚Šï¼‰ã®ãŸã‚ã€å®Ÿéš›ã®æœˆã®ç•ªå·ã‹ã‚‰-1ã‚’ã™ã‚‹ã€‚\n // (英語版ã®å ´åˆã€æœˆéƒ¨åˆ†ãŒMMM(月ã®3æ–‡å—ã®ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆï¼‰å½¢å¼ã§è¿”å´ã•ã‚Œã‚‹ãŸã‚ã€å¯¾å¿œã™ã‚‹æœˆã®æ•°ã«å¤‰æ›ã™ã‚‹ã€‚)\n // ※急ã„ã§ç›´ã—ãŸç®‡æ‰€ã®ãŸã‚ã€ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/03/28ç¾åœ¨ã€‚)\n const monthIndex = Object.keys(monthNames).includes(month.toUpperCase()) ? monthNames[month.toUpperCase()] - 1 : Number.parseInt(month) - 1;\n // 日時をセットã™ã‚‹ã€‚\n const utcDate = new Date(\n date.getFullYear(),\n monthIndex,\n Number.parseInt(day),\n Number.parseInt(hour),\n Number.parseInt(minutes)\n );\n // 'Asia/Tokyo' (日本時間) ã«å¤‰æ›\n return zonedTimeToUtc(utcDate, 'Asia/Tokyo');\n }\n\n /**\n * æä¹—å£ã®å称をå–å¾—ã™ã‚‹ã€‚\n * @param value ANA APIã‹ã‚‰å–å¾—ã—ãŸæä¹—å£ã®æ–‡å—列。\n */\n getBordingGate(value: string) {\n if(!value || value === '') { return ''; }\n // ä¿å®‰æ¤œæŸ»å ´åãŒå«ã¾ã‚Œã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚分割ã™ã‚‹ã€‚\n return (value.includes('(')) ? value.split('(')[0] : value;\n }\n\n /**\n * ä¿å®‰æ¤œæŸ»å ´åã‚’å–å¾—ã™ã‚‹ã€‚\n * @param value ANA APIã‹ã‚‰å–å¾—ã—ãŸæä¹—å£ã®æ–‡å—列。(æä¹—å£åã®æ–‡å—列ã«å«ã¾ã‚Œã‚‹å ´åˆãŒã‚る。)\n * @param depAirportCode ANA APIã‹ã‚‰å–å¾—ã—ãŸå‡ºç™ºç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã€‚\n * @param site ANA APIã‹ã‚‰å–å¾—ã—ãŸå›½å†…ç·šã¾ãŸã¯å›½å†…線を表ã™å€¤ã€‚\n * @param lang 言語è¨å®šã®å€¤ã€‚\n */\n getSecurtyCheckPoint(value: string, depAirportCode: string, depAirportName: string, site: string, depTerminal: string, lang: string = Lang.ja) {\n // TODO: 2020å¹´3月以é™ã¯API仕様ãŒå¤‰ã‚ã‚‹ãŸã‚ã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å称ç‰ãŒå–å¾—ã§ãる見込ã¿ãªã®ã§è¦‹ç›´ã™ã€‚(2020/02/07ç¾åœ¨ã€‚)\n let securtyCheckPoint = lang === Lang.en ? 'Security Check' : 'ä¿å®‰æ¤œæŸ»å ´';\n switch (depAirportCode) {\n // 羽田空港ã®å ´åˆã€‚(ANA APIã«è‹±èªžç‰ˆã§ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸå ´åˆã«ç¾½ç”°ç©ºæ¸¯ã®ã‚³ãƒ¼ãƒ‰ãŒã€ŒTYOã€ã¨ãªã‚‹å ´åˆãŒã‚る。)\n case 'HND':\n case 'TYO':\n securtyCheckPoint = this.getSecurityCheckInHaneda(value, site, depTerminal, lang);\n break;\n default:\n // 未è¨å®šã®å ´åˆã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ä¿å®‰æ¤œæŸ»å ´ã‚’è¿”ã™ã€‚\n if(!value || value === '') { return securtyCheckPoint; }\n // æä¹—å£å称ã«ã€Œ(ã€ï¼ˆã‚«ãƒƒã‚³ï¼‰ãŒå«ã¾ã‚Œã¦ã„ã¦ã€ã‚«ãƒƒã‚³å†…ãŒã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã§ã¯ãªã„å ´åˆã€ä¿å®‰æ¤œæŸ»å ´åã¨ã—ã¦æŽ¡ç”¨ã™ã‚‹ã€‚\n const securityName = value.match(/.*?\\((.*?)\\).*?/);\n if( securityName ) {\n if(securityName[1].match(/^(?!.*(ターミナル|Terminal)).+$/)){\n securtyCheckPoint = securityName[1];\n } else {\n // ターミナルåãŒå«ã¾ã‚Œã‚‹å ´åˆã«ã¯ ä¿å®‰æ¤œæŸ»å ´ï¼ˆã‚¿ãƒ¼ãƒŸãƒŠãƒ«å)ã®å½¢å¼ã¨ã™ã‚‹ã€‚\n securtyCheckPoint = `${securtyCheckPoint}(${securityName[1]})`;\n }\n }\n break;\n }\n return securtyCheckPoint;\n }\n\n /**\n * 羽田空港ã®ä¿å®‰æ¤œæŸ»å ´åã‚’å–å¾—ã™ã‚‹ã€‚\n * @param bordingGate ANA APIã‹ã‚‰å–å¾—ã—ãŸæä¹—å£å称。\n * @param site 国内線ã¾ãŸã¯å›½å†…線を表ã™å€¤ã€‚\n * @param lang 言語è¨å®šã®å€¤ã€‚\n */\n getSecurityCheckInHaneda(bordingGate: string, site: string, depTerminal: string, lang: string = Lang.ja) {\n let securtyCheckPoint = lang === Lang.en ? 'Security Check' : 'ä¿å®‰æ¤œæŸ»å ´';\n const securityCheckA = lang === Lang.en? 'Security Check A' : 'ä¿å®‰æ¤œæŸ»å ´A';\n // 国内線ã®å ´åˆã€‚\n if (site === 'DOM') {\n // 第1ターミナルã®å ´åˆã€‚\n if (bordingGate.includes('第1ターミナル') || bordingGate.includes('Terminal 1') || depTerminal.includes('1')) {\n securtyCheckPoint = securityCheckA;\n } else if (bordingGate.includes('(') && (!bordingGate.includes('ターミナル') || !bordingGate.includes('Terminal'))) {\n // 第2ターミナルã§æä¹—å£åã«ä¿å®‰æ¤œæŸ»å ´åãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€‚\n securtyCheckPoint = bordingGate.split('(')[1].replace(')', '');\n }\n }\n return securtyCheckPoint;\n }\n\n /**\n * HNDスターフライヤーé‹è¡Œä¾¿ã‚’考慮ã—ãŸã‚¿ãƒ¼ãƒŸãƒŠãƒ«å\n * @param anotherAirportCode 羽田空港ã¨å¯¾ã¨ãªã‚‹ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n * @param HNDDepOrArrDate 羽田空港を到ç€ãƒ»å‡ºç™ºã™ã‚‹æ—¥æ™‚\n */\n setConsiderationSFJTerminalHND(anotherAirportCode: string, HNDDepOrArrDate: Date) {\n // flightNumber㌠3810 - 3899 ã®é–“ã§ãªã„å ´åˆã¯è€ƒæ…®ã—ãªã„\n if(FlightInfo.isSFJ(this.flightNumber)) {\n return '';\n } else {\n // スターフライヤーã®å ´åˆç¬¬ä¸€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ç™ºç€ã¨ãªã‚‹\n return '1'\n }\n }\n\n /**\n * HNDスターフライヤーé‹è¡Œä¾¿ã§ã‚ã‚‹ã‹\n * @param flightNumber\n * @returns\n */\n public static isSFJ(flightNumber: string) {\n return Number(flightNumber) < 3810 || Number(flightNumber) > 3899;\n }\n\n /**\n * 羽田空港国際線到ç€ã§ç‰¹å®šã®ä¾¿ã‹ã¤ã€åˆ°ç€24時間å‰ã‚’切ã£ã¦ã„ãªã„ã‹\n **/\n isSpecialHNDIntTerminalBefore24Hours(isDepartureGuide: boolean): boolean {\n // 到ç€æ¡ˆå†…ã®ã¿ã®å¯¾å¿œã¨ã™ã‚‹\n if(isDepartureGuide) {\n return false;\n }\n // 到ç€24時間å‰ã‹ã‚‰ã¯å¯¾è±¡ã¨ãªã‚‰ãªã„\n const flightDate = this.getFlightTimeDate(isDepartureGuide);\n if(DateTime.isHND2ndTerminalArr24Limit(flightDate)) {\n return false;\n }\n // ãã®ä»–羽田空港国際線ターミナル便ã«è©²å½“ã™ã‚‹ã‹ï¼Ÿ\n return this.getSpecialHNDIntTerminalNumber(isDepartureGuide) === 3;\n }\n\n /**\n * 羽田空港発ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ç•ªå·ã‚’å–å¾—ã™ã‚‹\n * @param isDepartureGuide 羽田出発便ã‹ï¼Ÿ\n * @returns 強制固定ã•ã‚Œã‚‹ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ç•ªå·\n */\n getSpecialHNDIntTerminalNumber(isDepartureGuide: boolean): number | null {\n // ANA便以外ã¯å¯¾è±¡å¤–ã¨ãªã‚‹\n if(this.targetAirLine !== 'ANA') {\n return null;\n }\n // 国内線ã¯å¯¾è±¡å¤–ã¨ã™ã‚‹\n if(this.isDomestic) {\n return null;\n }\n // 対象ã¨ãªã‚‹ãƒ•ãƒ©ã‚¤ãƒˆä¸€è¦§\n const targetFlightNumberList = {\n dep: ['859', '851', '211', '969', '853'],\n arr: ['159', '968']\n }\n if(isDepartureGuide) {\n /** 出発案内ã§æŒ‡å®šä¾¿ã«è©²å½“ã™ã‚‹ã¨ãã«ã¯å¼·åˆ¶ã§ç¬¬2ターミナルã¨ã™ã‚‹ */\n return targetFlightNumberList.dep.includes(this.flightNumber)? 2: null;\n }\n else {\n /** 到ç€æ¡ˆå†…ã§æŒ‡å®šä¾¿ã«è©²å½“ã™ã‚‹ã¨ãã«ã¯å¼·åˆ¶ã§ç¬¬3ターミナルã¨ã™ã‚‹ */\n return targetFlightNumberList.arr.includes(this.flightNumber)? 3: null;\n }\n }\n\n /**\n * 出発ターミナルã®å称をå–å¾—ã™ã‚‹ã€‚\n * @param value ANA APIã‹ã‚‰å–å¾—ã—ãŸæä¹—å£ã®æ–‡å—列。\n * @param depAirportCode ANA APIã‹ã‚‰å–å¾—ã—ãŸå‡ºç™ºç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã€‚\n * @param depAirTerminal ANA APIã‹ã‚‰å–å¾—ã—ãŸå‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«å\n */\n getDepTerminal(value: string, depAirportCode: string, depAirTerminal: string) {\n // ANA APIã‹ã‚‰å‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«åãŒå–得出æ¥ãŸãªã‚‰ãれを利用ã™ã‚‹ã€‚(2020/03/06)\n if(depAirTerminal !== ''){\n return depAirTerminal;\n }\n let depTerminal = '';\n if(!value || value === '') { return depTerminal; }\n if (depAirportCode === 'HND' && value.includes('(') && (value.includes('ターミナル') || value.includes('Terminal'))) {\n depTerminal = value.split('(')[1].replace(')', '')\n }\n if (depAirportCode === 'TYO' && value.includes('(') && value.includes('Terminal')) {\n depTerminal = value.split('(')[1].replace(')', '')\n }\n // 羽田空港ã§ç¬¬1ターミナルを利用ã™ã‚‹ä¾¿ã®ã¿ã€æä¹—å£å称内ã«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åãŒè¨å®šã•ã‚Œã‚‹ã€ãã®å ´åˆã®ã¿ã“ã®ãƒ¡ãƒ³ãƒå¤‰æ•°ã‚’利用ã™ã‚‹ã€‚(2020/02/03ç¾åœ¨ï¼‰\n return depTerminal;\n }\n\n /**\n * 到ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å称をå–å¾—ã™ã‚‹ã€‚\n * @param value ANA APIã‹ã‚‰å–å¾—ã—ãŸåˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®æ–‡å—列。\n */\n getArrTerminal(value: string) {\n if(!value || value === '') { return ''; }\n // 出å£åãŒå«ã¾ã‚Œã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚分割ã™ã‚‹ã€‚\n return (value.includes('(')) ? value.split('(')[1].replace(')', '') : value;\n }\n\n /**\n * 到ç€å‡ºå£ã®å称をå–å¾—ã™ã‚‹ã€‚\n * @param value ANA APIã‹ã‚‰å–å¾—ã—ãŸåˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®æ–‡å—列。\n * (到ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®æ–‡å—列ã«å‡ºå£å称ãŒå«ã¾ã‚Œã‚‹ã€‚)\n */\n getExit(value: string) {\n if (!value || value === '') { return ''; }\n // 出å£åãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€Œï¼ˆã€ãŒå«ã¾ã‚Œã¦ã„ã‚‹ãŸã‚ã€ãã®å ´åˆã®ã¿ã€Œï¼ˆã€ã‚ˆã‚Šæ‰‹å‰ã®éƒ¨åˆ†ã‚’å–å¾—ã™ã‚‹ã€‚\n // 「(ã€ãŒå«ã¾ã‚Œã¦ã„ãªã„å ´åˆã¯æœªè¨å®šï¼ˆç©ºæ–‡å—)ã¨ã—ã¦æ‰±ã†ã€‚\n const exitName = (value.includes('(')) ? value.split('(')[0] : '';\n // 出å£åãŒã€Œâ—†ã€ã§ã‚ã£ãŸå ´åˆã¯ç©ºæ–‡å—(未è¨å®šï¼‰ã¨ã—ã€ãれ以外ã®å ´åˆã¯ä¸Šè¨˜ã§å–å¾—ã§ããŸå‡ºå£åã‚’è¿”ã™ã€‚\n return (exitName === 'â—†') ? '' : exitName;\n }\n\n /**\n * 国内線ã®å ´åˆã¯ä¿å®‰æ¤œæŸ»å ´ã®ç· 切時刻ã€å›½éš›ç·šã®å ´åˆã¯æ‰‹ç¶šãç· åˆ‡æ™‚åˆ»ã‚’å–å¾—ã™ã‚‹ã€‚\n */\n public getDeadLineTime(targetAirLine: AirlineList) {\n // 出発案内ã®å ´åˆã®ã¿åˆ©ç”¨ã™ã‚‹å‡¦ç†ã®ãŸã‚ã€å¼•æ•°ã‚’true(出発案内モード)ã¨ã™ã‚‹ã€‚\n const depTime = this.isAvalableOperationInfo(true) ? this.atd : this.etd;\n const date = new Date(depTime.getTime());\n // ピーãƒã‚³ãƒ¼ãƒ‰ã‚·ã‚§ã‚¢ä¾¿ã‹ã¤é–¢è¥¿å›½éš›ç©ºæ¸¯ç™ºä»¥å¤–ã®å ´åˆã«ã¯ä¿å®‰æ¤œæŸ»å ´ç· 切25分ã«ã™ã‚‹\n if (targetAirLine === 'APJ' && this.depAirportCode !== 'KIX') {\n date.setMinutes(date.getMinutes() - 25);\n }\n // JAL・IBX便ã§ã¯20分å‰ã«è¨å®šã™ã‚‹\n else if (this.isDomestic) {\n // 国内線ã®å ´åˆä¿å®‰æ¤œæŸ»å ´ç· 切20分å‰ã«ãªã‚‹\n date.setMinutes(date.getMinutes() - 20);\n }\n else {\n // 国際線ã®å ´åˆä¿å®‰æ¤œæŸ»å ´ç· 切ã¯60分å‰ã«ãªã‚‹\n date.setHours(date.getHours() - 1);\n }\n return date;\n }\n\n /**\n * æä¹—å£åˆ°ç€ï¼ˆå¸Œæœ›ï¼‰æ™‚é–“ã‚’å–å¾—ã™ã‚‹ã€‚\n */\n public getBoardingTime(targetAirLine: AirlineList) {\n // 出発案内ã®å ´åˆã®ã¿åˆ©ç”¨ã™ã‚‹å‡¦ç†ã®ãŸã‚ã€å¼•æ•°ã‚’true(出発案内モード)ã¨ã™ã‚‹ã€‚\n const depTime = this.isAvalableOperationInfo(true) ? this.atd : this.etd;\n // æä¹—ç· ã‚切り時間ã¯å‡ºç™ºæ™‚é–“ã®ä½•åˆ†å‰ã‹ã‚’定ã‚ã‚‹\n const minutes = (()=>{\n // 国際線ã®å ´åˆã«ã¯30分å‰ã¨ãªã‚‹\n if(!this.isDomestic) {\n return 30;\n }\n // 20分å‰æŒ‡å®šã•ã‚ŒãŸäº‹æ¥è€…ã‹ã‚’判定ã™ã‚‹\n else if(Airlines.isBordingGate20min(targetAirLine)) {\n return 20;\n }\n // 国内線ã®å ´åˆã«ã¯10分å‰ã¨ãªã‚‹\n else {\n return 10;\n }\n })();\n const date = new Date(depTime.getTime());\n date.setMinutes(date.getMinutes() - minutes);\n return date;\n }\n\n /**\n * æ乗便ã®å‡ºç™ºæ™‚刻ã€ã¾ãŸã¯åˆ°ç€æ™‚刻をå–å¾—ã™ã‚‹ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n */\n public getFlightTime(isDepartureGuide: boolean) {\n const flightDate = this.getFlightTimeDate(isDepartureGuide);\n return DateTime.JSTFormat(flightDate, 'HH:mm');\n }\n\n /**\n * æ乗便ã®å‡ºç™ºæ™‚刻ã€ã¾ãŸã¯åˆ°ç€æ™‚刻をDateåž‹ã§å–å¾—ã™ã‚‹ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n */\n public getFlightTimeDate(isDepartureGuide: boolean) {\n if (isDepartureGuide) {\n return (this.isAvalableOperationInfo(isDepartureGuide) && !DateTime.isInvalidDate(this.atd)) ? this.atd : this.etd;\n } else {\n return (this.isAvalableOperationInfo(isDepartureGuide) && !DateTime.isInvalidDate(this.ata)) ? this.ata : this.eta;\n }\n }\n\n /** æ乗便ã®å‡ºç™ºæ™‚刻をDateåž‹ã§å–å¾—ã™ã‚‹ã€‚ */\n public getFlightDepartureDate() {\n return (this.isAvalableOperationInfo(true) && !DateTime.isInvalidDate(this.atd)) ? this.atd : this.etd;\n }\n\n /** æ乗便ã®åˆ°ç€æ™‚刻をDateåž‹ã§å–å¾—ã™ã‚‹ã€‚ */\n public getFlightArrivalDate() {\n return (this.isAvalableOperationInfo(false) && !DateTime.isInvalidDate(this.ata)) ? this.ata : this.eta;\n }\n\n /**\n * 備考ã«HTMLã‚¿ã‚°ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚ã€å–り除ã„ãŸæ–‡å—列を返ã™ã€‚\n * å‚考ページ: https://qiita.com/miiitaka/items/793555b4ccb0259a4cb8\n * */\n public modifyRemarks(remarks: string) {\n if (!remarks) { return ''; }\n return remarks.replace(/<(\"[^\"]*\"|'[^']*'|[^'\">])*>/g, '');\n }\n\n /**\n * ANA APIã§å–å¾—ã—ãŸé‹è¡Œæƒ…å ±ã‚’å‚ç…§å¯èƒ½ãªæ—¥ä»˜ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n */\n public isAvalableOperationInfo(isDepartureGuide: boolean): boolean {\n // 最新出発時間・最新到ç€æ™‚é–“ã©ã¡ã‚‰ã‹ãŒdefault値ã®å ´åˆã«ã¯æœ€æ–°æ™‚刻ã¯ä½¿ç”¨ã§ããªã„ã¨ã¿ãªã™\n const isDefaultAtd = this.atd.getTime() === 0;\n const isDefaultAta = this.ata.getTime() === 0;\n if(isDefaultAtd || isDefaultAta) {\n return false;\n }\n // 出発案内ã®å ´åˆã¯å®šåˆ»ã®å‡ºç™ºæ—¥æ™‚ã‚’ã€åˆ°ç€æ¡ˆå†…ã®å ´åˆã¯å®šåˆ»ã®åˆ°ç€æ—¥æ™‚ãŒANA APIã®é‹è¡Œæƒ…å ±ã‚’å‚ç…§å¯èƒ½ãªæ—¥ä»˜ã‹ã‚’判別ã™ã‚‹ã€‚\n return isDepartureGuide ? DateTime.isAvalableOperationInfo(this.etd, this.isDomestic) : DateTime.isAvalableOperationInfo(this.eta, this.isDomestic);\n }\n\n /**\n * 探索日時を航空便ã®ç™ºç€æ™‚刻を基準ã«å–å¾—ã™ã‚‹ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @param minutes ユーザーãŒæŒ‡å®šã—ãŸã€Œç©ºæ¸¯åˆ°ç€æ™‚é–“ã€ï¼ˆå‡ºç™ºæ¡ˆå†…ã®å ´åˆã®ã¿ï¼‰\n */\n public getSearchTime(isDepartureGuide: boolean, minutes?: number) {\n // TODO: ãƒã‚¹ãƒˆãŒæ·±ã„ãŸã‚ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/01/06ç¾åœ¨ï¼‰\n // ANA APIã®å®Ÿéš›ã®ç™ºç€æ™‚刻を利用ã§ãã‚‹å ´åˆã€‚\n if (this.isAvalableOperationInfo(isDepartureGuide)) {\n // 出発案内ã®å ´åˆã€‚\n if (isDepartureGuide) {\n if (minutes) {\n const date = new Date(this.atd.getTime());\n date.setMinutes(date.getMinutes() - minutes);\n return date;\n } else {\n return this.atd;\n }\n // 到ç€æ¡ˆå†…ã®å ´åˆã€‚\n } else {\n let minutes = 0;\n // 国内線ã®å ´åˆã€‚\n if (this.isDomestic) {\n minutes = this.getArrivalGateToStation();\n // 国際線ã®å ´åˆã€‚\n } else {\n // 指定ã•ã‚ŒãŸç©ºæ¸¯ã ã£ãŸå ´åˆã¯åˆ¥ãƒ•ã‚¡ã‚¤ãƒ«ã§è¨å®šã•ã‚ŒãŸç©ºæ¸¯ã”ã¨ã®å€¤ã‚’å‚ç…§ã—ã€æŒ‡å®šå¤–ã®ç©ºæ¸¯ã®å ´åˆã¯0ã¨ã™ã‚‹ã€‚\n minutes = SPECFIED_AIRPORTS_INT.includes(this.arrAirportCode) ? this.getArrivalGateToStationInt() : 0;\n }\n const date = new Date(this.ata.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n }\n // ANA APIã®äºˆå®šã®ç™ºç€æ™‚刻を利用ã™ã‚‹å ´åˆã€‚\n } else {\n // 出発案内ã®å ´åˆã€‚\n if (isDepartureGuide) {\n if (minutes) {\n const date = new Date(this.etd.getTime());\n date.setMinutes(date.getMinutes() - minutes);\n return date;\n } else {\n return this.etd;\n }\n // 到ç€æ¡ˆå†…ã®å ´åˆã€‚\n } else {\n let minutes = 0;\n // 国内線ã®å ´åˆã€‚\n if (this.isDomestic) {\n minutes = this.getArrivalGateToStation();\n // 国際線ã®å ´åˆã€‚\n } else {\n // 指定ã•ã‚ŒãŸç©ºæ¸¯ã ã£ãŸå ´åˆã¯åˆ¥ãƒ•ã‚¡ã‚¤ãƒ«ã§è¨å®šã•ã‚ŒãŸç©ºæ¸¯ã”ã¨ã®å€¤ã‚’å‚ç…§ã—ã€æŒ‡å®šå¤–ã®ç©ºæ¸¯ã®å ´åˆã¯0ã¨ã™ã‚‹ã€‚\n minutes = SPECFIED_AIRPORTS_INT.includes(this.arrAirportCode) ? this.getArrivalGateToStationInt() : 0;\n }\n const date = new Date(this.eta.getTime());\n if(!minutes) {\n throw new Error('minutesã®å€¤ãŒç•°å¸¸ã§ã™: '+minutes);\n }\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n }\n }\n }\n\n /**\n * 国内線ã®å ´åˆã®ç©ºæ¸¯ã‹ã‚‰æœ€å¯„ã‚Šã®å…¬å…±äº¤é€šæ©Ÿé–¢ã®æ‰€è¦æ™‚é–“ã‚’è¨å®šã™ã‚‹ã€‚\n */\n getArrivalGateToStation() {\n // 空港コードãŒTYO(æ±äº¬ã®ã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ï¼‰ã®å ´åˆã€‚\n if (this.arrAirportCode === 'TYO') {\n // 到ç€ç©ºæ¸¯åãŒã€ŒHanedaã€ã‚’å«ã‚€å ´åˆã¯ç¾½ç”°ã®æ‰€è¦æ™‚é–“ã€å«ã¾ãªã„å ´åˆã¯æˆç”°ã®æ‰€è¦æ™‚é–“ã‚’è¿”ã™ã€‚\n return this.arrAirportName.includes('Haneda') ? ArrivalGateToStation['HND'] : ArrivalGateToStation['NRT'];\n } else {\n return ArrivalGateToStation[this.arrAirportCode];\n }\n }\n\n /**\n * 国際線ã®å ´åˆã®ç©ºæ¸¯ã‹ã‚‰æœ€å¯„ã‚Šã®å…¬å…±äº¤é€šæ©Ÿé–¢ã®æ‰€è¦æ™‚é–“ã‚’è¨å®šã™ã‚‹ã€‚\n */\n getArrivalGateToStationInt() {\n // 空港コードãŒTYO(æ±äº¬ã®ã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ï¼‰ã®å ´åˆã€‚\n if (this.arrAirportCode === 'TYO') {\n // 到ç€ç©ºæ¸¯åãŒã€ŒHanedaã€ã‚’å«ã‚€å ´åˆã¯ç¾½ç”°ã®æ‰€è¦æ™‚é–“ã€å«ã¾ãªã„å ´åˆã¯æˆç”°ã®æ‰€è¦æ™‚é–“ã‚’è¿”ã™ã€‚\n return this.arrAirportName.includes('Haneda') ? ArrivalGateToStationInt['HND'] : ArrivalGateToStationInt['NRT'];\n } else {\n return ArrivalGateToStationInt[this.arrAirportCode];\n }\n }\n\n /**\n * å–å¾—ã—ãŸæä¹—å£ãŒãƒã‚¹åˆ©ç”¨ã®æä¹—å£ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param bordingGate æä¹—å£\n */\n checkBusToBoard(bordingGate: string) {\n // 空港コードãŒã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ã®å ´åˆã¯å·®ã—替ãˆã‚‹ã€‚\n const code = this.modifyAirportCode(true);\n // æä¹—å£ãŒæœªè¨å®šã€ã¾ãŸã¯å‡ºç™ºç©ºæ¸¯ã«ã‚µãƒ†ãƒ©ã‚¤ãƒˆã‚²ãƒ¼ãƒˆãŒå˜åœ¨ã—ãªã„å ´åˆã¯ã€falseã‚’è¿”ã™ã€‚\n if (!bordingGate || !Object.keys(BusGates).includes(code)) { return false; }\n // 空港コードãŒã€ŒTYOã€ã®å ´åˆã¯ã€ŒHNDã€ã‚’ã€ãれ以外ã®å ´åˆã¯ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã§ãƒã‚¹åˆ©ç”¨ã®æä¹—å£ã‚’å‚ç…§ã—対象ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n return BusGates[code].includes(bordingGate);\n }\n\n /**\n * å–å¾—ã—ãŸæä¹—å£ãŒã‚µãƒ†ãƒ©ã‚¤ãƒˆãƒã‚¹åˆ©ç”¨ã®æä¹—å£ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param depAirportCode 出発空港コード\n * @param bordingGate æä¹—å£\n */\n checkSatelliteGates(depAirportCode: string, bordingGate: string) {\n // 空港コードãŒã€ŒTYOã€ã®å ´åˆã¯ã€ŒHNDã€ã«å·®ã—替ãˆã€ãれ以外ã®å ´åˆã¯ãã®ã¾ã¾ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã§ãƒ‡ãƒ¼ã‚¿ã‚’å‚ç…§ã™ã‚‹ã€‚\n const code = depAirportCode === 'TYO' ? 'HND': depAirportCode;\n // æä¹—å£ãŒæœªè¨å®šã€ã¾ãŸã¯å‡ºç™ºç©ºæ¸¯ã«ã‚µãƒ†ãƒ©ã‚¤ãƒˆã‚²ãƒ¼ãƒˆãŒå˜åœ¨ã—ãªã„å ´åˆã¯ã€falseã‚’è¿”ã™ã€‚\n if (!bordingGate || !Object.keys(SatelliteGates).includes(code)) { return false; }\n // 空港コードã§ã‚µãƒ†ãƒ©ã‚¤ãƒˆã‚²ãƒ¼ãƒˆå¯¾è±¡ã®æä¹—å£ã‚’å‚ç…§ã—対象ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n return SatelliteGates[code].includes(bordingGate);\n }\n\n /** æ乗便ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’å–å¾—ã™ã‚‹ã€‚ */\n getStatus(remarks: string, atd: string, site: string) {\n let statusCode = Status.Normal;\n statusCode = site === 'DOM' ? this.getStatusDomestic(remarks) : this.getStatusInternational(remarks, atd);\n return statusCode;\n }\n\n /**\n * 国内線ã®å ´åˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param remarks 備考。\n */\n getStatusDomestic(remarks: string) {\n // 備考ãŒæœªè¨å®šã®å ´åˆã¯é€šå¸¸é‹èˆªã¨ã—ã¦æ‰±ã†ã€‚\n if (remarks === null || !remarks) { return Status.Normal; }\n // é…延ã®å ´åˆã€‚\n if (remarks.includes('出発é…ã‚Œ') || remarks.includes('Delayed')) { return Status.Delay; }\n // æ¬ èˆªã®å ´åˆã€‚\n if (remarks.includes('æ¬ èˆª') || remarks.includes('Canceled')) { return Status.Canceled; }\n return Status.Normal;\n }\n\n /**\n * 国際線ã®å ´åˆã®æ乗便ステータスをå–å¾—ã™ã‚‹ã€‚\n * @param remarks 備考。\n * @param atd 実際ã®å‡ºç™ºæ™‚刻。\n */\n getStatusInternational(remarks: string, atd: string) {\n // 備考ã«ä½•ã‚‰ã‹ã®æ–‡ç« ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿ã€é…延ã¾ãŸã¯æ¬ 航ã¨ã—ã¦æ‰±ã†ã€‚\n if (remarks !== '' && remarks !== null && remarks !== '-' && remarks !== '出発é…ã‚Œ' && remarks !== 'æ¬ èˆª') {\n // 時刻(HH:mm)ã®å€¤ã§ã‚ã‚Œã°é…延ã€ãã†ã§ãªã„å ´åˆã¯æ¬ 航ã¨ã—ã¦æ‰±ã†ã€‚\n return atd.match(/[0-2][0-3]:[0-5][0-9]/g) ? Status.Delay : Status.Canceled;\n }\n return Status.Normal;\n }\n\n /** æ乗便ãŒé…延ã—ã¦ã„ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚ */\n isDelay() {\n return this.status === Status.Delay;\n }\n\n /** æ乗便ãŒæ¬ 航ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚ */\n isCanceled() {\n return this.status === Status.Canceled;\n }\n\n /**\n * æ乗便ã®é‹èˆªæƒ…å ±ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’通常ã«ã™ã‚‹ã€‚\n * (検索画é¢ä¸Šã§ã®ä¾¿æƒ…å ±å–得時ã«åˆ©ç”¨ã™ã‚‹ã€‚検索画é¢ä¸Šã§ã¯å½“日日付ã§æƒ…å ±å–å¾—ã™ã‚‹ãŸã‚。)\n * */\n setStatusToNormal() {\n this.status = Status.Normal;\n return this;\n }\n\n /** 空港コードãŒã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ã®å ´åˆã¯å·®ã—替ãˆã‚‹ã€‚(羽田ã¨æ–°åƒæ³ã®ã¿ã€‚2020/01/18ç¾åœ¨ï¼‰ */\n modifyAirportCode(isDepartureGuide: boolean) {\n const baseAirportCode = isDepartureGuide? this.depAirportCode: this.arrAirportCode;\n const airportName = isDepartureGuide? this.depAirportName: this.arrAirportName;\n switch(baseAirportCode) {\n case 'TYO':\n return airportName.includes('Haneda')? 'HND': 'NRT';\n case 'SPK':\n return 'CTS';\n default:\n return baseAirportCode;\n }\n }\n\n /** ターミナルをå–å¾—ã™ã‚‹ */\n getTerminal(isDepartureGuide: boolean) {\n const airportCode: string = this.modifyAirportCode(isDepartureGuide);\n const terminalName = isDepartureGuide? this.depTerminal: this.arrTerminal;\n switch(airportCode) {\n case 'HND':\n return this.getHNDTerminal(isDepartureGuide);\n case 'NRT':\n // ç¾åœ¨ã®ANA便ã¯æˆç”°ã«ã¯ç¬¬1ターミナルã«ã—ã‹å°±èˆªã—ã¦ã„ãªã„\n // 他社便も対応ã™ã‚‹ãŸã‚ã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å¯èƒ½æ€§ã‚‚出ã¦ãã¾ã—ãŸï¼ˆ2022/03/17ç¾åœ¨ï¼‰\n return this.getNRTTerminal(isDepartureGuide);\n case 'KIX':\n // ç¾åœ¨ã®ANA便ã¯é–¢è¥¿ç©ºæ¸¯ã«ã¯ç¬¬1ターミナルã«ã—ã‹å°±èˆªã—ã¦ã„ãªã„\n return '1';\n default:\n return terminalName;\n }\n }\n\n /**\n * 羽田空港ã®å ´åˆã€ç™ºç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’è¿”ã™\n * @param isDepartureGuide 出発案内ã‹\n */\n getHNDTerminal(isDepartureGuide: boolean) {\n /** 国際線到ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æœªæ±ºå®šæ™‚ã«ç¬¬2・第3ターミナル両方を経由ã™ã‚‹çµŒè·¯ã‚’表示ã™ã‚‹ã‹ */\n const isShowViaSection: boolean = process.env['REACT_APP_IS_SHOW_VIA_SECTION'] === 'true';\n const terminalName = isDepartureGuide? this.depTerminal: this.arrTerminal;\n // 国内線ã®å ´åˆã¯ç¬¬1・第2ターミナルã‹ã§åˆ†ã‘る。\n if (this.isDomestic) {\n // 出発ターミナルåãŒç¬¬1ターミナルã®å ´åˆã€‚\n if (FlightInfo.terminalCheck(1, terminalName)) {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n return 1;\n } else {\n return 2;\n }\n // 国際線ã®å ´åˆã€‚\n } else {\n /** 2023/07 羽田国際線特別対応を行ㆠ*/\n /** NH159/NH968ã‹ã¤24時間å‰ã‚’切ã£ã¦ã„ãªã„ã¨ãã«ã¯å¼·åˆ¶çš„ã«ç¬¬3ターミナルã«ã™ã‚‹ */\n if(this.isSpecialHNDIntTerminalBefore24Hours(isDepartureGuide)) {\n return 3;\n }\n // 出発ターミナルåãŒç¬¬2ターミナルã®å ´åˆã€‚\n // ASW経由ã®ã‚¯ã‚¨ãƒªã«ã¯æ•°å—ã®ã¿ã§æ¸¡ã•ã‚Œã‚‹ãŸã‚ã€ã“ã®å ´åˆã«ã‚‚対応ã™ã‚‹\n if (FlightInfo.terminalCheck(2, terminalName) ) {\n return 2;\n } else if (FlightInfo.terminalCheck(3, terminalName)) {\n return 3;\n } else {\n /** 2023/07 羽田国際線特別対応を行ㆠ*/\n const specialHNDIntTerminalNumber = this.getSpecialHNDIntTerminalNumber(isDepartureGuide);\n if(specialHNDIntTerminalNumber === 2) {\n return specialHNDIntTerminalNumber;\n }\n if(!isShowViaSection) {\n return 3;\n }\n return \"2_3\";\n }\n }\n }\n /**\n * æˆç”°ç©ºæ¸¯ã®å ´åˆã®ç™ºç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’è¿”ã™\n * @param isDepartureGuide 出発案内ã‹\n */\n getNRTTerminal(isDepartureGuide: boolean) {\n const terminalName = isDepartureGuide? this.depTerminal: this.arrTerminal;\n /** 連æºã•ã‚ŒãŸã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«ã€Œ3ã€ã®æ–‡å—ãŒå«ã¾ã‚Œã¦ã„ãŸã‚‰ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã¨ã™ã‚‹ */\n if (FlightInfo.terminalCheck(3, terminalName)) {\n return 3;\n }\n else {\n return 1;\n }\n }\n /**\n * タクシー経路ã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒ‡ã‚£ã‚·ãƒ§ãƒ³æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n */\n getCondition(isDepartureGuide: boolean) {\n const airportCode = isDepartureGuide? this.depAirportCode: this.arrAirportCode;\n // æ乗ゲートã¯å‡ºç™ºæ¡ˆå†…ã®æ™‚ã®ã¿å–å¾—ã§ãã‚‹\n const bordingGate = isDepartureGuide? this.bordingGate: \"\";\n switch(airportCode) {\n // 関西国際空港ã®å ´åˆã‚²ãƒ¼ãƒˆã®ç•ªå·ã«åˆã‚ã›ã¦å—北を返ã™\n case 'KIX':\n return (()=>{\n const defaultZone = '北';\n // æ乗ゲートã¯å‡ºç™ºæ¡ˆå†…ã—ã‹å–å¾—ã§ããªã„ãŸã‚ã€å‡ºç™ºæ¡ˆå†…ã®ã¿æ乗ゲートã«ã‚ˆã‚‹åˆ¤å®šã‚’ã™ã‚‹\n if(bordingGate) {\n if(this.isDomestic) {\n if(Number(this.bordingGate)>=16 && Number(this.bordingGate)<=20) {\n return '北';\n }\n else if(Number(this.bordingGate)>=21 && Number(this.bordingGate)<=25) {\n return 'å—';\n }\n // ゲートãŒæœªç¢ºå®šã®å ´åˆã¯ã€ŒåŒ—ã€ã‚’è¿”ã™\n return defaultZone;\n }\n else {\n if(Number(this.bordingGate)>=1 && Number(this.bordingGate)<=16) {\n return '北';\n }\n else if(Number(this.bordingGate)>=25 && Number(this.bordingGate)<=41) {\n return 'å—';\n }\n // ゲートãŒæœªç¢ºå®šã®å ´åˆã¯ã€ŒåŒ—ã€ã‚’è¿”ã™\n return defaultZone;\n }\n }\n else {\n // 到ç€æ¡ˆå†…ã®å ´åˆã«ã¯åˆ°ç€ã‚²ãƒ¼ãƒˆãŒä¸æ˜ŽãªãŸã‚「北ã€ã‚’è¿”ã™\n return defaultZone;\n }\n })();\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«ã‚ˆã£ã¦åˆ¤å®šã‚’ã™ã‚‹\n case 'FUK':\n return (()=>{\n const defaultZone = 'å—';\n if(this.isDomestic) {\n const terminal = isDepartureGuide? this.depTerminal: this.arrTerminal;\n if(terminal.includes('北') || terminal.includes('North')) {\n return '北';\n }\n if(terminal.includes('å—') || terminal.includes('South')) {\n return 'å—';\n }\n if(isDepartureGuide) {\n // ターミナルより判定ã§ããªã„å ´åˆã«ã¯æ乗ゲートより判定をã™ã‚‹ï¼ˆå‡ºç™ºæ¡ˆå†…ã®ã¿ï¼‰\n // å‚考:ç¦å²¡ç©ºæ¸¯æ乗ゲート\n // https://www.fukuoka-airport.jp/flight/flow_dom/index.html\n if(Number(this.bordingGate) >= 0 && Number(this.bordingGate) <= 6) {\n return '北';\n }\n if(Number(this.bordingGate) >= 7 && Number(this.bordingGate) <= 12) {\n return 'å—';\n }\n }\n // ゲートã‹ã‚‰ã‚‚判定ã§ããªã„å ´åˆã«ã¯ã€Œå—ã€ã‚’è¿”ã™\n return defaultZone;\n }\n else {\n return bordingGate;\n }\n })();\n // 到ç€æ¡ˆå†…ã§ã¯arrTerminalã‹ã‚‰Gateを判定ã™ã‚‹\n default:\n return (()=>{\n if(isDepartureGuide) {\n return bordingGate;\n }\n else {\n // 「4・5・6ã€ã®ã‚ˆã†ã«é»’丸ã§è¤‡æ•°ã‚ã‚‹å ´åˆã«ã¯å…ˆé ã‚’è¿”ã™\n return this.exit.split(/[-・]/)[0];\n }\n })();\n }\n }\n\n /**\n * TYO/CTSã®ã‚ˆã†ãªè¡¨è¨˜ã‚†ã‚Œã‚’排除ã—ãŸç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹\n * @param isDepartureGuide 出発案内ã‹å¦ã‹\n */\n getFixTerminalCode(isDepartureGuide: boolean) {\n let terminalCode = isDepartureGuide? this.depAirportCode: this.arrAirportCode;\n const airportName = isDepartureGuide ? this.depAirportName : this.arrAirportName;\n switch(terminalCode) {\n case 'SPK':\n case 'CTS':\n return 'CTS';\n case 'TYO':\n return airportName.includes('Haneda')? 'HND': 'NRT';\n default:\n return terminalCode;\n }\n }\n\n /**\n * ターミナルを考慮ã—ãŸç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹\n * @param isDepartureGuide 出発案内ã‹å¦ã‹\n * @param hasPriorityAirportBus 空港ãƒã‚¹å„ªå…ˆã‚ªãƒ—ションãŒæœ‰åŠ¹ã‹\n */\n getAddTerminalAirportCode(isDepartureGuide: boolean, hasPriorityAirportBus: boolean) {\n let terminalCode = isDepartureGuide? this.depAirportCode: this.arrAirportCode;\n const terminalName = isDepartureGuide? this.depTerminal: this.arrTerminal;\n const airportName = isDepartureGuide ? this.depAirportName : this.arrAirportName;\n switch(terminalCode) {\n case 'SPK':\n case 'CTS':\n // 国内線・国際線ã¨ãƒã‚¹åœãŒç•°ãªã‚‹ãŸã‚分ã‘る。\n return this.isDomestic? 'CTS_DOM': 'CTS_INT';\n case 'HND':\n const HNDTerminal = this.getHNDTerminal(isDepartureGuide);\n switch(HNDTerminal) {\n case 1:\n return 'HND_1';\n case 2:\n return 'HND_2';\n case 3:\n return 'HND_3';\n case \"2_3\":\n return hasPriorityAirportBus? 'HND_3': 'HND_2';\n }\n // æ±äº¬ã‚¨ãƒªã‚¢ï¼ˆç¾½ç”°ãƒ»æˆç”°å…±ç”¨ï¼‰ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€‚\n // eslint-disable-next-line\n case 'TYO':\n if (airportName.includes('Haneda')) {\n // 出発ターミナルåãŒç¬¬1ターミナルã®å ´åˆã€‚\n if (FlightInfo.terminalCheck(1, terminalName)) {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n return 'HND_1';\n } else {\n return 'HND_2';\n }\n } else if (airportName.includes('Narita')) {\n return 'NRT';\n }\n break;\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…線(北・å—)ã§åœ°ç‚¹ã‚’分ã‘る。\n case 'FUK':\n // 国内線ã®å ´åˆã€‚\n if (this.isDomestic) {\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる日付ã§ã¯ãªã„å ´åˆã€‚\n if (!this.isAvalableOperationInfo(isDepartureGuide)) {\n return 'FUK_DOM';\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´åã«åŒ—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (this.securtyCheckPoint.includes('北') || this.securtyCheckPoint.includes('North')) {\n return 'FUK_DOM_NORTH';\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´ã«å—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (this.securtyCheckPoint.includes('å—') || this.securtyCheckPoint.includes('South')) {\n return 'FUK_DOM_SOUTH';\n // 未è¨å®šã®å ´åˆã€‚\n } else {\n return 'FUK_DOM';\n }\n // 国際線ã®å ´åˆã€‚\n }\n else {\n return 'FUK_INT';\n }\n // 那覇空港ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…ç·šã§åˆ†ã‘ã‚‹\n case 'OKA':\n // 国内線ã®å ´åˆã€‚\n if (this.isDomestic) {\n return 'OKA_DOM';\n } else {\n return 'OKA_INT';\n }\n default:\n return terminalCode;\n }\n }\n\n // ターミナルåãŒã€Œç¬¬Xターミナルã€ã€ŒTerminal Xã€ã€ŒXã€ã®æ™‚ã«ã¯Trueã‚’è¿”ã™\n static terminalCheck(terminalNo: number, terminalName: string) {\n return terminalName.includes(`第${terminalNo}ターミナル`) || terminalName.includes(`Terminal ${terminalNo}`) || terminalName === terminalNo.toString();\n }\n\n /** 該当ã®èˆªç©ºä¾¿æƒ…å ±ãŒä½¿ç”¨å¯èƒ½ã‹ */\n getIsAbleUse() {\n return this.errorMessage === '' && this.hasData;\n }\n}\n\nexport default FlightInfo;\n","/** 発ç€åœ°ã®ç¨®åˆ¥ã€‚ */\nexport enum PointType {\n STATION = 'station',\n COORDINATE = 'coordinate',\n ADDRESS = 'address',\n CURRENT_POSITION = 'currentPosition',\n SELECT_ON_MAP = 'selectOnMap',\n NONE = '',\n HISTORY = 'history',\n}\n","import { ConditionAction, ConditionActionType } from './../actions/conditionAction';\nimport { ConditionState, ModalStatus } from './../states/conditionState';\nimport FlightInfo from '../services/ana/models/flightInfo';\nimport { Lang } from '../states/query';\nimport { PointType } from '../states/common';\nimport { AirlineList } from '../utils/Airlines';\n\nconst initialState: ConditionState = {\n point: '',\n pointCode: '',\n via: '',\n viaCode: '',\n hasVia: false,\n pointType: PointType.NONE,\n date: new Date(),\n flight: '',\n flightNumber: '',\n arrivalTimeToAirport: 0,\n isDepartureGuide: true,\n isEnabledShinkansen: true,\n isEnabledLimitedExpress: true,\n isEnabledIc: true,\n isDomestic: true,\n flightStatus: new FlightInfo(),\n flightStatusForSeachAd: new FlightInfo(),\n flightStatusUserSetDateForSearchAd: new FlightInfo(),\n cityName: '',\n course: [],\n conditionDetail: '',\n query: {\n flightNumber: '',\n depAirport: '',\n arrAirport: '',\n fromAirportCode: '',\n toAirportCode: '',\n fromTerminal: '',\n toTerminal: '',\n std: null,\n sta: null,\n referrer: '',\n isArrivalGuide: false,\n lang: Lang.ja,\n isDomestic: true\n },\n hasPriorityAirportBus: false,\n /** 自動車利用を優先ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityCar: false,\n hasPriorityCarWithBarrierFree: false,\n searchedAt: new Date(),\n consentAirportArrivalTime: false,\n airportModalShow: false,\n modalStatus: {\n carCourse: ModalStatus.HIDE,\n initModal: ModalStatus.HIDE\n },\n tokyoLimousineBusModalShow: false,\n busTicketOitaModalShow: false,\n isNoSetTerminalHND: false,\n isAvalable: true,\n directions: null,\n courseIndex: 0,\n pointGeoCode: {\n lat: 0,\n lng: 0\n },\n okinawaBusStopList: [],\n isShowOkinawaBusLink: false,\n place: null,\n lastSelectedPlace: null,\n taxiFareSummaries: [],\n targetAirLine: 'ANA',\n searchHistories: [],\n isShowUMModal: true\n};\n\nconst conditionReducer = (state = initialState, action: ConditionAction) => {\n switch (action.type) {\n case 'UPDATE_POINT':\n return {\n ...state,\n point: action.payload,\n };\n case 'UPDATE_POINT_CODE':\n return {\n ...state,\n pointCode: action.payload,\n };\n case 'UPDATE_POINT_GEOCODE':\n return {\n ...state,\n pointGeoCode: action.payload,\n };\n case 'UPDATE_VIA':\n return {\n ...state,\n via: action.payload,\n };\n case 'UPDATE_VIA_CODE':\n return {\n ...state,\n viaCode: action.payload,\n }\n case 'SWITCH_HAS_VIA':\n return {\n ...state,\n hasVia: action.payload,\n }\n case ConditionActionType.UPDATE_POINT_TYPE:\n return {\n ...state,\n pointType: action.payload,\n }\n case 'UPDATE_DATE':\n return {\n ...state,\n date: action.payload,\n };\n case 'UPDATE_FLIGHT':\n return {\n ...state,\n flight: action.payload,\n };\n case 'UPDATE_FLIGHT_NUMBER':\n return {\n ...state,\n flightNumber: action.payload,\n };\n case ConditionActionType.UPDATE_FLIGHT_STATUS:\n return {\n ...state,\n flightStatus: action.payload,\n }\n case ConditionActionType.UPDATE_FLIGHT_STATUS_FOR_SEARCH_AD:\n return {\n ...state,\n flightStatusForSeachAd: action.payload,\n }\n case ConditionActionType.UPDATE_FLIGHT_STATUS_USER_SET_DATE_FOR_SEARCH_AD:\n return {\n ...state,\n flightStatusUserSetDateForSearchAd: action.payload,\n }\n case ConditionActionType.UPDATE_ARRIVAL_TIME_TO_AIRPORT:\n return {\n ...state,\n arrivalTimeToAirport: action.payload,\n }\n case ConditionActionType.UPDATE_CITY_BANE:\n return {\n ...state,\n cityName: action.payload,\n }\n case ConditionActionType.UPDATE_QUERY:\n return {\n ...state,\n query: action.payload,\n };\n case ConditionActionType.UPDATE_PLACE:\n return {\n ...state,\n place: action.payload,\n }\n case ConditionActionType.UPDATE_LAST_SELECTED_PLACE:\n return {\n ...state,\n lastSelectedPlace: action.payload,\n }\n case ConditionActionType.UPDATE_SEARCHED_AT:\n return {\n ...state,\n searchedAt: action.payload,\n };\n case ConditionActionType.UPDATE_COURSE_INDEX:\n return {\n ...state,\n courseIndex: action.payload,\n }\n case ConditionActionType.UPDATE_DIRECTIONS:\n return {\n ...state,\n directions: action.payload,\n }\n case ConditionActionType.UPDATE_OKIBAWABUS_BUSSTOPLIST:\n return {\n ...state,\n okinawaBusStopList: action.payload,\n }\n case ConditionActionType.UPDATE_TAXI_FARE_SUMMARIES:\n return {\n ...state,\n taxiFareSummaries: action.payload,\n }\n case ConditionActionType.UPDATE_SEARCH_HISTORIES:\n return {\n ...state,\n searchHistories: action.payload,\n }\n case 'SWITCH_IS_DEPARTURE_GUIDE':\n return {\n ...state,\n isDepartureGuide: action.payload,\n };\n case 'SWITCH_SHINKANSEN':\n return {\n ...state,\n isEnabledShinkansen: action.payload,\n }\n case 'SWITCH_LIMITED_EXPRESS':\n return {\n ...state,\n isEnabledLimitedExpress: action.payload,\n }\n case ConditionActionType.SWITCH_IC:\n return {\n ...state,\n isEnabledIc: action.payload,\n }\n case ConditionActionType.SWITCH_PRIORITY_AIRPORT_BUS:\n return {\n ...state,\n hasPriorityAirportBus: action.payload,\n }\n case ConditionActionType.SWITCH_PRIORITY_CAR:\n return {\n ...state,\n hasPriorityCar: action.payload,\n }\n case ConditionActionType.SWITCH_PRIORITY_CAR_WITH_BARRIER_FREE:\n return {\n ...state,\n hasPriorityCarWithBarrierFree: action.payload,\n }\n case 'SWITCH_DOMESTIC':\n return {\n ...state,\n isDomestic: action.payload,\n }\n case 'SWITCH_CONSENT_AIRPORT_ARRIVAL_TIME':\n return {\n ...state,\n consentAirportArrivalTime: action.payload,\n }\n case 'SWITCH_AIRPORT_MODAL_SHOW':\n return {\n ...state,\n airportModalShow: action.payload,\n }\n case ConditionActionType.UPDATE_MODAL_STATE:\n return {\n ...state,\n modalStatus: action.payload,\n }\n case 'SWITCH_LIMOUSINE_BUS_MODAL_SHOW':\n return {\n ...state,\n tokyoLimousineBusModalShow: action.payload,\n }\n case 'SWITCH_BUS_TICKET_OITA_MODAL_SHOW':\n return {\n ...state,\n busTicketOitaModalShow: action.payload,\n }\n case 'SWITCH_IS_NO_SET_TERMINAL_HND':\n return {\n ...state,\n isNoSetTerminalHND: action.payload,\n }\n case ConditionActionType.SWITCH_IS_AVALABLE:\n return {\n ...state,\n isAvalable: action.payload,\n }\n case ConditionActionType.SWITCH_IS_SHOS_OKINAWA_BUS_LINK:\n return {\n ...state,\n isShowOkinawaBusLink: action.payload,\n }\n case ConditionActionType.UPDATE_TARGET_AIRLINE:\n return {\n ...state,\n targetAirLine: action.payload,\n }\n case 'ANA_GET_FLIGHT_START':\n return {\n ...state,\n flightStatus: new FlightInfo(),\n };\n case 'ANA_GET_FLIGHT_SUCCEED':\n return {\n ...state,\n flightStatus: action.payload.result,\n };\n case 'ANA_GET_FLIGHT_FAIL':\n return {\n ...state,\n error: action.payload.error,\n };\n case ConditionActionType.ANA_GET_ROUTE_TYPE_START:\n return {\n ...state,\n flightStatus: new FlightInfo(),\n };\n case ConditionActionType.ANA_GET_ROUTE_TYPE_SUCCEED:\n return {\n ...state,\n flightStatus: action.payload.result,\n };\n case ConditionActionType.ANA_GET_ROUTE_TYPE_FAIL:\n return {\n ...state,\n error: action.payload.error,\n };\n case 'EKISPERT_GET_EXTREME_START':\n return {\n ...state,\n course: {},\n };\n case 'EKISPERT_GET_EXTREME_SUCCEED':\n return {\n ...state,\n course: action.payload.result,\n };\n case 'EKISPERT_GET_EXTREME_FAIL':\n return {\n ...state,\n error: action.payload.error,\n };\n case 'EKISPERT_GET_CONDITION_START':\n return {\n ...state,\n conditionDetail: '',\n };\n case 'EKISPERT_GET_CONDITION_SUCCEED':\n return {\n ...state,\n conditionDetail: action.payload.result,\n };\n case 'EKISPERT_GET_CONDITION_FAIL':\n return {\n ...state,\n error: action.payload.error,\n };\n case 'UPDATE_COURSE':\n return {\n ...state,\n course: action.payload,\n }\n case ConditionActionType.SWITCH_IS_SHOWUMMODAL:\n return {\n ...state,\n isShowUMModal: action.payload,\n }\n default:\n return state;\n }\n}\n\nexport default conditionReducer;\n","import Place from \"../services/google/Place\";\nimport { PlaceDirections } from \"../services/google/PlaceDirections\";\nimport { AswLinkageInfo } from \"../services/public/models/aswLinkageInfo\";\nimport { DynamicPackageTicketingLinkList } from \"../services/public/models/dynamicPackageTicketingLink\";\nimport { RequestSearchType } from \"../services/public/models/searchCourse\";\nimport { UniversalMaaSCourse } from \"../services/universalMaas/models/universalMaaSCourse\";\nimport { PointType } from \"../states/common\";\nimport { displayOrderType, OnewayConditionState, Prefecture, PublicCourse, SortInfo, SortType } from \"../states/publicConditionState\";\nimport { Query } from \"../states/query\";\nimport { GeoLocation } from \"../utils/geoLocation\";\n\n// 探索æ¡ä»¶ã«é–¢ã‚るアクション。\nexport enum PublicConditionActionType {\n SWITCH_IS_UNAVAILABLE_SERVICE = 'SWITCH_IS_UNAVAILABLE_SERVICE',\n INITIAL_RETURN_TRIP = 'INITIAL_RETURN_TRIP',\n\n SWITCH_ROUND = 'SWITCH_ROUND',\n UPDATE_OUTBOUND = 'UPDATE_OUTBOUND',\n UPDATE_RETURN_TRIP = 'UPDATE_RETURN_TRIP',\n SWITCH_MAP_DEPARTURE = 'SWITCH_MAP_DEPARTURE',\n\n UPDATE_DEP_POINT = 'UPDATE_DEP_POINT',\n UPDATE_ARR_POINT = 'UPDATE_ARR_POINT',\n UPDATE_DEP_POINT_CODE = 'UPDATE_DEP_POINT_CODE',\n UPDATE_ARR_POINT_CODE = 'UPDATE_ARR_POINT_CODE',\n UPDATE_DEP_POINT_TYPE = 'UPDATE_DEP_POINT_TYPE',\n UPDATE_ARR_POINT_TYPE = 'UPDATE_ARR_POINT_TYPE',\n UPDATE_DEP_POINT_GEOCODE = 'UPDATE_DEP_POINT_GEOCODE',\n UPDATE_ARR_POINT_GEOCODE = 'UPDATE_ARR_POINT_GEOCODE',\n UPDATE_VIA = 'UPDATE_PUBLIC_VIA',\n UPDATE_VIA_CODE = 'UPDATE_PUBLIC_VIA_CODE',\n SWITCH_HAS_VIA = 'SWITCH_PUBLIC_HAS_VIA',\n UPDATE_DATE = 'UPDATE_PUBLIC_DATE',\n UPDATE_DISPLAY_ORDER = 'UPDATE_DISPLAY_ORDER',\n UPDATE_DISPLAY_PAYMENT = 'UPDATE_DISPLAY_PAYMENT',\n UPDATE_ARRIVAL_TIME_TO_AIRPORT = 'UPDATE_PUBLIC_ARRIVAL_TIME_TO_AIRPORT',\n UPDATE_COURSE = 'UPDATE_PUBLIC_COURSE',\n UPDATE_QUERY = 'UPDATE_PUBLIC_QUERY',\n UPDATE_DEP_PLACE = 'UPDATE_DEP_PLACE',\n UPDATE_ARR_PLACE = 'UPDATE_ARR_PLACE',\n UPDATE_DEP_PREFECTURE = 'UPDATE_DEP_PREFECTURE',\n UPDATE_ARR_PREFECTURE = 'UPDATE_ARR_PREFECTURE',\n UPDATE_DEP_DIRECTIONS = 'UPDATE_DEP_DIRECTIONS',\n UPDATE_ARR_DIRECTIONS = 'UPDATE_ARR_DIRECTIONS',\n UPDATE_SORT_INFO = 'UPDATE_SORT_INFO',\n UPDATE_COURSE_INDEX = 'UPDATE_COURSE_INDEX',\n UPDATE_DEP_LAST_SELECTED_PLACE = 'UPDATE_DEP_LAST_SELECTED_PLACE',\n UPDATE_ARR_LAST_SELECTED_PLACE = 'UPDATE_ARR_LAST_SELECTED_PLACE',\n UPDATE_SORT_TYPE = 'UPDATE_SORT_TYPE',\n UPDATE_ASW_LINKAGE_INFO = 'UPDATE_ASW_LINKAGE_INFO',\n UPDATE_SEARCH_TYPE = 'UPDATE_SEARCH_TYPE',\n UPDATE_UNSETTLED_OUTBOUND_DATE = 'UPDATE_UNSETTLED_OUTBOUND_DATE',\n UPDATE_UNSETTLED_RETURN_TRIP_DATE = 'UPDATE_UNSETTLED_RETURN_TRIP_DATE',\n UPDATE_DYNAMIC_PACKAGE_TICKETING_LINK_LIST = 'UPDATE_DYNAMIC_PACKAGE_TICKETING_LINK_LIST',\n UPDATE_REQUEST_FLIGHT_INFO_QUERY = 'UPDATE_REQUEST_FLIGHT_INFO_QUERY',\n UPDATE_UNIVERSALMAAS_COURSE = 'UPDATE_UNIVERSALMAAS_COURSE',\n UPDATE_SEARCH_REQUEST_BODY = 'UPDATE_SEARCH_REQUEST_BODY',\n UPDATE_SEARCH_EXPIRED_DATE = 'UPDATE_SEARCH_EXPIRED_DATE',\n\n SWITCH_IS_ENABLED_SHINKANSEN = 'SWITCH_IS_ENABLED_SHINKANSEN',\n SWITCH_IS_ENABLED_LIMITED_EXPRESS = 'SWITCH_IS_ENABLED_LIMITED_EXPRESS',\n SWITCH_IS_ENABLED_IC = 'SWITCH_IS_ENABLED_IC',\n SWITCH_HAS_PRIORITY_AIRPORT_BUS = 'SWITCH_HAS_PRIORITY_AIRPORT_BUS',\n SWITCH_HAS_PRIORITY_CAR = 'SWITCH_HAS_PRIORITY_CAR',\n SWITCH_NOW_SELECT_OUTBOUND = 'SWITCH_NOW_SELECT_OUTBOUND',\n SWITCH_IS_LOADING_ASW_INFO = 'SWITCH_IS_LOADING_ASW_INFO',\n SWITCH_IS_ACCEPT_ESTABLISHED_ROUTE = 'SWITCH_IS_ACCEPT_ESTABLISHED_ROUTE',\n SWITCH_IS_UNIVERSAL_MAAS_MODE = 'SWITCH_IS_UNIVERSAL_MAAS_MODE',\n SWITCH_IS_FLIGHT_RESERVED_MODE = 'SWITCH_IS_FLIGHT_RESERVED_MODE'\n}\n\nexport const OUTBOUND = 'OUTBOUND';\nexport const RETURN_TRIP = 'RETURN_TRIP';\n\nexport interface PublicConditionAction {\n payload: any;\n type: PublicConditionActionType;\n parentType?: string;\n}\n\nexport const switchIsUnavailableService = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_UNAVAILABLE_SERVICE,\n});\n\nexport const switchIsUniversalMaaSMode = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_UNIVERSAL_MAAS_MODE,\n});\n\nexport const initialReturnTrip = (v: OnewayConditionState) => ({\n payload: v,\n type: PublicConditionActionType.INITIAL_RETURN_TRIP,\n});\n\nexport const switchRound = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_ROUND,\n});\n\nexport const updateOutbound = (v: OnewayConditionState) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_OUTBOUND,\n});\n\nexport const updateReturnTrip = (v: OnewayConditionState) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_RETURN_TRIP,\n});\n\nexport const updateSortInfo = (v: SortInfo) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_SORT_INFO\n});\n\nexport const switchMapDeparture = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_MAP_DEPARTURE,\n});\n\nexport const updateCourseIndex = (v: number) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_COURSE_INDEX,\n});\n\nexport const updateSortType = (v: SortType) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_SORT_TYPE,\n});\n\nexport const updateDepPoint = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_POINT,\n parentType: parentType,\n});\n\nexport const updateArrPoint = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_POINT,\n parentType: parentType,\n});\n\nexport const updateDepPointCode = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_POINT_CODE,\n parentType: parentType,\n});\n\nexport const updateArrPointCode = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_POINT_CODE,\n parentType: parentType,\n});\n\nexport const updateDepPointType = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_POINT_TYPE,\n parentType: parentType,\n});\n\nexport const updateArrPointType = (v: string, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_POINT_TYPE,\n parentType: parentType,\n});\n\nexport const updateDepPointGeoCode = (v: GeoLocation, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_POINT_GEOCODE,\n parentType: parentType,\n});\n\nexport const updateArrPointGeoCode = (v: GeoLocation, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_POINT_GEOCODE,\n parentType: parentType,\n});\n\nexport const updateVia = (v: boolean, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_VIA,\n parentType: parentType,\n});\n\nexport const updateViaCode = (v: PointType, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_VIA_CODE,\n parentType: parentType,\n});\n\nexport const switchHasVia = (v: PointType, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_HAS_VIA,\n parentType: parentType,\n});\n\nexport const updatePublicDate = (v: Date, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DATE,\n parentType: parentType,\n});\n\nexport const updateDisplayOrder = (v: displayOrderType, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DISPLAY_ORDER,\n parentType: parentType,\n});\n\nexport const updateDisplayPayment = (v: number, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DISPLAY_PAYMENT,\n parentType: parentType,\n});\n\nexport const updateArrivalTimeToAirport = (v: number, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARRIVAL_TIME_TO_AIRPORT,\n parentType: parentType,\n});\n\nexport const updateCourse = (v: PublicCourse[], parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_COURSE,\n parentType: parentType,\n});\n\nexport const updateAswLinkageInfo = (v: AswLinkageInfo | null) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ASW_LINKAGE_INFO\n});\n\nexport const updateDynamicPackageTicketingLinkList = (v: DynamicPackageTicketingLinkList | null) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DYNAMIC_PACKAGE_TICKETING_LINK_LIST\n});\n\nexport const updateNowSelectOutbound = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_NOW_SELECT_OUTBOUND\n});\n\nexport const switchIsLoadingAswInfo = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_LOADING_ASW_INFO\n});\n\nexport const updatePublicQuery = (v: Query, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_QUERY,\n parentType: parentType,\n});\n\nexport const updateDepPlace = (v: Place | null, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_PLACE,\n parentType: parentType,\n});\n\nexport const updateArrPlace = (v: Place | null, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_PLACE,\n parentType: parentType,\n});\n\nexport const updateDepPrefecture = (v: Prefecture | null, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_PREFECTURE,\n parentType: parentType,\n});\n\nexport const updateArrPrefecture = (v: Prefecture | null, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_PREFECTURE,\n parentType: parentType,\n});\n\nexport const updateDepDirections = (v: PlaceDirections, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_DIRECTIONS,\n parentType: parentType,\n});\n\nexport const updateArrDirections = (v: PlaceDirections, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_DIRECTIONS,\n parentType: parentType,\n});\n\nexport const switchIsEnabledShinkansen = (v: boolean, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_ENABLED_SHINKANSEN,\n parentType: parentType,\n});\n\nexport const switchIsEnabledLimitedExpress = (v: boolean, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_ENABLED_LIMITED_EXPRESS,\n parentType: parentType,\n});\n\nexport const switchIsEnabledIc = (v: boolean, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_ENABLED_IC,\n parentType: parentType,\n});\n\nexport const switchHasPriorityAirportBus = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_HAS_PRIORITY_AIRPORT_BUS,\n});\n\nexport const switchHasPriorityCar = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_HAS_PRIORITY_CAR,\n});\n\nexport const updateDepLastSelectedPlace = (v: Place, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_DEP_LAST_SELECTED_PLACE,\n parentType: parentType,\n});\n\nexport const switchIsFlightReservedMode = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_FLIGHT_RESERVED_MODE,\n})\n\nexport const updateArrLastSelectedPlace = (v: Place, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_ARR_LAST_SELECTED_PLACE,\n parentType: parentType,\n});\n\nexport const updateSearchType = (v: RequestSearchType, parentType: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_SEARCH_TYPE,\n parentType: parentType,\n})\n\nexport const updateUnsettledOutboundDate = (v: Date) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_UNSETTLED_OUTBOUND_DATE,\n})\n\nexport const updateUnsettledReturnTripDate = (v: Date) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_UNSETTLED_RETURN_TRIP_DATE,\n})\n\nexport const switchIsAcceptEstablishedRoute = (v: boolean) => ({\n payload: v,\n type: PublicConditionActionType.SWITCH_IS_ACCEPT_ESTABLISHED_ROUTE,\n})\n\nexport const updateRequestFlightInfoQuery = (v: string) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_REQUEST_FLIGHT_INFO_QUERY,\n})\n\nexport const updateUniversalMaaSCourse = (v: UniversalMaaSCourse) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_UNIVERSALMAAS_COURSE,\n})\n\nexport const updateSearchRequestBody = (v: any) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_SEARCH_REQUEST_BODY,\n})\n\nexport const updateSearchExpiredDate = (v: Date) => ({\n payload: v,\n type: PublicConditionActionType.UPDATE_SEARCH_EXPIRED_DATE,\n})\n","import { Lang } from \"../../../states/query\";\n\n/**\n * 経路検索ã®Request\n */\nexport interface RequestSearchCourse {\n mode: string,\n language: Lang,\n outwardTrip: OneWayRequestSearchCourse,\n returnTrip?: OneWayRequestSearchCourse,\n asyncGetFlightInfo?: boolean,\n barrierFreeMode?: boolean,\n searchDrivingRouteMode?: boolean\n}\n\n// 便固定検索時ã®Request\nexport interface ReservedFlight {\n origin: string,\n destination: string,\n departureDatetime: string,\n arrivalDatetime: string,\n flightNumber: string\n}\n\nexport interface OneWayRequestSearchCourse {\n origin: RequestSearchPoint,\n destination: RequestSearchPoint,\n conditions: {\n date: string,\n time: string,\n searchType: RequestSearchType,\n arrivalAdjustmentTime: string,\n prioritizeHighwayBus: boolean,\n prioritizeCar: boolean,\n prioritizeIc: boolean,\n applyConvertingToMultipleAirport: boolean\n },\n reservedFlight?: ReservedFlight\n}\n\nexport interface RequestSearchPoint {\n type: RequesrtPointType,\n Location?: {\n latlng: string,\n name: string\n }\n Station?: {\n latlng: string,\n code: string\n }\n}\n\nexport enum RequesrtPointType {\n STATION = 'station',\n LOCATION = 'location'\n}\n\nexport enum RequestSearchType {\n DEPARTURE = 'departure',\n ARRIVAL = 'arrival'\n}\n\n/**\n * å‰å¾Œã®ãƒ€ã‚¤ãƒ¤æ¤œç´¢ã®Request\n */\nexport interface RequestDiaList {\n serializeData: string,\n sectionIndex: number,\n isOnlyANA: boolean,\n numOfItems?: number,\n applyTicketInfo: boolean\n}\n\n/**\n * スクレイピングçµæžœå–å¾—API\n */\nexport interface GetFlightInfoRequest {\n query: string\n}\n","import { Course, Price } from './../services/ekispert/models';\nimport Place from '../services/google/Place';\nimport { PlaceDirections } from '../services/google/PlaceDirections';\nimport { GeoLocation } from '../utils/geoLocation';\nimport { PointType } from './common';\nimport { PublicQuery } from './publicQuery';\nimport { AswLinkageInfo } from '../services/public/models/aswLinkageInfo';\nimport { RequestSearchType } from '../services/public/models/searchCourse';\nimport { DynamicPackageTicketingLinkList } from '../services/public/models/dynamicPackageTicketingLink';\nimport { UniversalMaaSCourse } from '../services/universalMaas/models/universalMaaSCourse';\n\nexport enum SortType {\n FASTER = 'FASTER',\n CHEAPER = 'CHEAPER',\n EASIER = 'EASIER'\n}\n\n// 一般開放ã«ã¦æ¤œç´¢ã«ä½¿ç”¨ã™ã‚‹çŠ¶æ…‹\nexport interface PublicConditionState {\n /** 障害発生時ãªã©ä¸€æ™‚çš„ã«ã‚µãƒ¼ãƒ“スãŒåˆ©ç”¨ä¸å¯ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isUnavailableService: boolean,\n // 往復ã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚°\n isRound: boolean\n // 何番目ã®çµŒè·¯ã‚’é¸æŠžä¸\n courseIndex: number,\n // 往路ã®æƒ…å ±ã‚’æ ¼ç´ã™ã‚‹\n outbound: OnewayConditionState,\n // 復路ã®æƒ…å ±ã‚’æ ¼ç´ã™ã‚‹\n returnTrip: OnewayConditionState,\n // 往路・復路ã®ãƒžãƒƒãƒãƒ³ã‚°ãƒ†ãƒ¼ãƒ–ル\n sortInfo: SortInfo,\n // 地図ã‹ã‚‰é¸æŠžã‚’出発地ã§é–‹ã„ãŸã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚°\n isMapDeparture: boolean,\n // クエリ色々\n query: PublicQuery,\n // é¸æŠžä¸ã®ã‚½ãƒ¼ãƒˆã‚¿ã‚¤ãƒ—\n selectedSortType: SortType,\n // ASWã‹ã‚‰ã‚¹ã‚¯ãƒ¬ã‚¤ãƒ”ングã§å–å¾—ã—ãŸç©ºå¸æƒ…å ±\n aswLinkageInfo: AswLinkageInfo | null,\n // ASWã‹ã‚‰ã‚¹ã‚¯ãƒ¬ã‚¤ãƒ”ングã—ãŸãƒ€ã‚¤ãƒŠãƒŸãƒƒã‚¯ãƒ‘ッケージã¸ã®URLリスト\n dynamicPackageTicketingLinkList: DynamicPackageTicketingLinkList | null,\n // ç¾åœ¨é¸æŠžä¸ãŒå¾€è·¯ã‹å¾©è·¯ã‹\n nowSelectOutbound: boolean,\n /** 編集ä¸ã®é …ç›®ã®å€¤ã€‚(「確定ã€ãƒœã‚¿ãƒ³ã‚’押ã™å‰ã®ç·¨é›†ç”¨ã®UIã§åˆ©ç”¨ã™ã‚‹ã€‚) */\n unsettled: Unsettled,\n // ASWã‹ã‚‰ã®ã‚¹ã‚¯ãƒ¬ã‚¤ãƒ”ãƒ³ã‚°æƒ…å ±ã‚’èªã¿è¾¼ã¿ä¸ã‹\n isLoadingASWInfo: boolean,\n /** 旅程ãŒæˆã‚Šç«‹ãŸãªã„検索ã§å‡ºã‚‹ã‚¢ãƒ©ãƒ¼ãƒˆã§OKを押ã—ãŸã‹ */\n isAcceptEstablishedRoute: boolean,\n /** ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®RequestQuery */\n requestFlightInfoQuery: string,\n /** UniversalMaaS実証実験モード㋠*/\n isUniversalMaaSMode: boolean,\n /** 便指定モード㋠*/\n isFlightReservedMode: boolean,\n // UniversalMaaS実証実験モードã§ä½¿ç”¨ã™ã‚‹è¡Œãæ¢ã¾ã‚Šãƒšãƒ¼ã‚¸ã®çµŒè·¯æƒ…å ±\n universalMaaSCourse?: UniversalMaaSCourse,\n // 経路検索ã®ResponseBody(簡易経路å–å¾—ã«ã¦åˆ©ç”¨ã™ã‚‹ï¼‰\n searchRequestBody: any\n // ãらãŸã³æ¤œç´¢å¯èƒ½ãƒªãƒŸãƒƒãƒˆ\n searchExpiredDate: Date\n}\n\n// 往路ã¨å¾©è·¯ã®ãƒžãƒƒãƒãƒ³ã‚°ãƒ†ãƒ¼ãƒ–ル\nexport interface SortInfo {\n [key: string]: (number | number[])[],\n faster: (number | number[])[],\n cheaper: (number | number[])[],\n easier: (number | number[])[]\n}\n\n// 一般開放用ã§è¡¨ç¤ºã™ã‚‹ãƒ•ãƒ©ã‚¤ãƒˆæ¦‚è¦æƒ…å ±\nexport interface FlightSummary {\n // 予約ページé·ç§»ç”¨ã®ãƒªãƒ³ã‚¯\n // TODO: 後々予約ページã®ä½¿ç”¨ãŒå›ºã¾ã£ãŸã‚‰å®Ÿè£…ã™ã‚‹\n // 予約便ã®ãƒ•ãƒ©ã‚¤ãƒˆãƒŠãƒ³ãƒãƒ¼\n flightNumber: string,\n // 出発空港å\n depAirportName: string,\n // 到ç€ç©ºæ¸¯å\n arrAirportName: string,\n // 出発空港コード\n depAirportCode: string,\n // 到ç€ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n arrAirportCode: string,\n // 空å¸æƒ…å ±\n vacancyInfo: string,\n // 出発時刻\n depDate: Date,\n // 到ç€æ™‚刻\n arrDate: Date,\n // é‹è³ƒ\n price?: Price,\n // フライト区間ã®Lineè¦ç´ Index番å·\n lineIndex: number\n}\n\n// 一般開放用ã®ç©ºæ¸¯ã¾ã§ãƒ»ç©ºæ¸¯ã‹ã‚‰ã®åŒºé–“ã®ã‚µãƒžãƒªãƒ¼æƒ…å ±\nexport interface SectionSummary {\n // (空港・出発地)出発時刻\n depDate: Date,\n // (空港・目的地)到ç€æ™‚刻\n arrDate: Date,\n // 片é“é‹è³ƒ\n fare: number,\n // 片é“料金\n charge: number,\n // 片é“åˆè¨ˆé‡‘é¡\n sumPrice: number,\n // ä¹—ã‚Šæ›ãˆå›žæ•°\n transferCount: number\n}\n\n// 一般開放用ã®çµŒè·¯æƒ…å ±\nexport interface PublicCourse {\n // ANAã®ç©ºè·¯ã‚’å«ã‚€ã‹\n includeAirways: boolean,\n // 空路ã®æ¦‚è¦\n flightSummary: FlightSummary[],\n course: Course,\n // 出発空港ã¾ã§ã®æƒ…å ±ã®æ¦‚è¦\n toAirport: SectionSummary | null,\n // 到ç€ç©ºæ¸¯ã‹ã‚‰ã®æƒ…å ±ã®æ¦‚è¦\n fromAirport: SectionSummary | null,\n // 航空便変更ã«ã¦èªã¿è¾¼ã¿ä¸ã‹\n isReLoading: boolean,\n // 一度å†æ¤œç´¢ã‚’è¡Œã£ãŸã‹\n isReplaced: boolean\n}\n\n// 往路・復路ã®ãã‚Œãžã‚Œã§ä½¿ç”¨ã™ã‚‹æ¤œç´¢æƒ…å ±\nexport interface OnewayConditionState {\n // ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã€‚(出発地ã¾ãŸã¯ç›®çš„地。)\n depPoint: string,\n arrPoint: string,\n // ユーザーãŒæŒ‡å®šã—ãŸé§…ã®ã‚³ãƒ¼ãƒ‰ã€ã¾ãŸã¯åœ°ç‚¹ã€‚\n depPointCode: string,\n arrPointCode: string,\n // ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã®åº§æ¨™æƒ…å ±\n depPointGeoCode: GeoLocation,\n arrPointGeoCode: GeoLocation,\n // 経由地。\n via: string,\n // 経由地ã®é§…コード。\n viaCode: string,\n // 経由地ãŒã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n hasVia: boolean,\n // ユーザーãŒå–å¾—ã—ãŸåœ°ç‚¹ï¼ˆå‡ºç™ºåœ°ã¾ãŸã¯ç›®çš„地)ã®ç¨®åˆ¥ã€‚\n // (駅åã€ç·¯åº¦çµŒåº¦ã€ä½æ‰€ã®3種類。)\n depPointType: PointType,\n arrPointType: PointType,\n // 探索日時。\n date: Date,\n // ユーザーãŒæŒ‡å®šã™ã‚‹ç©ºæ¸¯æ»žåœ¨æ™‚間。\n arrivalTimeToAirport: number,\n // 探索æ¡ä»¶è©³ç´°ã€‚(利用ã™ã‚‹äº¤é€šç¨®åˆ¥ãªã©ã€‚)\n conditionDetail: string,\n // çµŒè·¯æƒ…å ±\n course: PublicCourse[],\n // 優先表示\n priorityCondition: priorityCondition,\n\n /** インクリメンタルサーãƒã§å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ± */\n depPlace: Place | null,\n arrPlace: Place | null,\n\n depPrefecture: Prefecture | null,\n arrPrefecture: Prefecture | null,\n\n /** 空港ã‹ã‚‰ç›®çš„地ã¾ã§ã®GoogleDirectionAPIã‹ã‚‰å–å¾—ã—ãŸãƒ«ãƒ¼ãƒˆæƒ…å ± */\n depDirections: PlaceDirections | null,\n arrDirections: PlaceDirections | null,\n depLastSelectedPlace: Place | null,\n arrLastSelectedPlace: Place | null,\n /** 探索種別。(「発時刻探索ã€ã¾ãŸã¯ã€Œç€æ™‚刻探索ã€ã®ã¿ã€‚) */\n // https://docs.ekispert.com/v1/dictionary/search-type/\n searchType: RequestSearchType,\n}\n\n// 優先表示ã™ã‚‹æƒ…å ±ã‚’ã¾ã¨ã‚ã‚‹\nexport interface priorityCondition {\n /** 空港連絡ãƒã‚¹ã‚’優先ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityAirportBus: boolean,\n /** 自動車を優先ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasPriorityCar: boolean\n}\n\nexport enum displayOrderType {\n // æ™‚é–“é †\n TIME = 'TIME',\n // æ–™é‡‘é †\n PAYMENT = 'PAYMENT',\n // ä¹—æ›å›žæ•°é †\n EXCHANGE = 'EXCHANGE'\n}\n\n/** 編集ä¸ï¼ˆæœªç¢ºå®šï¼‰ã®é …目。 */\nexport interface Unsettled {\n /** 確定å‰ã®å¾€è·¯ã®æŽ¢ç´¢æ—¥æ™‚。 */\n outboundDate: Date,\n /** 確定å‰ã®å¾©è·¯ã®æŽ¢ç´¢æ—¥æ™‚。 */\n returnTripDate: Date,\n}\n\nexport interface Prefecture {\n Name: string,\n code: string\n}\n","import { OUTBOUND, RETURN_TRIP, PublicConditionAction, PublicConditionActionType } from \"../actions/publicConditionAction\"\nimport { RequestSearchType } from \"../services/public/models/searchCourse\"\nimport { PointType } from \"../states/common\"\nimport { OnewayConditionState, priorityCondition, PublicConditionState, SortType } from \"../states/publicConditionState\"\n\nconst initialPriorityCondition: priorityCondition = {\n hasPriorityAirportBus: false,\n hasPriorityCar: false\n}\n\n// 翌日ã®æ—¥ä»˜ã‚’å–å¾—ã™ã‚‹\nconst getTomorrow = () => {\n let date = new Date();\n // 翌日ã®æ—¥ä»˜ã‚’セット\n date.setDate( date.getDate() + 1 )\n\n // 時間ã¯00:00:00ã«ã‚»ãƒƒãƒˆ\n date.setHours(7);\n date.setMinutes(0);\n date.setSeconds(0);\n return date;\n}\n\nconst initialOnewayState: OnewayConditionState = {\n depPoint: '',\n arrPoint: '',\n depPointCode: '',\n arrPointCode: '',\n depPointType: PointType.NONE,\n arrPointType: PointType.NONE,\n depPointGeoCode: {\n lat: 0,\n lng: 0\n },\n arrPointGeoCode: {\n lat: 0,\n lng: 0\n },\n via: '',\n viaCode: '',\n hasVia: false,\n date: getTomorrow(),\n arrivalTimeToAirport: 60,\n conditionDetail: '',\n course: [],\n priorityCondition: initialPriorityCondition,\n depPlace: null,\n arrPlace: null,\n depPrefecture: null,\n arrPrefecture: null,\n depDirections: null,\n arrDirections: null,\n depLastSelectedPlace: null,\n arrLastSelectedPlace: null,\n searchType: RequestSearchType.DEPARTURE,\n}\n\nexport const initialSortInfo = {\n faster: [],\n cheaper: [],\n easier: []\n}\n\nconst initialState: PublicConditionState = {\n isUnavailableService: false,\n isRound: true,\n courseIndex: 0,\n outbound: initialOnewayState,\n returnTrip: initialOnewayState,\n sortInfo: initialSortInfo,\n isMapDeparture: false,\n query: {\n isRound: 'true',\n outboundDepPoint: '',\n outboundDepPointCode: '',\n outboundDepPointType: PointType.NONE,\n outboundDepPointGeoCode: '',\n outboundArrPoint: '',\n outboundArrPointCode: '',\n outboundArrPointType: PointType.NONE,\n outboundArrPointGeoCode: '',\n outboundDate: `${(new Date()).getTime()}`,\n outboundArrivalTimeToAirport: '60',\n outboundIsEnabledIc: 'true',\n outboundHasPriorityAirportBus: '',\n outboundHasPriorityCar: '',\n outboundHasPriorityBarrierFreeMode: '',\n outboundSearchType: RequestSearchType.DEPARTURE,\n returnTripDepPoint: '',\n returnTripDepPointCode: '',\n returnTripDepPointType: '',\n returnTripDepPointGeoCode: '',\n returnTripArrPoint: '',\n returnTripArrPointCode: '',\n returnTripArrPointType: '',\n returnTripArrPointGeoCode: '',\n returnTripDate: '',\n returnTripArrivalTimeToAirport: '',\n returnTripIsEnabledIc: '',\n returnTripHasPriorityAirportBus: '',\n returnTripHasPriorityCar: '',\n returnTripHasPriorityBarrierFreeMode: '',\n returnTripSearchType: RequestSearchType.DEPARTURE,\n },\n selectedSortType: SortType.FASTER,\n aswLinkageInfo: null,\n dynamicPackageTicketingLinkList: null,\n nowSelectOutbound: true,\n unsettled: {\n outboundDate: new Date(),\n returnTripDate: new Date(),\n },\n isLoadingASWInfo: false,\n isAcceptEstablishedRoute: false,\n requestFlightInfoQuery: \"\",\n isUniversalMaaSMode: false,\n isFlightReservedMode: false,\n searchRequestBody: {},\n /** ãらãŸã³æ¤œç´¢å¯èƒ½æœŸé–“ */\n searchExpiredDate: new Date(\"2023-10-28T00:00:00+09:00\")\n}\n\nconst publicConditionReducer = (state = initialState, action: PublicConditionAction) => {\n switch(action.type) {\n case PublicConditionActionType.SWITCH_IS_UNAVAILABLE_SERVICE:\n return {\n ...state,\n isUnavailableService: action.payload,\n };\n case PublicConditionActionType.SWITCH_IS_LOADING_ASW_INFO:\n return {\n ...state,\n isLoadingASWInfo: action.payload,\n };\n case PublicConditionActionType.INITIAL_RETURN_TRIP:\n return {\n ...state,\n returnTrip: action.payload,\n };\n case PublicConditionActionType.SWITCH_ROUND:\n return {\n ...state,\n isRound: action.payload,\n };\n case PublicConditionActionType.UPDATE_OUTBOUND:\n return {\n ...state,\n outbound: action.payload,\n }\n case PublicConditionActionType.UPDATE_COURSE_INDEX:\n return {\n ...state,\n courseIndex: action.payload,\n }\n case PublicConditionActionType.UPDATE_RETURN_TRIP:\n return {\n ...state,\n returnTrip: action.payload,\n }\n case PublicConditionActionType.SWITCH_MAP_DEPARTURE:\n return {\n ...state,\n isMapDeparture: action.payload,\n }\n case PublicConditionActionType.UPDATE_SEARCH_EXPIRED_DATE:\n return {\n ...state,\n searchExpiredDate: action.payload,\n }\n case PublicConditionActionType.UPDATE_DEP_POINT:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPoint: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPoint: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_POINT:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPoint: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPoint: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DEP_POINT_CODE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPointCode: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPointCode: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DEP_POINT_GEOCODE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPointGeoCode: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPointGeoCode: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_POINT_GEOCODE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPointGeoCode: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPointGeoCode: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_POINT_CODE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPointCode: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPointCode: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DEP_POINT_TYPE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPointType: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPointType: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_POINT_TYPE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPointType: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPointType: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DEP_PLACE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPlace: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPlace: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_PLACE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPlace: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPlace: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DEP_PREFECTURE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depPrefecture: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depPrefecture: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_PREFECTURE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrPrefecture: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrPrefecture: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_DATE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, date: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, date: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARRIVAL_TIME_TO_AIRPORT:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrivalTimeToAirport: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrivalTimeToAirport: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_COURSE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, course: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, course: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_SORT_INFO:\n return {\n ...state,\n sortInfo: action.payload,\n };\n case PublicConditionActionType.UPDATE_SORT_TYPE:\n return {\n ...state,\n selectedSortType: action.payload,\n };\n case PublicConditionActionType.UPDATE_ASW_LINKAGE_INFO:\n return {\n ...state,\n aswLinkageInfo: action.payload,\n };\n case PublicConditionActionType.UPDATE_DYNAMIC_PACKAGE_TICKETING_LINK_LIST:\n return {\n ...state,\n dynamicPackageTicketingLinkList: action.payload,\n };\n case PublicConditionActionType.SWITCH_NOW_SELECT_OUTBOUND:\n return {\n ...state,\n nowSelectOutbound: action.payload,\n };\n case PublicConditionActionType.UPDATE_DEP_DIRECTIONS:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depDirections: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depDirections: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_DIRECTIONS:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrDirections: action.payload}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrDirections: action.payload}\n };\n }\n return state;\n case PublicConditionActionType.SWITCH_HAS_PRIORITY_AIRPORT_BUS:\n // 往路復路ã®ä¸¡æ–¹ã«åæ˜ ã•ã›ã‚‹\n const updateOutboundPriorityBusCondition: priorityCondition = {\n ...state.outbound.priorityCondition,\n hasPriorityAirportBus: action.payload\n };\n const updateReturnTripPriorityBusCondition: priorityCondition = {\n ...state.returnTrip.priorityCondition,\n hasPriorityAirportBus: action.payload\n };\n return {\n ...state,\n outbound: {...state.outbound, priorityCondition: updateOutboundPriorityBusCondition},\n returnTrip: {...state.returnTrip, priorityCondition: updateReturnTripPriorityBusCondition}\n };\n case PublicConditionActionType.SWITCH_HAS_PRIORITY_CAR:\n // 往路復路ã®ä¸¡æ–¹ã«åæ˜ ã•ã›ã‚‹\n const updateOutboundPriorityCarCondition: priorityCondition = {\n ...state.outbound.priorityCondition,\n hasPriorityCar: action.payload\n };\n const updateReturnTripPriorityCarCondition: priorityCondition = {\n ...state.returnTrip.priorityCondition,\n hasPriorityCar: action.payload\n };\n return {\n ...state,\n outbound: {...state.outbound, priorityCondition: updateOutboundPriorityCarCondition},\n returnTrip: {...state.returnTrip, priorityCondition: updateReturnTripPriorityCarCondition}\n };\n case PublicConditionActionType.UPDATE_DEP_LAST_SELECTED_PLACE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, depLastSelectedPlace: action.payload,}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, depLastSelectedPlace: action.payload,}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_ARR_LAST_SELECTED_PLACE:\n if (action.parentType === OUTBOUND) {\n return {\n ...state,\n outbound: {...state.outbound, arrLastSelectedPlace: action.payload,}\n };\n }\n if (action.parentType === RETURN_TRIP) {\n return {\n ...state,\n returnTrip: {...state.returnTrip, arrLastSelectedPlace: action.payload,}\n };\n }\n return state;\n case PublicConditionActionType.UPDATE_SEARCH_TYPE:\n switch(action.parentType) {\n case OUTBOUND:\n return {\n ...state,\n outbound: {...state.outbound, searchType: action.payload,}\n };\n case RETURN_TRIP:\n return {\n ...state,\n returnTrip: {...state.returnTrip, searchType: action.payload,}\n };\n default:\n break;\n }\n break;\n case PublicConditionActionType.UPDATE_UNSETTLED_OUTBOUND_DATE:\n return {\n ...state,\n unsettled: {\n ...state.unsettled,\n outboundDate: action.payload,\n }\n }\n case PublicConditionActionType.UPDATE_UNSETTLED_RETURN_TRIP_DATE:\n return {\n ...state,\n unsettled: {\n ...state.unsettled,\n returnTripDate: action.payload,\n }\n }\n case PublicConditionActionType.SWITCH_IS_ACCEPT_ESTABLISHED_ROUTE:\n return {\n ...state,\n isAcceptEstablishedRoute: action.payload,\n };\n case PublicConditionActionType.UPDATE_REQUEST_FLIGHT_INFO_QUERY:\n return {\n ...state,\n requestFlightInfoQuery: action.payload,\n };\n case PublicConditionActionType.SWITCH_IS_UNIVERSAL_MAAS_MODE:\n return {\n ...state,\n isUniversalMaaSMode: action.payload,\n };\n case PublicConditionActionType.SWITCH_IS_FLIGHT_RESERVED_MODE:\n return {\n ...state,\n isFlightReservedMode: action.payload,\n };\n case PublicConditionActionType.UPDATE_UNIVERSALMAAS_COURSE:\n return {\n ...state,\n universalMaaSCourse: action.payload,\n };\n case PublicConditionActionType.UPDATE_SEARCH_REQUEST_BODY:\n return {\n ...state,\n searchRequestBody: action.payload,\n };\n default:\n return state;\n }\n}\n\nexport default publicConditionReducer;\n","import { AxiosError } from \"axios\";\nimport InterruptTransferStation from \"../components/result/InterruptTransferStation/InterruptTransferStation\";\nimport { TaxiStandInfo } from \"../lib/TaxiStand/data/AirportTaxiMaster\";\nimport { TraininfoList } from \"../services/ekispert/models\";\nimport { TaxiCompanyConfigurations } from \"../services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf\";\nimport { GeneralTmpValues } from \"../states/general\";\nimport { UniversalMaaSQuery } from \"../states/universalMaaSQuery\";\n\n// 探索æ¡ä»¶ã«é–¢ã‚るアクション。\n\nexport enum GeneralActionType {\n SWITCH_IS_FAIL_IN_GET_COURSES = 'SWITCH_IS_FAIL_IN_GET_COURSES',\n SWITCH_SHOW_MAP = 'SWITCH_SHOW_MAP',\n SWITCH_CANDIDATE_SELECTOR_IS_VIA = 'SWITCH_CANDIDATE_SELECTOR_IS_VIA',\n SWITCH_SHOW_CANDIDATE_LIST_MODAL = 'SWITCH_SHOW_CANDIDATE_LIST_MODAL',\n SWITCH_IS_FROM_MAP_TO_CANDIDATE_LIST_MODAL = 'SWITCH_IS_FROM_MAP_TO_CANDIDATE_LIST_MODAL',\n SWITCH_IS_LOADING = 'SWITCH_IS_LOADING',\n SWITCH_IS_INITIAL = 'SWITCH_IS_INITIAL',\n SWITCH_IS_FAIL_ASSIGN_DIA = 'SWITCH_IS_FAIL_ASSIGN_DIA',\n UPDATE_ERROR_MESSAGE = 'UPDATE_ERROR_MESSAGE',\n UPDATE_REFERRER = 'UPDATE_REFERRER',\n UPDATE_TRAININFO = 'UPDATE_TRAININFO',\n UPDATE_AXIOS_ERROR = 'UPDATE_AXIOS_ERROR',\n UPDATE_PUBLIC_LANG = 'UPDATE_PUBLIC_LANG',\n UPDATE_TMP_VALUES = 'UPDATE_TMP_VALUES',\n UPDATE_TMP_IS_UPDATE_IN_MAP_SELECTOR = 'UPDATE_TMP_IS_UPDATE_IN_MAP_SELECTOR',\n UPDATE_TAXI_COMPANY_CONFIGURATIONS = 'UPDATE_TAXI_COMPANY_CONFIGURATIONS',\n UPDATE_UNIVERSAL_MAAS_QUERY = \"UPDATE_UNIVERSAL_MAAS_QUERY\",\n UPDATE_TAXI_STAND_INFO = \"UPDATE_TAXI_STAND_INFO\",\n UPDATE_INTERRUPT_TRANSFER_STATIONS = \"UPDATE_INTERRUPT_TRANSFER_STATIONS\",\n UPDATE_INTERRUPT_TRANSFER_STATIONS_IN_UNDECIDED = \"UPDATE_INTERRUPT_TRANSFER_STATIONS_IN_UNDECIDED\",\n SWITCH_IS_BACKEND_CROWDED_SEARCH = 'SWITCH_IS_BACKEND_CROWDED_SEARCH',\n SWITCH_IS_BACKEND_CROWDED_GET_FLIGHT_INFO = 'SWITCH_IS_BACKEND_CROWDED_GET_FLIGHT_INFO',\n SWITCH_IS_BACKEND_CROWDED_SEARCH_DIA_LIST = 'SWITCH_IS_BACKEND_CROWDED_SEARCH_DIA_LIST',\n SWITCH_MODE = 'SWICH_MODE',\n SWITCH_USE_V2 = 'SWITCH_USE_V2',\n RANDOM_TMP_AD_ROATATION_VALUE = 'RANDOM_TMP_AD_ROATATION_VALUE'\n}\n\nexport interface GeneralAction {\n payload: any;\n type: GeneralActionType;\n modeType?: string;\n isOutbound?: boolean;\n}\n\nexport const switchIsFailInGetCourses = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_FAIL_IN_GET_COURSES,\n})\n\nexport const switchShowMap = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_SHOW_MAP,\n})\n\nexport const switchCandidateSelectorIsVia = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_CANDIDATE_SELECTOR_IS_VIA,\n})\n\nexport const switchShowCandidateListModal = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_SHOW_CANDIDATE_LIST_MODAL,\n})\n\nexport const switchIsFromMapToCandidateListModal = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_FROM_MAP_TO_CANDIDATE_LIST_MODAL,\n})\n\nexport const switchisLoading = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_LOADING,\n})\n\nexport const switchIsInitial = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_INITIAL,\n})\n\nexport const switchIsErrorAssignDia = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_FAIL_ASSIGN_DIA,\n})\n\nexport const updateErrorMessage = (v: string) => ({\n payload: v,\n type: GeneralActionType.UPDATE_ERROR_MESSAGE,\n})\n\nexport const updateReferrer = (v: string) => ({\n payload: v,\n type: GeneralActionType.UPDATE_REFERRER,\n});\n\nexport const updateTraininfo = (v: TraininfoList) => ({\n payload: v,\n type: GeneralActionType.UPDATE_TRAININFO,\n})\n\nexport const updateAxiosError = (v: AxiosError) => ({\n payload: v,\n type: GeneralActionType.UPDATE_AXIOS_ERROR,\n})\n\nexport const updatePublicLang = (v: string) => ({\n payload: v,\n type: GeneralActionType.UPDATE_PUBLIC_LANG,\n})\n\nexport const updateTmpValues = (v: GeneralTmpValues) => ({\n payload: v,\n type: GeneralActionType.UPDATE_TMP_VALUES,\n})\n\nexport const updateInterruptTransferStations = (v: InterruptTransferStation[], isOutbound: boolean = true) => ({\n payload: v,\n type: GeneralActionType.UPDATE_INTERRUPT_TRANSFER_STATIONS,\n isOutbound: isOutbound\n})\n\nexport const updateInterruptTransferStationsInUndecided = (v: InterruptTransferStation[], isOutbound: boolean = true) => ({\n payload: v,\n type: GeneralActionType.UPDATE_INTERRUPT_TRANSFER_STATIONS_IN_UNDECIDED,\n isOutbound: isOutbound\n})\n\nexport const switchIsBackendCrowdedSearch = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_BACKEND_CROWDED_SEARCH,\n})\n\nexport const switchIsBackendCrowdedFlightInfo = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_BACKEND_CROWDED_GET_FLIGHT_INFO,\n})\n\nexport const switchIsBackendSearchDiaList = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_IS_BACKEND_CROWDED_SEARCH_DIA_LIST,\n})\n\nexport const updateTmpIsUpdateInMapSelector = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.UPDATE_TMP_IS_UPDATE_IN_MAP_SELECTOR,\n})\n\nexport const updateTaxiCompanyConfigurations = (v: TaxiCompanyConfigurations) => ({\n payload: v,\n type: GeneralActionType.UPDATE_TAXI_COMPANY_CONFIGURATIONS,\n});\n\nexport const updateUniversalMaaSQuery = (v: UniversalMaaSQuery) => ({\n payload: v,\n type: GeneralActionType.UPDATE_UNIVERSAL_MAAS_QUERY,\n});\n\nexport const updateTaxiStandInfo = (v: TaxiStandInfo) => ({\n payload: v,\n type: GeneralActionType.UPDATE_TAXI_STAND_INFO,\n})\n\nexport const switchGeneralMode = (v: boolean, modeType: string) => ({\n payload: v,\n type: GeneralActionType.SWITCH_MODE,\n modeType: modeType\n})\n\nexport const randomTmpAdRoatationValue = () => ({\n payload: Math.floor(Math.random() * Math.pow(10,10)),\n type: GeneralActionType.RANDOM_TMP_AD_ROATATION_VALUE,\n})\n\nexport const switchUseV2 = (v: boolean) => ({\n payload: v,\n type: GeneralActionType.SWITCH_USE_V2,\n})\n","import { GeneralAction, GeneralActionType } from \"../actions/generalAction\";\nimport { General } from \"../states/general\";\nimport { Lang } from \"../states/query\";\n\nconst genetalInitial: General = {\n /** 経路å–å¾—ã«å¤±æ•—ã—ãŸã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isFailInGetCourses: false,\n /** GoogleMapを表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n isShowMap: false,\n /** FindCandidateListModalã§çµŒç”±åœ°ã‚’é¸æŠžã—ã¦ã„ã‚‹ã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n candidateSelectorIsVia: false,\n /** 目的地・出発地をé¸æŠžã™ã‚‹ãƒ¢ãƒ¼ãƒ€ãƒ«ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n isShowCandidateListModal: false,\n /** 地図画é¢ã§ã‹ã‚‰ç›®çš„地・出発地をé¸æŠžã™ã‚‹ãƒ¢ãƒ¼ãƒ€ãƒ«ã«ã‚‚ã ã£ãŸçŠ¶æ…‹ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n isFromMapToCandidateListModal: false,\n /** é·ç§»å…ƒã®ãƒªãƒ•ã‚¡ãƒ©ãƒ¼URL */\n referrer: '',\n /** åˆæœŸæç”»ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isInitial: true,\n isLoading: false,\n axiosError: null,\n errorMessage: '',\n traininfoList: {},\n lang: Lang.ja,\n isFailInAssignDia: false,\n isBackendCrowded: {\n search: false,\n getFlightInfo: false,\n searchDiaList: false\n },\n tmp: {\n placeInfo: {\n pointName: '',\n pointCode: '',\n pointType: '',\n place: null,\n lastSelectedPlace: null,\n pointGeoCode: {\n lat: 0,\n lng: 0\n },\n isUpdateInMapSelector: false\n },\n updateCheck: 0,\n isShowPublicSummary: false,\n applyConvertingToMultipleAirport: {\n outbound: false,\n returnTrip: false\n },\n publicInterruptTransferStations: {\n isResearch: false,\n isOutbound: false\n },\n debugErrorMessage: '',\n adRotationRand: 0\n },\n universalMaaSQuery: {},\n mode: {\n isShowBarrierFreeInfo: false,\n isBarrierFreeMode: false\n },\n interruptTransfer: {\n outbound: {\n interruptTransferStations: [],\n interruptTransferStationsInUndecided: []\n },\n returnTrip: {\n interruptTransferStations: [],\n interruptTransferStationsInUndecided: []\n }\n },\n /** タクシー仮予約ページã§reCAPTHCA v2を利用ã™ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n useV2: false,\n}\n\nconst generalReducer = (state = genetalInitial, action: GeneralAction) => {\n const newInterruptTransfer = state.interruptTransfer;\n switch(action.type) {\n case GeneralActionType.SWITCH_IS_FAIL_IN_GET_COURSES:\n return {\n ...state,\n isFailInGetCourses: action.payload,\n };\n case GeneralActionType.SWITCH_SHOW_MAP:\n return {\n ...state,\n isShowMap: action.payload,\n }\n case GeneralActionType.SWITCH_CANDIDATE_SELECTOR_IS_VIA:\n return {\n ...state,\n candidateSelectorIsVia: action.payload,\n }\n case GeneralActionType.SWITCH_SHOW_CANDIDATE_LIST_MODAL:\n return {\n ...state,\n isShowCandidateListModal: action.payload,\n }\n case GeneralActionType.SWITCH_IS_FROM_MAP_TO_CANDIDATE_LIST_MODAL:\n return {\n ...state,\n isFromMapToCandidateListModal: action.payload,\n }\n case GeneralActionType.SWITCH_IS_LOADING:\n return {\n ...state,\n isLoading: action.payload,\n }\n case GeneralActionType.SWITCH_IS_INITIAL:\n return {\n ...state,\n isInitial: action.payload,\n }\n case GeneralActionType.SWITCH_IS_FAIL_ASSIGN_DIA:\n return {\n ...state,\n isFailInAssignDia: action.payload,\n }\n case GeneralActionType.SWITCH_IS_BACKEND_CROWDED_SEARCH:\n return {\n ...state,\n isBackendCrowded: {\n ...state.isBackendCrowded,\n search: action.payload\n },\n }\n case GeneralActionType.SWITCH_IS_BACKEND_CROWDED_GET_FLIGHT_INFO:\n return {\n ...state,\n isBackendCrowded: {\n ...state.isBackendCrowded,\n getFlightInfo: action.payload\n },\n }\n case GeneralActionType.SWITCH_IS_BACKEND_CROWDED_SEARCH_DIA_LIST:\n return {\n ...state,\n isBackendCrowded: {\n ...state.isBackendCrowded,\n searchDiaList: action.payload\n },\n }\n case GeneralActionType.SWITCH_USE_V2:\n return {\n ...state,\n useV2: action.payload,\n }\n case GeneralActionType.UPDATE_ERROR_MESSAGE:\n return {\n ...state,\n errorMessage: action.payload,\n }\n case GeneralActionType.UPDATE_REFERRER:\n return {\n ...state,\n referrer: action.payload,\n };\n case GeneralActionType.UPDATE_TRAININFO:\n return {\n ...state,\n traininfoList: action.payload,\n }\n case GeneralActionType.UPDATE_AXIOS_ERROR:\n return {\n ...state,\n axiosError: action.payload,\n }\n case GeneralActionType.UPDATE_PUBLIC_LANG:\n return {\n ...state,\n lang: action.payload,\n }\n case GeneralActionType.UPDATE_TMP_VALUES:\n return {\n ...state,\n tmp: action.payload,\n }\n case GeneralActionType.UPDATE_UNIVERSAL_MAAS_QUERY:\n return {\n ...state,\n universalMaaSQuery: action.payload,\n };\n case GeneralActionType.UPDATE_TMP_IS_UPDATE_IN_MAP_SELECTOR:\n return {\n ...state,\n tmp: {\n ...state.tmp,\n placeInfo: {\n ...state.tmp.placeInfo,\n isUpdateInMapSelector: action.payload\n }\n }\n }\n case GeneralActionType.RANDOM_TMP_AD_ROATATION_VALUE:\n return {\n ...state,\n tmp: {\n ...state.tmp,\n adRotationRand: action.payload\n }\n }\n case GeneralActionType.UPDATE_TAXI_COMPANY_CONFIGURATIONS:\n return {\n ...state,\n taxiCompanyConfigurations: action.payload,\n }\n case GeneralActionType.UPDATE_TAXI_STAND_INFO:\n return {\n ...state,\n taxiStandInfo: action.payload,\n }\n case GeneralActionType.SWITCH_MODE:\n const newMode = state.mode;\n switch(action.modeType) {\n case 'isShowBarrierFreeInfo':\n newMode.isShowBarrierFreeInfo = action.payload;\n break;\n case 'isBarrierFreeMode':\n newMode.isBarrierFreeMode = action.payload;\n break;\n }\n return {\n ...state,\n mode: newMode,\n };\n case GeneralActionType.UPDATE_INTERRUPT_TRANSFER_STATIONS:\n if(action.isOutbound) {\n newInterruptTransfer.outbound.interruptTransferStations = action.payload;\n }\n else {\n newInterruptTransfer.returnTrip.interruptTransferStations = action.payload;\n }\n return {\n ...state,\n interruptTransfer: newInterruptTransfer,\n }\n case GeneralActionType.UPDATE_INTERRUPT_TRANSFER_STATIONS_IN_UNDECIDED:\n if(action.isOutbound) {\n newInterruptTransfer.outbound.interruptTransferStationsInUndecided = action.payload;\n }\n else {\n newInterruptTransfer.returnTrip.interruptTransferStationsInUndecided = action.payload;\n }\n return {\n ...state,\n interruptTransfer: newInterruptTransfer,\n }\n default:\n return state;\n }\n}\n\nexport default generalReducer;\n","import { combineReducers } from 'redux';\nimport { History } from 'history';\nimport { RouterState, connectRouter } from 'connected-react-router'\nimport { ConditionState } from './../states/conditionState';\nimport conditionReducer from '../reducers/conditon';\nimport publicConditionReducer from './publicCondition';\nimport generalReducer from './general';\nimport { General } from '../states/general';\nimport { PublicConditionState } from '../states/publicConditionState';\n\nconst rootReducer = (history: History) => combineReducers({\n general: generalReducer,\n condition: conditionReducer,\n publicCondition: publicConditionReducer,\n router: connectRouter(history),\n})\n\nexport interface State {\n general: General,\n condition: ConditionState,\n publicCondition: PublicConditionState,\n router: RouterState,\n}\n\nexport default rootReducer;\n","import { createBrowserHistory } from 'history';\nimport { applyMiddleware, createStore, compose } from 'redux';\nimport createSagaMiddleware from 'redux-saga';\nimport { routerMiddleware } from 'connected-react-router'\nimport createRootReducer from './reducers'\n\nexport const history = createBrowserHistory();\nexport const sagaMiddleware = createSagaMiddleware();\n\nexport default function configureStore(preloadedState?: any) {\n const composeEnhancer: typeof compose = (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n const store = createStore(\n createRootReducer(history), // root reducer with router state\n preloadedState,\n composeEnhancer(\n applyMiddleware(\n routerMiddleware(history),\n sagaMiddleware,\n ),\n ),\n )\n\n // Hot reloading\n if (module.hot) {\n // Enable Webpack hot module replacement for reducers\n module.hot.accept('./reducers', () => {\n store.replaceReducer(createRootReducer(history));\n });\n }\n\n return store;\n}\n\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\n/** スクãƒãƒ¼ãƒ«ä½ç½®ã‚’リセットã™ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport default function ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}\n","/** サーãƒãƒ¼ç’°å¢ƒã®ç¨®åˆ¥ã«é–¢ã™ã‚‹å‡¦ç†ã®ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class Environment {\n /** 本番環境ã®å ´åˆã«è¨å®šã™ã‚‹ç’°å¢ƒå¤‰æ•°ã®å€¤ã€‚ */\n static readonly PRODUCTION = \"master\";\n /** ステージング環境ã®å ´åˆã«è¨å®šã™ã‚‹ç’°å¢ƒå¤‰æ•°ã®å€¤ã€‚ */\n static readonly STAGING = \"stage\";\n /** 開発環境ã®å ´åˆã«è¨å®šã™ã‚‹ç’°å¢ƒå¤‰æ•°ã®å€¤ã€‚ */\n static readonly DEV = \"dev\";\n /** 一般開放ã§ç©ºæ¸¯ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒã‚§ãƒƒã‚¯ãŒã§ãる環境 */\n static readonly CHECK_AIRPORT_GROUP = 'check_airport_group';\n /** 一般開放ã§ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®devã‚’å©ã環境 */\n static readonly BACKEND_DEV = 'backend_dev';\n /**\n * 本番環境ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n * */\n static isProduction(env: string) {\n return env === Environment.PRODUCTION;\n }\n /**\n * ステージング環境ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n * */\n static isStaging(env: string) {\n return env === Environment.STAGING;\n }\n /**\n * 開発環境ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n */\n static isDev(env: string) {\n const devEnvList = [Environment.DEV, Environment.CHECK_AIRPORT_GROUP, Environment.BACKEND_DEV];\n return devEnvList.includes(env);\n }\n /**\n * 空港グループã®ç¢ºèªç’°å¢ƒã‹ã‚’判定\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n */\n static isCheckAirportGroup(env: string) {\n return env === Environment.CHECK_AIRPORT_GROUP;\n }\n /**\n * ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ç’°å¢ƒã«ã¤ã„ã¦\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n */\n static isBackendEnv() {\n return (process.env['REACT_APP_BACKEND_ENV'] || Environment.STAGING);\n }\n /**\n * ステージング環境ã‹æœ¬ç•ªç’°å¢ƒã‹ã‚’判別ã™ã‚‹ã€‚\n * @param env 実行環境をè˜åˆ¥ã™ã‚‹ãŸã‚ã«è¨å®šã—ã¦ã„る環境変数。\n */\n static isUpperStaging(env: string) {\n return Environment.isProduction(env) || Environment.isStaging(env);\n }\n /**\n * strging型よりEnvironmentåž‹ã«å¤‰æ›ã™ã‚‹\n * @param env ç¾åœ¨ã®ç’°å¢ƒï¼ˆï¼‰\n * @returns\n */\n static getEnvironmentType(env: string = (process.env['REACT_APP_STAGE_ENV'] || 'dev')) {\n if(Environment.isProduction(env)) {\n return Environment.PRODUCTION;\n }\n if(Environment.isStaging(env)) {\n return Environment.STAGING;\n }\n return Environment.DEV;\n }\n /**\n * UniversalMaaSModeã‹ã‚’判定ã™ã‚‹\n */\n static getIsUniversalMaaSMode(isLikeProdEnv?: any): boolean {\n // 環境変数よりUniversalMaaSModeã‹ã‚’判別ã™ã‚‹\n const isUniversalMaaSMode: string = (process.env['REACT_APP_IS_UNIVERSAL_MAAS_MODE'] || 'false')\n // TODO: 本番åæ˜ å‰ã«å‰Šé™¤ã—ãŸã»ã†ãŒè‰¯ã„ã‹ã‚‚\n // POC環境ã§ã‚‚疑似的ã«æœ¬ç•ªç’°å¢ƒã®ã‚ˆã†ã«æŒ¯ã‚‹èˆžã‚ã›ã‚‹\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev' && isLikeProdEnv === 'true') {\n return false;\n }\n return isUniversalMaaSMode.toLowerCase() === 'true';\n }\n}\n","import axios from 'axios';\nimport Environment from '../../../utils/environment';\nimport { GetReservationParams } from './GetReservationParams';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\n/** äºˆç´„æƒ…å ±å‚照用ã®APIを呼ã³å‡ºã™ã€‚ */\nexport async function getReservation(params: GetReservationParams) {\n try {\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n /** 本予約APIã®ãƒ‘ス。 */\n const path = setPath();\n // 本予約APIã«POSTメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n return await instance.post(path, {...params});\n } catch (err) {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã€nullã‚’è¿”ã™ã€‚\n return null;\n }\n}\n\n/** 環境ã«å¿œã˜ã¦å‘¼ã³å‡ºã™APIã®ãƒ‘スを切り替ãˆã‚‹ã€‚ */\nfunction setPath() {\n return setTaxiEndpoint('get-reservation-info');\n}\n\nexport function setTaxiEndpoint(path: string) {\n // 環境ã«å¿œã˜ã¦ãƒ‘スを切り替ãˆã‚‹ã€‚\n switch(Environment.getEnvironmentType()) {\n // 本番環境ã®å ´åˆã€‚\n case Environment.PRODUCTION:\n return `/taxi/${path}`;\n // ステージング環境ã®å ´åˆã€‚\n case Environment.STAGING:\n return `/taxi/staging/${path}`;\n // 開発環境ã¾ãŸã¯æœªè¨å®šã®å ´åˆã€‚\n case Environment.DEV:\n default:\n return `/taxi/development/${path}`;\n }\n}","import axios from \"axios\";\nimport { TaxiCompanyList } from \"../GetDirectionAndFare/models/getFareSamplesParams\";\nimport { setTaxiEndpoint } from \"../GetReservation\";\nimport { TaxiCompanyConfigurations } from \"./model/taxiCompanyConf\";\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 60000,\n};\n\nexport enum ComponentKey {\n pulldown = 'pulldown'\n}\n\nexport interface GetTaxiCompanyConfParams {\n key?: string,\n companyCode?: TaxiCompanyList,\n componentKey?: ComponentKey,\n id?: string,\n language: string\n}\n\n/** タクシー会社ã®ãƒ¡ã‚¿æƒ…å ±å–å¾—APIを呼ã³å‡ºã™ */\nexport async function getTaxiCompanyConfiguration(params: GetTaxiCompanyConfParams) {\n const path = setTaxiEndpoint('get-configuration');\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n const response = await instance.get(path, {\n params: params\n });\n let reseponseBody: TaxiCompanyConfigurations | null = null;\n // ResponseçµæžœãŒæ£å¸¸ãªã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™\n if(response.status === 200 && response.data) {\n reseponseBody = response.data;\n }\n else {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€debugレベルã§ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力ã™ã‚‹ã®ã¿ã¨ã™ã‚‹ã€‚\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(response);\n }\n }\n return {\n type: 'getTaxiCompanyConfiguration',\n body: reseponseBody\n }\n}\n","import React from 'react';\nimport { CircularProgress, createStyles, Grid, makeStyles, Modal } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n paper: {\n position: 'absolute',\n width: 100,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n },\n }),\n);\n\ninterface Props {\n isLoading: boolean\n}\n\n/** 処ç†ã®å®Ÿè¡Œä¸ã§ã‚ã‚‹ã“ã¨ã‚’表ã™ã‚¢ã‚¤ã‚³ãƒ³ï¼ˆãã‚‹ãるアイコン)ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst LoadingModal: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n\n return (\n // Modalコンãƒãƒ¼ãƒãƒ³ãƒˆã®ã€ŒdisableAutoFocusã€ã€ŒdisableEnforceFocusã€ã®2オプションをè¨å®šã—ã¦ã„ãªã„å ´åˆã€\n // é¸æŠžçŠ¶æ…‹ã®é’æž ãŒè¡¨ç¤ºã•ã‚Œã¦ã—ã¾ã†ãŸã‚オプションをè¨å®šã—ã¦ã„る。\n <Modal open={props.isLoading} disableAutoFocus disableEnforceFocus>\n <div className={classes.paper}>\n <Grid container justify='center' alignContent='center'>\n <Grid item>\n <CircularProgress color='primary' size={72}/>\n </Grid>\n </Grid>\n </div>\n </Modal>\n )\n}\n\nexport default LoadingModal;\n","// æ£è¦è¡¨ç¾ã‚’使ã£ãŸå‡¦ç†ã‚’ã¾ã¨ã‚ãŸãƒ•ã‚¡ã‚¤ãƒ«ã€‚\n/**\n * 全角カナã®ã¿ã®æ–‡å—列ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param value ãƒã‚§ãƒƒã‚¯ã—ãŸã„æ–‡å—列。\n */\nexport function isFullWidthKana(value: string) {\n const FULL_WIDTH_KANA = RegExp(\"^[ã‚¡-ヶ]+$\");\n return FULL_WIDTH_KANA.test(value);\n}\n\n/**\n * æ•°å—ã®ã¿ã®æ–‡å—列ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param value ãƒã‚§ãƒƒã‚¯ã—ãŸã„æ–‡å—列。\n */\nexport function isNumber(value: string) {\n const NUMBER = RegExp(\"^[0-9]+$\");\n return NUMBER.test(value);\n}\n\nexport function isACMNumber(value: string) {\n const ACM_NUMBER_CHECK = RegExp(/^\\d{10}$/)\n return ACM_NUMBER_CHECK.test(value);\n}\n\n/**\n * メールアドレスã®å½¢å¼ã¨ãªã£ã¦ã„ã‚‹æ–‡å—列ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param value ãƒã‚§ãƒƒã‚¯ã—ãŸã„æ–‡å—列。\n */\nexport function isEmail(value: string) {\n const EMAIL = RegExp(\"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$\");\n return EMAIL.test(value);\n}\n\n/**\n * æ–‡å—ã®ã¿ã®ï¼ˆç©ºç™½ã‚„絵文å—ã€è¨˜å·ãªã©ã‚’å«ã¾ãªã„)文å—列ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param value ãƒã‚§ãƒƒã‚¯ã—ãŸã„æ–‡å—列。\n */\nexport function isLetter(value: string) {\n const LETTER = RegExp(/^(\\p{Script=Hiragana}|\\p{Script_Extensions=Katakana}|\\p{Script_Extensions=Han}|[a-zA-Zï½-zA-Z])+$/u);\n return LETTER.test(value);\n}\n\n/**\n * æ–‡å—ã¨ç©ºç™½ã®ã¿ã®ï¼ˆçµµæ–‡å—や記å·ãªã©ã‚’å«ã¾ãªã„)文å—列ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * 2021/10/18ç¾åœ¨ï¼šä½¿ç”¨ãªã—\n * @param value ãƒã‚§ãƒƒã‚¯ã—ãŸã„æ–‡å—列。\n */\nexport function isLetterWithSpace(value: string) {\n // eslint-disable-next-line no-irregular-whitespace\n const FULL_NAME_REGEX = /^(\\p{Script=Hiragana}|\\p{Script_Extensions=Katakana}|\\p{Script_Extensions=Han}|[a-zA-Zï½-zA-Z0-9ï¼-ï¼™])+[ | ]?(\\p{Script=Hiragana}|\\p{Script_Extensions=Katakana}|\\p{Script_Extensions=Han}|[a-zA-Zï½-zA-Z0-9ï¼-ï¼™])+$/u;\n return FULL_NAME_REGEX.test(value);\n}\n","import Environment from \"../../utils/environment\";\nimport Cookies from 'js-cookie';\n\n/** \n * SCクリック(ANAã•ã‚“å´ã§é›†è¨ˆã™ã‚‹Adobe Analyticsã§ã®è¨˜éŒ²ï¼‰ã®å‡¦ç†ã€‚\n * (主ã«åºƒå‘ŠãƒãƒŠãƒ¼ã‚„連æºãƒœã‚¿ãƒ³ã®ã‚¯ãƒªãƒƒã‚¯æ™‚ã®è¨ˆæ¸¬ã®ãŸã‚ã«åˆ©ç”¨ã™ã‚‹ã€‚)\n * @param name クリックå。(集計時ã«è˜åˆ¥ã™ã‚‹ãŸã‚ã®å称。ANAã•ã‚“ã‹ã‚‰æŒ‡å®šã—ã¦ã‚‚らã†å€¤ã€‚)\n * */\nexport default function scClick(name: string) {\n /** 環境変数ã§æŒ‡å®šã•ã‚ŒãŸç’°å¢ƒç¨®åˆ¥ã‚’è˜åˆ¥ã™ã‚‹ãŸã‚ã®å€¤ã€‚ */\n const stageEnv = process.env['REACT_APP_STAGE_ENV'];\n // 環境変数「REACT_APP_STAGE_ENVã€ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹ã€ã‹ã¤ã€\n // ãã®å€¤ã«æœ¬ç•ªç’°å¢ƒã®ã‚‚ã®ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿SCクリックを実行ã™ã‚‹ã€‚\n if (stageEnv && Environment.isProduction(stageEnv)) {\n try {\n window.SCClick(name);\n }\n catch(e) {\n console.error(e);\n }\n }\n else {\n console.log(`SCClick: ${name}`);\n const cookieKey = 'ana_airport_access_debug_scclick';\n // デãƒãƒƒã‚°ç”¨ã®Cookieを入れ込ã‚ã¾ã™\n Cookies.set(cookieKey, name);\n }\n return null;\n}\n","import axios from 'axios';\nimport { setTaxiEndpoint } from '../GetReservation';\nimport { ReservationParams } from './ReservationParams';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 60000,\n};\n\n/** 本予約APIを呼ã³å‡ºã™ã€‚ */\nexport async function submitReservation(params: ReservationParams) {\n try {\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n /** 本予約APIã®ãƒ‘ス。 */\n const path = await setPath();\n // 本予約APIã«POSTメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n return await instance.post(path, {...params});\n } catch (err) {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã€nullã‚’è¿”ã™ã€‚\n return null;\n }\n}\n\n/** 環境ã«å¿œã˜ã¦å‘¼ã³å‡ºã™APIã®ãƒ‘スを切り替ãˆã‚‹ã€‚ */\nasync function setPath() {\n return setTaxiEndpoint('submit-reservation');\n}\n","import * as React from 'react';\nimport { makeStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n textAlign: \"center\",\n backgroundColor: \"#ffffff\",\n padding: \"5px\",\n border: \"solid 1px #000\",\n borderRadius: \"5px\",\n marginTop: \"10px\"\n },\n}));\n\nexport interface Props {\n /** è·é›¢ãƒ»æ™‚間・金é¡éƒ¨åˆ†ã®ãƒ©ãƒ™ãƒ«ã€‚ */\n label: string | JSX.Element,\n}\n\n/** 予約ページã®ã‚³ã‚¹ãƒˆï¼ˆè·é›¢ãƒ»æ™‚間・金é¡ï¼‰è¡¨ç¤ºéƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst Cost: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n return (\n <div className={classes.root}>\n {/* 赤å—ã§è¡¨ç¤ºã™ã‚‹ã€‚ */}\n <Typography color='error' component='span'>\n { props.label }\n </Typography>\n </div>\n );\n}\n\nexport default Cost;\n","import * as React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport { AlertLabel } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport PickupPattern from '../../AirportTransferTaxi/TemporaryReservation/Form/PickupPattern';\nimport { useTranslation } from 'react-i18next';\nimport { TFunction } from 'i18next';\n\nexport interface Props {\n /** è¦å‘Šã®ç¨®åˆ¥ã€‚ */\n type?: \"retry\" | \"email\" | \"input\" | \"fail\" | \"address\" | \"unselected\" | \"retry_with_v2\",\n /** ä»»æ„ã®è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ */\n anyMessage?: AlertLabel[],\n pickupPattern?: PickupPattern\n}\n\nconst useStyles = makeStyles(() => ({\n root: {\n marginTop: \"10px\"\n },\n notice: {\n marginTop: \"10px\",\n color: '#ff0000'\n }\n}));\n\n/** è¦å‘Šã®é‡è¦åº¦ã‚’è¨å®šã™ã‚‹ã€‚ */\nfunction setSeverity(type: string) {\n switch(type) {\n // å†å®Ÿè¡Œã‚’促ã™è¦å‘Šã®å ´åˆã€é»„色(warning)をè¨å®šã™ã‚‹ã€‚\n case \"retry\":\n return \"warning\"\n // メールアドレスãŒåˆ©ç”¨ã§ããªã„å ´åˆ/予約ã«å¤±æ•—ã—ãŸå ´åˆ/ãã®ä»–エラーã®å ´åˆã¯èµ¤è‰²ï¼ˆerror)をè¨å®šã™ã‚‹ã€‚\n case \"email\":\n case \"input\":\n case \"fail\":\n default:\n return \"error\";\n }\n}\n\n/**\n * è¦å‘Šã§è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’è¨å®šã™ã‚‹ã€‚\n * @param type è¦å‘Šã®ç¨®åˆ¥ã€‚\n */\nfunction setMessage(type: string, t: TFunction, pickupPattern?: PickupPattern) {\n switch(type) {\n case \"address\":\n //const trasTypeStr = pickupPattern === PickupPattern.FROM_AIRPORT? t('taxi:sending_location'): t('taxi:pickup_location');\n return t('taxi:alert_message_address');\n case \"unselected\":\n return t('taxi:alert_message_unselected');\n case \"retry\":\n return t('taxi:alert_message_retry');\n case \"email\":\n return t('taxi:alert_message_email');\n case \"input\":\n return t('taxi:alert_message_input');\n case \"retry_with_v2\":\n return t('taxi:alert_message_retry_with_v2');\n case \"fail\":\n default:\n return t('taxi:alert_message_fail');\n }\n}\n\n/** タクシー予約時ã®è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ç”¨ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst AlertInReservation: React.FC<Props> = (props: Props) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n let severity: any = \"warning\";\n if(props.type) {\n /** è¦å‘Šã®é‡è¦åº¦ã€‚(ã“ã®å€¤ã«å¿œã˜ã¦è¦å‘Šã®è‰²ãƒ»ã‚¢ã‚¤ã‚³ãƒ³ãŒå¤‰ã‚る。) */\n severity = setSeverity(props.type);\n /** è¦å‘Šã§è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã€‚ */\n const message = setMessage(props.type, t,props.pickupPattern);\n return (\n <Alert severity={severity} className={classes.root}>\n { message }\n </Alert>\n );\n }\n else if(props.anyMessage) {\n /** ä»»æ„ã®è¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå¾©æ•°ã‚ã‚‹å ´åˆã«ã¯å…¨ã¦ã‚’表示ã™ã‚‹ */\n return (\n <>\n {props.anyMessage.map((label, index)=>{\n if(label.type === 'alert') {\n return (\n <Alert severity={severity} className={classes.root} key={index}>\n { label.message }\n </Alert>\n )\n }\n else {\n return (\n <div className={classes.notice} key={index}>\n ※ { label.message }\n </div>\n )\n }\n })}\n </>\n )\n }\n return null;\n}\n\nexport default AlertInReservation;\n","import { AlertLabel } from \"../GetDirectionAndFare/models/getFareSamplesParams\";\n\n/** äºˆç´„æƒ…å ±å‚ç…§APIã‹ã‚‰å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã€‚ */\nexport interface ReservationResponse {\n /** æ乗便ã®æƒ…å ±ã€‚ */\n flight: Flight;\n /** 出発地å称。 */\n originLabel: string;\n /** 出発地座標。 */\n originLatLng: string;\n /** 到ç€åœ°å称。 */\n destLabel: string;\n /** 到ç€åœ°åº§æ¨™ã€‚ */\n destLatLng: string;\n /** æ乗日。 */\n date: string;\n /** 連æºã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾åコード。 */\n companyCode: string;\n /** 連æºã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å。 */\n companyName: string;\n /** 出発便検索ã€ã¾ãŸã¯åˆ°ç€ä¾¿æ¤œç´¢ã‚’表ã™å€¤ã€‚ */\n operation: string;\n /** ãŠè¿Žãˆæ—¥æ™‚(yyyyMMddHHmmå½¢å¼ï¼‰ã€‚ */\n rideDatetime: string;\n /** ã®ã‚Šã‹ãˆæƒ…å ±ï¼ˆè·é›¢ãƒ»æ‰€è¦æ™‚間・料金)。 */\n transferInfo: TransferInfo;\n /** 利用空港ã®æƒ…å ±ã€‚ */\n airportInfo: AirportInfo;\n /** é·ç§»å…ƒãƒªãƒ•ã‚¡ãƒ©ãƒ¼æƒ…å ± */\n referrer: string;\n /** 庄内乗åˆã‚¿ã‚¯ã‚·ãƒ¼ã«ãŠã„ã¦é€£æºã•ã‚Œã‚‹æ乗タクシーã«å¯¾å¿œã™ã‚‹ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ± */\n taxiConnectFlightNumber: string;\n}\n\n/** æ乗便ã®æƒ…å ±ã€‚ */\ninterface Flight {\n /** ANAã¾ãŸã¯NHã‹ã‚‰å§‹ã¾ã‚‹ä¾¿ç•ªå·ã€‚ */\n number: string;\n /** yyyyMMddHHmmå½¢å¼ã®æ乗便ã®æ—¥æ™‚。 */\n datetime: string;\n /** datetimeãŒç©ºæ¸¯ç™ºã®æ—¥æ™‚ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isDeparture: boolean;\n}\n\n/** ã®ã‚Šã‹ãˆæƒ…å ±ï¼ˆè·é›¢ãƒ»æ‰€è¦æ™‚間・料金)。 */\ninterface TransferInfo {\n /** 発ç€åœ°ã¨ç©ºæ¸¯ã®è·é›¢ï¼ˆå˜ä½:[m])。 */\n distance: number,\n /** 発ç€åœ°ã¨ç©ºæ¸¯é–“ã®æ‰€è¦æ™‚間(å˜ä½:[分])。 */\n timeRequired: number,\n /** タリフãŒå›ºå®šã‹ */\n tariffConfirmed: boolean;\n /** タリフãŒå¤‰å‹•ã™ã‚‹éš›ã«ç´ã¥ãKey */\n tariffTypes: string;\n /** æ–™é‡‘æƒ…å ±ã€‚ */\n fare?: ReservationFare;\n /** ãƒ©ãƒ™ãƒ«æƒ…å ± */\n labels?: ReservationLabels,\n /** ã‚¿ãƒªãƒ•æƒ…å ± */\n tariffs?: {\n [key: string]: {\n /** æ–™é‡‘æƒ…å ±ã€‚ */\n fare: ReservationFare,\n /** ãƒ©ãƒ™ãƒ«æƒ…å ± */\n labels: ReservationLabels\n }\n }\n}\n\n/** ãƒ©ãƒ™ãƒ«æƒ…å ± */\nexport interface ReservationLabels {\n /** 料金ラベル */\n fareLabel: string,\n /** è·é›¢ãƒ©ãƒ™ãƒ« */\n distanceLabel: string,\n /** 所è¦æ™‚間ラベル */\n durationLabel: string,\n /** アラートラベル */\n alertLabel: AlertLabel[],\n}\n\n/** æ–™é‡‘æƒ…å ±ã€‚ */\nexport interface ReservationFare {\n fareType: string,\n /** 金é¡ï¼ˆå˜ä½:[円])。 */\n value: number,\n /** é‹è³ƒã®ç¨®åˆ¥ã€‚ */\n priceType: \"fixed\" | \"ask\" | \"outOfService\" | \"PAYG\" | \"error\",\n /** 迎車料金ã®æœ‰ç„¡. true時ã®ã¿å˜åœ¨. çœç•¥æ™‚ã¯false. */\n hasPickupFee?: boolean,\n /** 迎車料金. hasPickupFee=trueã®ã¨ãã®ã¿å˜åœ¨ã€‚ */\n pickupFee?: number,\n /** 迎車料金ãŒå¿…è¦ãªæ¡ä»¶æƒ…å ±ã€‚ */\n pickupFeeRequirement?: string,\n /** ä»˜åŠ æƒ…å ±ã€‚ */\n additionalInfo?: string;\n /** 備考ラベル */\n notesLabel: string[]\n}\n\n/** 利用空港ã®æƒ…å ±ã€‚ */\ninterface AirportInfo {\n type: 'destination' | 'origin',\n letter: string,\n}\n\nexport const defaultReservationLabels: ReservationLabels = {\n fareLabel: '',\n distanceLabel: '',\n durationLabel: '',\n alertLabel: []\n}\n\nexport const defaultReservationFare: ReservationFare = {\n fareType: '',\n /** 金é¡ï¼ˆå˜ä½:[円])。 */\n value: 0,\n /** é‹è³ƒã®ç¨®åˆ¥ã€‚ */\n priceType: \"error\",\n /** 備考ラベル */\n notesLabel: []\n}","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** åä¾›ã®äººæ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectChildrenNum: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** åä¾›ã®äººæ•°ï¼ˆ0~20ã¾ã§ã®æ•°å€¤ï¼‰ã®å€¤ã®é…列。 */\n const numbers = Array.from(Array(21).keys())\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`children_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectChildrenNum;\n","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** 大人ã®äººæ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectAdultNum: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** 大人ã®äººæ•°ã®å€¤ï¼ˆ1~20ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const numbers = Array.from({length: 20}, (_, i) => i + 1);\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`adult_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectAdultNum;\n","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシーã®å°æ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectCarNum: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** タクシーã®å°æ•°ã®å€¤ï¼ˆ1~20ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const numbers = Array.from({length: 20}, (_, i) => i + 1);\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`car_num_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectCarNum;\n","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n maxOtherBag: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** ãã®ä»–è·ç‰©(※車椅åãªã©)ã®å€‹æ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectOtherBag: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** ãã®ä»–è·ç‰©(※車椅åãªã©)ã®å€‹æ•°ï¼ˆ0~Xã¾ã§ã®æ•°å€¤ï¼‰ã®å€¤ã®é…列。 */\n const numbers = Array.from(Array(props.maxOtherBag+1).keys())\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`otherbag_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectOtherBag;\n","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n maxNum: number,\n}\n\n/** スーツケースã®å€‹æ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectSuitcase: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** スーツケースã®å€‹æ•°ï¼ˆ0ã‹ã‚‰ã‚¿ã‚¯ã‚·ãƒ¼å°æ•°ã«å¿œã˜ãŸæœ€å¤§æ•°ã¾ã§ã®æ•°å€¤ï¼‰ã®å€¤ã®é…列。 */\n const numbers = Array.from(Array(props.maxNum + 1).keys());\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`suitcase_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectSuitcase;\n","import React from 'react';\nimport { MenuItem, Select, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n}));\n\ninterface Props {\n value: number,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n maxNum: number,\n}\n\n/** ゴルフãƒãƒƒã‚°ã®å€‹æ•°é¸æŠžã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectGolfBag: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n /** ゴルフãƒãƒƒã‚°ã®å€‹æ•°ï¼ˆ0ã‹ã‚‰ã‚¿ã‚¯ã‚·ãƒ¼å°æ•°ã«å¿œã˜ãŸæœ€å¤§æ•°ã¾ã§ã®æ•°å€¤ï¼‰ã®å€¤ã®é…列。 */\n const numbers = Array.from(Array(props.maxNum + 1).keys());\n\n return (\n <Select\n className={classes.root}\n SelectDisplayProps={{\n style: {\n padding: '10px'\n }\n }}\n onChange={props.onChange}\n value={props.value}\n >\n {\n numbers.map((n) => {\n return <MenuItem value={n} key={`golfbag_${n}`}>{n}</MenuItem>\n })\n }\n </Select>\n );\n}\n\nexport default SelectGolfBag;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { State } from '../../reducers';\nimport { CircularProgress, createStyles, Grid, makeStyles, Modal, Theme } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n position: 'absolute',\n width: 100,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n },\n }),\n);\n\n/** 検索画é¢ã§æ¤œç´¢å‡¦ç†ã®å®Ÿè¡Œä¸ã§ã‚ã‚‹ã“ã¨ã‚’表ã™ã‚¢ã‚¤ã‚³ãƒ³ï¼ˆãã‚‹ãるアイコン)ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst LoadingModal: React.FC = () => {\n const classes = useStyles();\n /** 検索処ç†ä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isLoading = useSelector((state: State) => state.general.isLoading);\n\n return (\n // Modalコンãƒãƒ¼ãƒãƒ³ãƒˆã®ã€ŒdisableAutoFocusã€ã€ŒdisableEnforceFocusã€ã®2オプションをè¨å®šã—ã¦ã„ãªã„å ´åˆã€\n // é¸æŠžçŠ¶æ…‹ã®é’æž ãŒè¡¨ç¤ºã•ã‚Œã¦ã—ã¾ã†ãŸã‚オプションをè¨å®šã—ã¦ã„る。\n <Modal open={isLoading} disableAutoFocus disableEnforceFocus>\n <div className={classes.paper}>\n <Grid container justify='center' alignContent='center'>\n <Grid item>\n <CircularProgress color='primary' size={72}/>\n </Grid>\n </Grid>\n </div>\n </Modal>\n )\n}\n\nexport default LoadingModal;\n","import { PlaceDirections } from \"../../../google/PlaceDirections\";\n\nexport enum TaxiCompanyList {\n /** イースタン交通 */\n limoTaxi = 'limoTaxi',\n eastern = 'eastern',\n /** 宮交タクシー */\n miyakou = 'miyakou',\n /** 宇部山電タクシー */\n ubeSanden = 'ubeSanden',\n /** 那覇ãƒã‚¤ãƒ¤ãƒ¼ */\n nahahire = 'nahahire',\n /** 日ノ丸ãƒã‚¤ãƒ¤ãƒ¼ */\n hinomaru = 'hinomaru',\n /** å—国タクシー */\n nangoku = 'nangoku',\n /** 伊予鉄タクシー */\n iyotetsutaxi = 'iyotetsutaxi',\n /** 伊予鉄タクシー(メーター料金) */\n iyotetsuTaxi2 = 'iyotetsuTaxi2',\n /** 大分別府åˆåŒã‚¿ã‚¯ã‚·ãƒ¼ */\n gotaku = 'gotaku',\n /** æ—å·ä¸å¤®ã‚¿ã‚¯ã‚·ãƒ¼ */\n Asahikawachuuo = 'Asahikawachuuo',\n /** 函館タクシー */\n hakodateTaxi = 'hakodateTaxi',\n /** 大和自動車交通 */\n daiwaj = 'daiwaj',\n /** 北ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ */\n kitafukushima = 'kitafukushima',\n /** ä¸å¤®ã‚¿ã‚¯ã‚·ãƒ¼ */\n fukushimachuo = 'fukushimachuo',\n /** ç£åŸŽã‚¿ã‚¯ã‚·ãƒ¼ */\n iwakiTaxi = 'iwakiTaxi',\n /** 内郷タクシー */\n 'uchi-go' = 'uchi-go',\n /** 田島タクシー */\n tajimaTaxi = 'tajimaTaxi',\n /** 鬼怒å·ã‚¿ã‚¯ã‚·ãƒ¼ */\n kinugawaTaxi = 'kinugawaTaxi',\n /** 北斗交通 */\n hokutocab = 'hokutocab',\n /** 陽æ±ã‚¿ã‚¯ã‚·ãƒ¼ */\n yotoTaxi = 'yotoTaxi',\n /** ã‚ングタクシー */\n kingTaxi = 'kingTaxi',\n /** 土電タクシー */\n toden = 'toden',\n /** 石å·äº¤é€š */\n ishikawakotsu = 'ishikawakotsu',\n /** ã‚ングタクシー(メーター料金) */\n kingTaxi2 = 'kingTaxi2',\n /** 宇部構内タクシー */\n ubeKounai = 'ubeKounai',\n /** 通津タクシー */\n tsuzutaxi = 'tsuzutaxi',\n /** 酒田タクシー */\n sakataNo1Taxi = 'sakataNo1Taxi',\n /** 庄交ãƒã‚¤ãƒ¤ãƒ¼ */\n shokoHire = 'shokoHire',\n /** 秋田エアãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒŠãƒ¼ */\n airport_liner = 'airport_liner',\n /** ã«ã‹ã»GO */\n nikaho_go = 'nikaho_go',\n /** 検証用ダミータクシー会社 */\n dummyVal = 'dummyVal'\n};\n\n// æ–‡å—列ã‹ã‚‰ TaxiCompanyList ã«å¤‰æ›ã™ã‚‹\nexport const convertStringToTaxiCompany = ((companyString: string)=>{\n switch(companyString) {\n case TaxiCompanyList.limoTaxi:\n return TaxiCompanyList.limoTaxi;\n case TaxiCompanyList.eastern:\n return TaxiCompanyList.eastern;\n case TaxiCompanyList.miyakou:\n return TaxiCompanyList.miyakou;\n case TaxiCompanyList.ubeSanden:\n return TaxiCompanyList.ubeSanden;\n case TaxiCompanyList.nahahire:\n return TaxiCompanyList.nahahire;\n case TaxiCompanyList.hinomaru:\n return TaxiCompanyList.hinomaru;\n case TaxiCompanyList.nangoku:\n return TaxiCompanyList.nangoku;\n case TaxiCompanyList.iyotetsutaxi:\n return TaxiCompanyList.iyotetsutaxi;\n case TaxiCompanyList.iyotetsuTaxi2:\n return TaxiCompanyList.iyotetsuTaxi2;\n case TaxiCompanyList.gotaku:\n return TaxiCompanyList.gotaku;\n case TaxiCompanyList.Asahikawachuuo:\n return TaxiCompanyList.Asahikawachuuo;\n case TaxiCompanyList.hakodateTaxi:\n return TaxiCompanyList.hakodateTaxi;\n case TaxiCompanyList.daiwaj:\n return TaxiCompanyList.daiwaj;\n case TaxiCompanyList.kitafukushima:\n return TaxiCompanyList.kitafukushima;\n case TaxiCompanyList.fukushimachuo:\n return TaxiCompanyList.fukushimachuo;\n case TaxiCompanyList.iwakiTaxi:\n return TaxiCompanyList.iwakiTaxi;\n case TaxiCompanyList['uchi-go']:\n return TaxiCompanyList['uchi-go'];\n case TaxiCompanyList.tajimaTaxi:\n return TaxiCompanyList.tajimaTaxi;\n case TaxiCompanyList.kinugawaTaxi:\n return TaxiCompanyList.kinugawaTaxi;\n case TaxiCompanyList.hokutocab:\n return TaxiCompanyList.hokutocab;\n case TaxiCompanyList.yotoTaxi:\n return TaxiCompanyList.yotoTaxi;\n case TaxiCompanyList.kingTaxi:\n return TaxiCompanyList.kingTaxi;\n case TaxiCompanyList.toden:\n return TaxiCompanyList.toden;\n case TaxiCompanyList.ishikawakotsu:\n return TaxiCompanyList.ishikawakotsu;\n case TaxiCompanyList.dummyVal:\n return TaxiCompanyList.dummyVal;\n case TaxiCompanyList.tsuzutaxi:\n return TaxiCompanyList.tsuzutaxi;\n case TaxiCompanyList.kingTaxi2:\n return TaxiCompanyList.kingTaxi2;\n case TaxiCompanyList.ubeKounai:\n return TaxiCompanyList.ubeKounai;\n case TaxiCompanyList.sakataNo1Taxi:\n return TaxiCompanyList.sakataNo1Taxi;\n case TaxiCompanyList.shokoHire:\n return TaxiCompanyList.shokoHire;\n case TaxiCompanyList.airport_liner:\n return TaxiCompanyList.airport_liner;\n case TaxiCompanyList.nikaho_go:\n return TaxiCompanyList.nikaho_go;\n default:\n return null;\n }\n})\n\n/**\n * 指定ã—ãŸä¼šç¤¾ãŒç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç¾¤ã‹ã‚’判定ã™ã‚‹\n * @param company 判定対象ã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾\n * @returns 指定ã—ãŸä¼šç¤¾ãŒç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç¾¤ã‹ã‚’\n */\nexport const isFukushimaTaxi = ((company: TaxiCompanyList) => {\n const fukushimaTaxisList = [\n TaxiCompanyList.daiwaj,\n TaxiCompanyList.kitafukushima,\n TaxiCompanyList.fukushimachuo,\n TaxiCompanyList.iwakiTaxi,\n TaxiCompanyList['uchi-go'],\n TaxiCompanyList.tajimaTaxi,\n TaxiCompanyList.kinugawaTaxi,\n TaxiCompanyList.hokutocab,\n TaxiCompanyList.yotoTaxi\n ]\n return fukushimaTaxisList.includes(company);\n})\n\nexport enum GetDirectionAndFareOperation {\n pickup = 'pickup',\n dropOff = 'dropOff'\n}\n\nexport enum FlightType {\n // 国内線\n domestic = 'domestic',\n // 国際線\n international = 'international'\n}\n\nexport interface PointInfo {\n /** 表示用地点座標。乗車地ã§ã‚ã‚‹ã‹é™è»Šåœ°ã§ã‚ã‚‹ã‹ã¯operationパラメータã«ä¾å˜ã™ã‚‹ã€‚ */\n latLng: string,\n /** 表示用地点å。乗車地ã§ã‚ã‚‹ã‹é™è»Šåœ°ã§ã‚ã‚‹ã‹ã¯operationパラメータã«ä¾å˜ã™ã‚‹ã€‚ */\n label: string,\n /** 料金計算用地点座標。乗車地ã§ã‚ã‚‹ã‹é™è»Šåœ°ã§ã‚ã‚‹ã‹ã¯operationパラメータã«ä¾å˜ã™ã‚‹ã€‚ */\n latLngForPriceCalc: string,\n /** 料金計算用地点å。乗車地ã§ã‚ã‚‹ã‹é™è»Šåœ°ã§ã‚ã‚‹ã‹ã¯operationパラメータã«ä¾å˜ã™ã‚‹ã€‚タリフã®ãƒžãƒƒãƒãƒ³ã‚°ã¯æ—¥æœ¬èªžã§è¡Œã†ãŸã‚ã€è‹±èªžç‰ˆã§ã‚‚ã“ã“ã¯å¿…ãšæ—¥æœ¬èªžä½æ‰€ãŒè¨å®šã•ã‚Œã‚‹ */\n labelForPriceCalc: string\n}\n\n/**\n * タクシー料金APIã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーターã®å…±é€šéƒ¨åˆ†\n */\ninterface CommonTaxiAPIParams {\n // ãƒ¦ãƒ¼ã‚¶ãƒ¼æŒ‡å®šåœ°ç‚¹æƒ…å ±\n pointInfo?: PointInfo,\n // 空港コード\n airportLetter: string,\n // 出発案内ã‹\n operation: GetDirectionAndFareOperation,\n // 補助値\n mode?: string,\n // 補助値\n modeValue?: string,\n // 国内・国際ã®åŒºåˆ¥\n flightType?: FlightType,\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±\n terminal?: string,\n // ä¹—é™å£\n gate?: string,\n}\n\n/**\n * 仮予約画é¢ã«ã¦ä½¿ç”¨ã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘APIã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーター\n */\nexport interface GetDirectionAndFareParams extends CommonTaxiAPIParams {\n // 事æ¥è€…コード\n companyCode: TaxiCompanyList,\n // 乗車日時:yyyyMMddhhmm å½¢å¼\n rideDatetime: string,\n // è¨€èªžæƒ…å ±\n language: string\n}\n\n/**\n * 経路検索画é¢ã«ã¦ä½¿ç”¨ã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘APIã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーター\n */\nexport interface GetDirectionAndFareSamplesParams extends CommonTaxiAPIParams {\n // çµæžœã«Google Directions APIã®polylineを付与ã™ã‚‹ã‹ã©ã†ã‹\n needPolyline: boolean,\n // 乗車日時: unixtime\n datetimeAtAirport: number,\n // è¨€èªžæƒ…å ±\n language: string\n}\n\n/**\n * 経路検索çµæžœç”»é¢ã§ã®ResponseFormat\n */\nexport interface GetDirectionAndFareSamplesResponse {\n routeInfo: RouteInfo;\n existMatchedCompany: boolean,\n fareSummaries: TaxiFareSummary[],\n directionsApiResponse: PlaceDirections\n}\n\nexport interface RouteInfo {\n /** è·é›¢ãƒ©ãƒ™ãƒ« */\n distanceLabel: string,\n /** 所è¦æ™‚間ラベル */\n durationLabel: string,\n /** è·é›¢(m) */\n distanceValue: number,\n /** 所è¦æ™‚é–“(s) */\n durationValue: number\n}\n\nexport interface TaxiFareSummary {\n mode: string;\n companyCode: TaxiCompanyList,\n fareInfo: GetDirectionAndFareResponse\n}\n\n/**\n * 仮予約画é¢ã§ä½¿ç”¨ã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘APIã®Response\n */\nexport interface GetDirectionAndFareResponse {\n status: string,\n notesLabel: string[],\n alertLabel: AlertLabel[],\n fareType: string,\n // 廃æ¢äºˆå®š\n value: number,\n // 廃æ¢äºˆå®š\n totalValue: number,\n // 廃æ¢äºˆå®š\n distance: number,\n // 廃æ¢äºˆå®š\n duration: number,\n fareLabel: string,\n distanceLabel: string,\n durationLabel: string,\n timePattern?: string[],\n flightPattern?: string[]\n}\n\nexport interface AlertLabel {\n type: string,\n message: string\n}\n","import React from 'react';\nimport { Link, useTheme } from '@material-ui/core';\nimport { TaxiCompanyList } from '../../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { useCautionStyles } from '../Cautions';\nimport DateTime from '../../../../../../utils/dateTime';\n\ninterface Props {\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** AMCマイレージ番å·ã«é–¢ã™ã‚‹æ³¨æ„äº‹é … */\nexport const AMCCautionJP: React.FC<Props> = (props: Props) => {\n const theme = useTheme();\n const classes = useCautionStyles(theme);\n\n const taxiMileHumanVURL = \"https://www.ana.co.jp/ja/jp/amc/reference/tameru/traffic/human_v.html\";\n const taxiMileHelpURL = \"https://www.ana.co.jp/ja/jp/site-help/share/contact/mileage_top.html\";\n\n return (\n <>\n <span className={classes.bold}><マイルã«é–¢ã™ã‚‹ã”注æ„(必ãšã”確èªãã ã•ã„)></span>\n <ul className={classes.unorderedList} data-cy={\"booking_taxi_amccaution_jp\"}>\n <li>\n 本画é¢ã«ã¦ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã‚’ã”入力後ã€{props.companyDisplayName}を予約・乗車・支払ã„完了ã•ã‚ŒãŸå ´åˆã«ã€ã€Œ200円(税込)ã«ã¤ã1マイルã€ã‚’ç©ç®—ã„ãŸã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯ã€ã”利用ã«ãªã‚‰ã‚Œã¦ã‚‚マイルã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“\n </li>\n {/** ã“ã®1æ–‡ã¯ä¼Šäºˆé‰„ã®å ´åˆã®ã¿ */}\n { props.company === TaxiCompanyList.iyotetsutaxi &&\n <li>\n ãªãŠã€ã€Œãƒžã‚¤ãƒ«ãŒãŸã¾ã‚‹ï¼ã€ã‚¹ãƒ†ãƒƒã‚«ãƒ¼ãŒè²¼ã£ã¦ã‚るタクシーã«ã”乗車ã€ã‹ã¤ç¾é‡‘ã§ã®ãŠæ”¯æ‰•ã„ã®å ´åˆã€ã€Œ100円(税込)ã«ã¤ã1マイルã€ãŒåˆ¥é€”ç©ç®—ã•ã‚Œã¾ã™ã€‚詳ã—ãã¯<Link href={taxiMileHumanVURL} target=\"_blank\" className={classes.link}>ã“ã¡ã‚‰</Link>ã‚’ã”確èªãã ã•ã„。\n </li>\n }\n <li>\n マイルã¯ã”利用後約1~2カ月後ã«ãŠå®¢æ§˜ã®ãƒžã‚¤ãƒ«å£åº§ã«ç©ç®—ã•ã‚Œã¾ã™ã€‚\n </li>\n <li>\n ã”予約æˆç«‹å¾Œã«äºˆç´„ã‚’ã‚ャンセルã•ã‚ŒãŸå ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。ã¾ãŸã€å¤‰æ›´ãƒ»å–り消ã—手数料ã¯ãƒžã‚¤ãƒ«ç©ç®—ã®å¯¾è±¡å¤–ã¨ãªã‚Šã¾ã™ã€‚\n </li>\n <li>\n ã”入力ã„ãŸã ã„ãŸANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã¨ã”å義人ãŒç•°ãªã‚‹å ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。\n </li>\n <li>\n ã”予約完了後ã®ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã®è¨‚æ£ã€äº‹å¾Œç™»éŒ²ã¯ãŠå—ã‘ã§ãã¾ã›ã‚“ã®ã§ã€ãŠç”³ã—è¾¼ã¿ã®éš›ã¯ã”注æ„ãã ã•ã„。\n </li>\n <li>\n ANAマイレージクラブã«é–¢ã™ã‚‹ãŠå•ã„åˆã‚ã›ã¯<Link href={taxiMileHelpURL} target=\"_blank\" className={classes.link}>ã“ã¡ã‚‰</Link>ã‹ã‚‰ã€‚\n </li>\n </ul>\n </>\n )\n}\n\nexport default AMCCautionJP;\n","import React from 'react';\nimport { Link, useTheme } from '@material-ui/core';\nimport { TaxiCompanyList } from '../../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { useCautionStyles } from '../Cautions';\n\ninterface Props {\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** AMCマイレージ番å·ã«é–¢ã™ã‚‹æ³¨æ„äº‹é … */\nexport const AMCCautionEN: React.FC<Props> = (props: Props) => {\n const theme = useTheme();\n const classes = useCautionStyles(theme);\n\n const taxiMileHelpURL = \"https://www.ana.co.jp/ja/jp/site-help/share/contact/mileage_top.html\";\n return (\n <>\n <span className={classes.bold}>< Notes on Miles (please make sure to confirm) ></span>\n <ul className={classes.unorderedList} data-cy={\"booking_taxi_amccaution_en\"}>\n <li>\n If you book, ride and complete payment with the limousine or taxi operating company after entering your 10-digit ANA Mileage Club membership number on this screen, one mile will be added to your mileage for every JPY 200 (including tax) paid. No miles will be added in other cases.\n </li>\n <li>\n One mile will be added to your mileage separately for every JPY 200 (including tax) paid for payments made using an ANA card.\n </li>\n <li>\n Approximately 1-2 months will be required for the miles to be credited to the mileage balance. The timing is different to the addition of miles due to payment with an ANA card.\n </li>\n <li>\n If you cancel a booking after it has been confirmed, no miles will be added. In addition, change and cancellation processing fees are not subject to the addition of miles.\n </li>\n <li>\n If the entered ANA Mileage Club membership number and name differ, no miles will be added.\n </li>\n <li>\n Please be careful when making a booking as we are unable to accept corrections to an ANA Mileage Club membership number after a booking is confirmed or ex-post registrations.\n </li>\n <li>\n For inquiries about the ANA Mileage Club, click <Link href={taxiMileHelpURL} target=\"_blank\" className={classes.link}>here</Link>.\n </li>\n </ul>\n </>\n )\n}\n\nexport default AMCCautionEN;\n","import React from 'react';\nimport { TaxiCompanyList } from '../../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { useTranslation } from 'react-i18next';\nimport AMCCautionJP from './jp';\nimport AMCCautionEN from './en';\n\ninterface Props {\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** AMCマイレージ番å·ã«é–¢ã™ã‚‹æ³¨æ„äº‹é … */\nexport const AMCCaution: React.FC<Props> = (props: Props) => {\n const { i18n } = useTranslation();\n switch(i18n.language) {\n case 'en':\n return (\n <AMCCautionEN\n companyDisplayName={props.companyDisplayName}\n company={props.company}\n />\n )\n case 'jp':\n default:\n return (\n <AMCCautionJP\n companyDisplayName={props.companyDisplayName}\n company={props.company}\n />\n )\n }\n}","import React from 'react';\nimport { useTheme } from '@material-ui/core';\nimport { TaxiCompanyList } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { AMCCaution } from './AMCCaution';\nimport { useCautionStyles } from './Cautions';\n\ninterface Props {\n isMeterFare: boolean,\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** AMCをサãƒãƒ¼ãƒˆã™ã‚‹äº‹æ¥è€…ã®å ´åˆ */\n isSupportAMC?: boolean,\n /** 本予約画é¢ã‹ */\n isReservationPage?: boolean,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®æ³¨æ„äº‹é …ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const CautionsEn: React.FC<Props> = (props: Props) => {\n const theme = useTheme();\n const classes = useCautionStyles(theme);\n\n return (\n <div className={classes.root} data-cy=\"cautions-area\">\n <span className={classes.bold}>< Important points ></span>\n <ul className={classes.unorderedList}>\n <li>\n A booking is a direct contract between the limousine or taxi operating company and the customer.\n </li>\n <li className={classes.redFont}>\n The information you entered will be provided to the limousine or taxi operating company. In addition, the email address entered on this screen will also be communicated to ANA for handling of inquiries, etc., but this information is usually deleted within one year.\n </li>\n {/** AMCサãƒãƒ¼ãƒˆäº‹æ¥è€…ã®å ´åˆã«ã¯æ–‡è¨€ã‚’è¿½åŠ ã™ã‚‹ã€‚本予約画é¢ã®ã¿è¡¨ç¤ºã™ã‚‹ */}\n {props.isSupportAMC && props.isReservationPage &&\n <li>\n The ANA Mileage Club membership number (10 digits) entered on this screen will be communicated to ANA for Mileage settlement.\n </li>\n }\n <li className={classes.redFont}>\n Please note that a booking is not confirmed even when the booking request is complete. A booking is confirmed with the “Confirmation email†sent by the limousine or taxi operating company.\n </li>\n <li>\n You are requested to verify your email address each time you make a booking.\n </li>\n <li>\n A 100% cancellation fee will be charged for cancellation without notice and cancellation on the day of service.\n </li>\n <li>\n No driver waiting fee at the airport will be charged due to a delayed flight and no cancellation fee will be charged if you are unable to use the service due to cancellation of your flight.\n <br />\n However, ANA will not communicate such information to the limousine or taxi operating company. Please contact the limousine or taxi operating company.\n </li>\n <li>\n We cannot guarantee plane ticket reservations even if the service is not in time for your flight’s departure time due to a traffic jam, etc.\n </li>\n <li>\n Please pay to the driver at point of service.\n </li>\n <li>\n Stopovers to places other than your pick-up and drop-off location are not included. If you wish to make a stopover, please inquire with the limousine or taxi operating company.\n </li>\n {/* メーター料金ã®å ´åˆã«ã¯æ³¨æ„書ãを増やã—ã¾ã™ */}\n {props.isMeterFare &&\n <li>\n Taxi meter charges are approximate based on the assumed travel distance and may differ from actual charges due to the road situation, etc. In addition, expressway tolls, pick-up charges, waiting and stopping due to traffic lights or traffic jams, etc., have not been considered. \n Charges will differ depending on taxi companies and regions so please consider these simply as reference amounts. Actual charges will be settled based on the meter at the time you ride.\n </li>\n }\n {/** å—国タクシーã‹ã¤å®šé¡ã®å ´åˆã«ã¯æ³¨æ„äº‹é …ã‚’è¿½åŠ ã™ã‚‹ */}\n {props.company === TaxiCompanyList.nangoku && !props.isMeterFare &&\n <li>\n {/* 高速é“è·¯ãªã©ã®æœ‰æ–™é“路通行料やフェリー代ãªã©å®šé¡æ–™é‡‘ã‹ã‚‰åˆ¥é€”料金ãŒç™ºç”Ÿã™ã‚‹å ´åˆã‚‚ã”ã–ã„ã¾ã™ã€‚ */}\n </li>\n }\n {/** 伊予鉄タクシーã®å ´åˆã«ã¯é«˜é€Ÿé“路代金ã®æ³¨æ„äº‹é …ã‚’è¿½åŠ */}\n {props.company === TaxiCompanyList.iyotetsutaxi &&\n <li>\n {/* 料金ã«ã¯ã€ç›®çš„地ã¾ãŸã¯å‡ºç™ºåœ°ã«ã‚ˆã‚Šã€Œé«˜é€Ÿé“路代金ã€ãŒå«ã¾ã‚Œã¦ãŠã‚Šã¾ã™ã€‚詳ã—ãã¯ã€ã€Œäºˆç´„確定メールã€ã«ã¦ã”確èªä¸‹ã•ã„。 */}\n </li>\n }\n </ul>\n {/** AMCをサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å ´åˆã«ã¯AMCã®æ³¨æ„äº‹é …ã‚’è¿½åŠ ã™ã‚‹ */}\n {props.isSupportAMC && props.isReservationPage &&\n <AMCCaution\n companyDisplayName={props.companyDisplayName}\n company={props.company}\n />\n }\n </div>\n );\n}\n\nexport default CautionsEn;\n","import React from 'react';\nimport { useTheme } from '@material-ui/core';\nimport { TaxiCompanyList, isFukushimaTaxi } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { AMCCaution } from './AMCCaution';\nimport { useCautionStyles } from './Cautions';\n\ninterface Props {\n isMeterFare: boolean,\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** AMCをサãƒãƒ¼ãƒˆã™ã‚‹äº‹æ¥è€…ã®å ´åˆ */\n isSupportAMC?: boolean,\n /** 本予約画é¢ã‹ */\n isReservationPage?: boolean,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®æ³¨æ„äº‹é …ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const CautionsJP: React.FC<Props> = (props: Props) => {\n const theme = useTheme();\n const classes = useCautionStyles(theme);\n /** ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç¾¤ã‹ */\n const isFukushima = isFukushimaTaxi(props.company);\n /** ç«‹ã¡å¯„ã‚ŠãŒä¸å¯ã‹ã®æ–‡è¨€: ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç³»åˆ—ã‹ã‚ングタクシー以外ã®å ´åˆã¯å¯ */\n const tachiyoriMessage = (() => {\n /** ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç¾¤ãƒ»ã‚ングタクシーã®å ´åˆã®ã¿ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã®ãŸã‚ç«‹ã¡å¯„ã‚Šä¸å¯ã¨æ˜Žè¨€ã™ã‚‹ */\n if(isFukushima) {\n return '指定ã„ãŸã ã„ãŸä¹—車地・é™è»Šåœ°ä»¥å¤–ã®ç«‹ã¡å¯„ã‚Šã¯å‡ºæ¥ã¾ã›ã‚“。';\n }\n switch(props.company) {\n case TaxiCompanyList.kingTaxi:\n case TaxiCompanyList.sakataNo1Taxi:\n case TaxiCompanyList.shokoHire:\n return '指定ã„ãŸã ã„ãŸä¹—車地・é™è»Šåœ°ä»¥å¤–ã®ç«‹ã¡å¯„ã‚Šã¯å‡ºæ¥ã¾ã›ã‚“。';\n default:\n /** ãれ以外ã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ãªã‚‰è¨€ãˆã°å‡ºæ¥ã‚‹ã‚ˆã¿ãŸã„ãªãƒ‹ãƒ¥ã‚¢ãƒ³ã‚¹ã«ã™ã‚‹ */\n return `指定ã„ãŸã ã„ãŸä¹—車地・é™è»Šåœ°ä»¥å¤–ã®ç«‹ã¡å¯„ã‚Šã¯å«ã¾ã‚Œã¦ãŠã‚Šã¾ã›ã‚“。`\n + `ç«‹ã¡å¯„りを希望ã•ã‚Œã‚‹å ´åˆã«ã¯ã€ãŠå®¢æ§˜ã”自身ã§${props.companyDisplayName}ã¸ãŠå•ã„åˆã‚ã›ãã ã•ã„。`\n }\n })();\n\n return (\n <div className={classes.root} data-cy=\"cautions-area\">\n <span className={classes.bold}><注æ„äº‹é …ï¼ž</span>\n <ul className={classes.unorderedList}>\n <li>\n ã”予約ã¯{props.companyDisplayName}ã¨ãŠå®¢æ§˜ã®ç›´æŽ¥å¥‘ç´„ã¨ãªã‚Šã¾ã™ã€‚\n </li>\n <li className={classes.redFont}>\n ãŠå®¢æ§˜ã®å…¥åŠ›ã—ãŸæƒ…å ±ã¯{props.companyDisplayName}ã«é€šçŸ¥ã•ã‚Œã¾ã™ã€‚ã¾ãŸã€å•ã„åˆã‚ã›ç‰ã¸ã®å¯¾å¿œã®ãŸã‚ã€æœ¬ç”»é¢ã«ã¦å…¥åŠ›ã„ãŸã ã„ãŸEメールアドレスã¯ANAã«ã‚‚通知ã•ã‚Œã¾ã™ãŒã€é€šå¸¸1年以内ã«å‰Šé™¤ã„ãŸã—ã¾ã™ã€‚\n </li>\n {/** AMCサãƒãƒ¼ãƒˆäº‹æ¥è€…ã®å ´åˆã«ã¯æ–‡è¨€ã‚’è¿½åŠ ã™ã‚‹ã€‚本予約画é¢ã®ã¿è¡¨ç¤ºã™ã‚‹ */}\n {props.isSupportAMC && props.isReservationPage &&\n <li>\n 本画é¢ã«ã¦å…¥åŠ›ã„ãŸã ã„ãŸANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã¯ã€ãƒžã‚¤ãƒ«ã®ç©ç®—ã®ãŸã‚ANAã¸é€£æºã„ãŸã—ã¾ã™ã€‚\n </li>\n }\n <li className={classes.redFont}>\n 予約リクエストãŒå®Œäº†ã—ã¦ã‚‚予約ãŒç¢ºå®šã—ãŸã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。{props.companyDisplayName}ã®ã€Œç¢ºå®šãƒ¡ãƒ¼ãƒ«ã€ã‚’ã‚‚ã£ã¦äºˆç´„ã®ç¢ºå®šã¨ã—ã¦ã„ã¾ã™ã€‚ã‚らã‹ã˜ã‚ã”了承ãã ã•ã„。\n </li>\n {/** ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ç¾¤ã®å ´åˆã®ã¿ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼è¡¨è¨˜ã‚’è¿½åŠ ã™ã‚‹ */}\n {isFukushima &&\n <li className={classes.redFont}>\n ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã®ãŸã‚ã€ä»–ã®ãŠå®¢æ§˜ã¨æ··ä¹—ã¨ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚空港ã«ãŠé€ã‚Šã™ã‚‹å ´åˆã€ãŠè¿Žãˆå…ˆã®ä¹—車時間ã¯å¤‰æ›´ã¨ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚\n (ãã®å ´åˆã¯ã€å‰æ—¥ã®18時ã¾ã§ã«ã”連絡ã„ãŸã—ã¾ã™ï¼‰\n ã¾ãŸã€ç©ºæ¸¯ç™ºã®å ´åˆã€é™è»Šé †ã«ã‚ˆã‚Šæ‰€è¦æ™‚é–“ãŒå¤‰å‹•ã™ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚\n </li>\n }\n {/** 伊予鉄メーター料金ã®å ´åˆã«ã¯åˆ¥é€”文言を表示ã™ã‚‹ */}\n {props.company === TaxiCompanyList.iyotetsuTaxi2 &&\n <li className={classes.redFont}>\n 本画é¢ã«è¡¨ç¤ºã•ã‚Œã¦ã„る金é¡ã¯ã‚ãã¾ã§ç›®å®‰ã¨ãªã‚Šã¾ã™ã€‚タクシー会社ã‹ã‚‰ã®ã€Œã”予約確定メールã€ã«ã¦ç¢ºå®šæ–™é‡‘ã‚’ã”確èªã„ãŸã ã‘ã¾ã™ã€‚\n </li>\n }\n {/** 大分別府åˆåŒã‚¿ã‚¯ã‚·ãƒ¼ã®å ´åˆã«ã¯åˆ¥é€”文言を表示ã™ã‚‹ */}\n {props.company === TaxiCompanyList.gotaku &&\n <>\n <li className={classes.redFont}>\n イベントやスãƒãƒ¼ãƒ„ä¼šå ´ç™ºï¼ˆãŠè¿Žãˆï¼‰â†’大分空港ã¯ã€ã”予約ã„ãŸã ã‘ã¾ã›ã‚“。\n </li>\n <li className={classes.redFont}>\n 料金ã«ã¯ã€ç›®çš„地ã¾ãŸã¯å‡ºç™ºåœ°ã«ã‚ˆã‚Šã€Œé«˜é€Ÿé“路代金ã€ãŒå«ã¾ã‚Œã¦ãŠã‚Šã¾ã™ã€‚詳ã—ãã¯ã€ã€Œäºˆç´„確定メールã€ã«ã¦ã”確èªä¸‹ã•ã„。\n </li>\n </>\n }\n {/** ã‚ングタクシーã®å ´åˆã‚¹ãƒšã‚·ãƒ£ãƒ«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ */}\n {(props.company === TaxiCompanyList.kingTaxi) &&\n <li>\n ä¹—åˆé‹è¡Œã®ãŸã‚複数ã®èˆªç©ºä¾¿ã”利用ã®ãŠå®¢æ§˜ã¨æ··ä¹—ã¨ãªã£ã¦ãŠã‚Šã¾ã™ã€‚\n 飛行機ã®é…延ã«ã‚ˆã‚Šå¾…æ©Ÿã™ã‚‹å ´åˆã¯ã€ å…ˆç€ã®ãŠå®¢æ§˜ä¹—車時ã«æœ€å¤§10分間ã€ä»–ã®ä¾¿åˆ°ç€ã‚’å¾…ã£ã¦ã®å¾…機延長を了承ã•ã‚ŒãŸå ´åˆã®ã¿ã¨ãªã‚Šã¾ã™ã€‚\n ã¾ãŸä¹—車予定者ãŒã€1å様ã®ã¿ã®å ´åˆã¯ã€å‡ºç™ºäºˆå®šæ™‚刻ã®30分ã¾ã§å¾…機延長ã—ã¾ã™ãŒã€ãれ以é™ã®ã”到ç€ã®å ´åˆã¯ã‚ャンセルã®å–扱ã„ã¨ãªã‚Šã¾ã™ã€‚\n </li>\n }\n <li>\n 大変ãŠæ‰‹æ•°ã‚’ãŠã‹ã‘ã„ãŸã—ã¾ã™ãŒã€ã”予約ã®éš›ã«ã¯ã€æ¯Žå›žãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®èªè¨¼ãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚\n </li>\n <li>\n ã”連絡ã®ãªã„ã‚ャンセルやã€å½“æ—¥ã®ã‚ャンセルã¯100ï¼…ã®ã‚ャンセル料ãŒç™ºç”Ÿè‡´ã—ã¾ã™ã€‚\n </li>\n <li>\n 飛行機ã®é…延ã«ã‚ˆã‚‹ç©ºæ¸¯å¾…機料金ã€æ¬ 航ã«ã‚ˆã‚Šã”乗車ã§ããªã‹ã£ãŸå ´åˆã®ã‚ャンセル料金ã¯ã‹ã‹ã‚Šã¾ã›ã‚“。\n ãŸã ã—ã€ANAã‹ã‚‰ã®æƒ…å ±ã®å¼•ç¶™ãŽã¯è¡Œã‚ã‚Œã¾ã›ã‚“。\n <br />\n 大変ãŠæ‰‹æ•°ã§ã™ãŒã€ãŠå®¢æ§˜ã”自身ã§{props.companyDisplayName}ã¸ãŠå•ã„åˆã‚ã›ãã ã•ã„。\n </li>\n <li>\n 万ãŒä¸€äº¤é€šæ¸‹æ»žç‰ã§ãƒ•ãƒ©ã‚¤ãƒˆå‡ºç™ºæ™‚é–“ã«é–“ã«åˆã‚ãªã„å ´åˆã‚‚ã€èˆªç©ºåˆ¸äºˆç´„ã®ä¿è¨¼ã¯ã„ãŸã—ã‹ãã¾ã™ã€‚\n </li>\n <li>\n ãŠæ”¯æ‰•ã„ã¯ç¾åœ°è»Šå†…ã«ã¦ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚\n </li>\n {/* ç«‹ã¡å¯„ã‚Šã«é–¢ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ */}\n <li>\n {tachiyoriMessage}\n </li>\n {/* メーター料金ã®å ´åˆã«ã¯æ³¨æ„書ãを増やã—ã¾ã™ */}\n {props.isMeterFare &&\n <li>\n タクシーã®ãƒ¡ãƒ¼ã‚¿ãƒ¼æ–™é‡‘ã«ã¤ã„ã¦ã¯æƒ³å®šèµ°è¡Œè·é›¢ã‚’基ã«ç®—出ã—ãŸç›®å®‰é‡‘é¡ã§ã‚ã‚Šã€é“路事情ç‰ã«ã‚ˆã‚Šå®Ÿéš›ã¨ç•°ãªã‚‹å ´åˆãŒã”ã–ã„ã¾ã™ã€‚\n ã¾ãŸé«˜é€Ÿä»£é‡‘や回é€æ–™é‡‘ã€å¾…æ©Ÿã‚„ä¿¡å·ãƒ»æ¸‹æ»žç‰ã«ã‚ˆã‚‹åœè»Šãªã©ã®æ™‚é–“ã¯è€ƒæ…®ã—ã¦ãŠã‚Šã¾ã›ã‚“。å„タクシー会社や地域ã«ã‚ˆã‚Šæ–™é‡‘ã¯ç•°ãªã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã®ã§ã€ã‚ãã¾ã§å‚考金é¡ã¨ã—ã¦ã”確èªãã ã•ã„。実際ã®æ–™é‡‘ã¯ä¹—車時ã®ãƒ¡ãƒ¼ã‚¿ãƒ¼ã«åŸºã¥ã„ã¦ã®ç²¾ç®—ã¨ãªã‚Šã¾ã™ã€‚\n </li>\n }\n {/** å—国タクシーã‹ã¤å®šé¡ã®å ´åˆã«ã¯æ³¨æ„äº‹é …ã‚’è¿½åŠ ã™ã‚‹ */}\n {props.company === TaxiCompanyList.nangoku && !props.isMeterFare &&\n <li>\n 高速é“è·¯ãªã©ã®æœ‰æ–™é“路通行料やフェリー代ãªã©å®šé¡æ–™é‡‘ã‹ã‚‰åˆ¥é€”料金ãŒç™ºç”Ÿã™ã‚‹å ´åˆã‚‚ã”ã–ã„ã¾ã™ã€‚\n </li>\n }\n {/** 伊予鉄タクシーã®å ´åˆã«ã¯é«˜é€Ÿé“路代金ã®æ³¨æ„äº‹é …ã‚’è¿½åŠ */}\n {props.company === TaxiCompanyList.iyotetsutaxi &&\n <li>\n 料金ã«ã¯ã€ç›®çš„地ã¾ãŸã¯å‡ºç™ºåœ°ã«ã‚ˆã‚Šã€Œé«˜é€Ÿé“路代金ã€ãŒå«ã¾ã‚Œã¦ãŠã‚Šã¾ã™ã€‚詳ã—ãã¯ã€ã€Œäºˆç´„確定メールã€ã«ã¦ã”確èªä¸‹ã•ã„。\n </li>\n }\n {/** ã‚ングタクシーã®å ´åˆã«ã¯ä¹—ã‚Šåˆã„タクシーã®æ³¨é‡ˆã‚’è¿½åŠ */}\n { props.company === TaxiCompanyList.kingTaxi &&\n <li>\n ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã¯ã€ï¼ˆç©ºæ¸¯â‡”角館地区・田沢湖地区・田沢湖高原地区・乳é 温泉地区)ã€ï¼ˆç©ºæ¸¯â‡”ç”·é¹¿åœ°åŒºãƒ»æˆ¸è³€åœ°åŒºãƒ»åŠ èŒ‚åœ°åŒºï¼‰ã®é‹è¡Œã¨ãªã‚‹ãŸã‚ã€å ´æ‰€ãƒ»å®¿æ³Šæ–½è¨ã«ã‚ˆã£ã¦ã¯ã€ã„ãã¤ã‹ã‚’経由ã„ãŸã—ã¾ã™ã€‚\n ã¾ãŸã€æœ€çµ‚çš„ãªãŠè¿Žãˆæ™‚é–“ã¯ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ã‚‰ã”連絡ã„ãŸã—ã¾ã™ã€‚\n </li>\n }\n\n </ul>\n {/** AMCをサãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å ´åˆã«ã¯AMCã®æ³¨æ„äº‹é …ã‚’è¿½åŠ ã™ã‚‹ */}\n {props.isSupportAMC && props.isReservationPage &&\n <AMCCaution\n companyDisplayName={props.companyDisplayName}\n company={props.company}\n />\n }\n </div>\n );\n}\n\nexport default CautionsJP;\n","import { makeStyles } from '@material-ui/core';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TaxiCompanyList } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport CautionsEN from './CautionsEN';\nimport CautionsJP from './CautionsJP';\n\nexport const useCautionStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n fontSize: '0.875rem',\n marginTop: '15px',\n },\n unorderedList: {\n paddingInlineStart: '20px',\n },\n redFont: {\n color: '#ff0000'\n },\n link: {\n textDecoration: 'underline',\n fontWeight: 'bold'\n },\n bold: {\n fontWeight: 'bold'\n },\n // TODO: 超やã£ã¤ã‘ãªã®ã§ãªã‚“ã¨ã‹ã—ãŸã„\n come: {\n color: '#ff0000',\n marginLeft: '-15px'\n },\n comeBody: {\n color: '#ff0000',\n marginRight: '5px'\n },\n springMileMain: {\n color: '#FF0000'\n },\n springMileLeftMargin: {\n marginLeft: '1rem'\n }\n\n}));\n\ninterface Props {\n isMeterFare: boolean,\n /** 仮予約画é¢ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾å */\n companyDisplayName: string,\n /** AMCをサãƒãƒ¼ãƒˆã™ã‚‹äº‹æ¥è€…ã®å ´åˆ */\n isSupportAMC?: boolean,\n /** 本予約画é¢ã‹ */\n isReservationPage?: boolean,\n /** タクシー会社 */\n company: TaxiCompanyList\n}\n\n/** ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®æ³¨æ„äº‹é …ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const Cautions: React.FC<Props> = (props: Props) => {\n const { i18n } = useTranslation();\n switch(i18n.language) {\n case 'en':\n return (\n <CautionsEN\n isMeterFare={props.isMeterFare}\n companyDisplayName={props.companyDisplayName}\n isSupportAMC={props.isSupportAMC}\n isReservationPage={props.isReservationPage}\n company={props.company}\n />\n );\n case 'ja':\n default:\n return (\n <CautionsJP\n isMeterFare={props.isMeterFare}\n companyDisplayName={props.companyDisplayName}\n isSupportAMC={props.isSupportAMC}\n isReservationPage={props.isReservationPage}\n company={props.company}\n />\n );\n }\n}\n\nexport default Cautions;\n","import React from 'react';\nimport { makeStyles, useTheme, Link, Typography } from '@material-ui/core';\nimport { TaxiCompanyList } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { useSelector } from 'react-redux';\nimport { State } from '../../../../../reducers';\nimport { isEmail } from '../../../../../utils/regExpUtils';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.primary.main,\n fontSize: '0.875rem',\n marginTop: '10px',\n },\n}));\n\ninterface Props {\n company: TaxiCompanyList\n}\n\n/** 空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®å•ã„åˆã‚ã›å…ˆã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const Contact: React.FC<Props> = (props: Props) => {\n const theme = useTheme();\n const classes = useStyles(theme);\n const { t } = useTranslation();\n const taxiCompanyConfigurations = useSelector((state: State) => state.general.taxiCompanyConfigurations);\n if(!taxiCompanyConfigurations) {\n return null;\n }\n const taxiCompanyConfiguration = taxiCompanyConfigurations[props.company] || taxiCompanyConfigurations[TaxiCompanyList.limoTaxi];\n const contact = taxiCompanyConfiguration.contact;\n\n return (\n <Typography className={classes.root} data-cy=\"booking_taxi_contact_area\">\n {/** å•ã„åˆã‚ã›å…ˆã®è¡¨è¨˜ã¯å„社共通ãªã®ã§å€‹åˆ¥ã«ã¯è¡¨è¨˜ã—ãªã„ */}\n {t('taxi:contact')}<br/>\n { contact.messages.map((message: string, idx: number)=>{\n const isEmailStr = isEmail(message);\n // Emailæ–‡å—列ã®å ´åˆã«ã¯ãƒªãƒ³ã‚¯ã«ã™ã‚‹\n if(contact.isLinkMailAddress === 'true' && isEmailStr) {\n return (\n <span key={idx}>\n <Link href={`mailto:${message}`}>\n {message}\n </Link>\n <br/>\n </span>\n )\n }\n return (\n <span key={idx}>\n {message}<br/>\n </span>\n )\n })}\n </Typography>\n );\n}\n\nexport default Contact;\n","import { ja, enUS } from 'date-fns/locale';\nimport URLParams from './getParams';\n\nclass Lang {\n /** 日本語版を表ã™æ–‡å—列。 */\n static readonly JAPANESE = \"ja\";\n /** 英語版を表ã™æ–‡å—列。 */\n static readonly ENGLISH = \"en\";\n}\n\n/**\n * 日本語モードã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param lang è¨å®šã•ã‚Œã¦ã„る言語を表ã™æ–‡å—列。\n * */\nexport function isJapanese(lang: string) {\n return lang === Lang.JAPANESE;\n}\n\n/**\n * 英語モードã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param lang è¨å®šã•ã‚Œã¦ã„る言語を表ã™æ–‡å—列。\n */\nexport function isEnglish(lang: string) {\n return lang === Lang.ENGLISH;\n}\n\n/**\n * 言語別ã®Localeクラスを返å´ã™ã‚‹\n * @param lang è¨å®šã•ã‚Œã¦ã„る言語を表ã™æ–‡å—列。\n */\nexport function getLocale(lang: string) {\n if (isJapanese(lang)) return ja;\n if (isEnglish(lang)) return enUS;\n\n return ja;\n}\n\n/**\n * 言語切替共通化関数\n * @param searchParams location.search を引数ã«å–ã£ãŸ\n * @param i18n useTranslationã§å–å¾—ã—ãŸi18n変数\n */\nexport const changeLanguage = (searchParams: URLParams, i18n: any) => {\n const lang = searchParams.getStringParam('lang') || 'ja';\n // TODO: 共通化ã—ãŸã„\n switch(lang) {\n case 'en':\n i18n.changeLanguage('en');\n break;\n case 'ja':\n default:\n i18n.changeLanguage('ja');\n break;\n }\n}\n","import { makeStyles, useTheme } from \"@material-ui/styles\";\nimport React from \"react\";\nimport { TaxiCompanyList } from \"../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams\";\nimport EasternLogoJP from './../images/eastern_airport_logo.png';\nimport EasternLogoEN from './../images/eastern_airport_logo_en.png';\nimport SandenLogo from './../images/sandenTaxiLogo.png';\nimport NahaHireLogo from './../images/nahaHireLogo.png';\nimport MiyakoTaxiLogo from './../images/miyakou-taxi-logo.jpg';\nimport HinomaruHireLogo from './../images/hinomaruHireLogo.png'\nimport NangokuTaxiLogo from './../images/nangokuTaxiLogo.png';\nimport IyotetsuLogo from './../images/iyotetsutaxi-logo.png';\nimport GotakuLogo from './../images/gotaku-logo.png';\nimport AsahikawachuuoLogo from './../images/asahikawa-chuuo-logo.png'\nimport HakodateTaxiLogo from './../images/hakodate-taxi-logo.png'\n\nimport DaiwaTaxiLogo from './../images/daiwa-taxi-logo.jpg';\nimport KitaFukushimaTaxiLogo from './../images/kita-fukushima-taxi-logo.jpg';\nimport FukushimaChuoTaxiLogo from './../images/fukushima-chuo-taxi-logo.jpg';\nimport IwakiTaxiLogo from './../images/iwaki-taxi-logo.jpg';\nimport UchigoTaxiLogo from './../images/uchigo-taxi-logo.jpg';\nimport TajimaTaxiLogo from './../images/tajima-taxi-logo.png';\nimport KinugawaTaxiLogo from './../images/kinugawa-taxi-logo.png';\nimport hokutocabLogo from './../images/hokto-taxi-logo.png';\nimport YokoTaxiLogo from './../images/yoko-taxi-logo.jpg';\nimport KingTaxiLogo from './../images/king-taxi-logo.png';\nimport TodenTaxiLogo from './../images/toden-taxi-logo.png';\nimport IshikawaKotsuLogo from './../images/ishikawa-taxi-logo.jpg';\nimport UbeKounaiLogo from './../images/ube-kounai-taxi-logo.png';\nimport TsuzuTaxiLogo from './../images/tsuzu-taxi-logo.png';\nimport SakataNo1TaxiLogo from './../images/sakata-no1taxi-logo.png';\nimport ShokoHireLogo from './../images/shoko-hire-logo.png';\nimport KisakataLogo from './../images/kisakata-logo.png';\n\nimport DummyTaxiLogo from './../images/dummy_taxi_logo.png';\n\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../../../../reducers\";\nimport { Lang } from \"../../../../../states/query\";\nimport { isJapanese } from \"../../../../../utils/lang\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface Props {\n company: TaxiCompanyList,\n lang: Lang\n}\n\nconst useStyles = makeStyles(() => ({\n easternLogo: {\n margin: '10px 0px',\n width: '100%',\n maxHeight: '156px',\n },\n ubeSandenLogo: {\n margin: '10px 0px',\n width: '100%',\n maxWidth: '640px',\n maxHeight: '156px',\n },\n nahahireLogo: {\n margin: '10px 0px',\n width: '100%',\n maxWidth: '640px',\n maxHeight: '156px',\n background: '#000000'\n },\n miyakohLogo: {\n marginBottom: \"10px\",\n maxWidth: \"468px\",\n width: \"100%\",\n },\n nangokuLogo: {\n margin: '10px 0px',\n width: '100%',\n maxWidth: '450px'\n },\n iyotetsutaxiLogo: {\n margin: '10px 0px',\n width: \"100%\",\n maxWidth: 'min(640px, 100%)',\n maxHeight: '156px',\n },\n wideShortTaxiLogo: {\n margin: '10px 0px',\n maxWidth: 'min(640px, 100%)',\n maxHeight: '156px',\n },\n kinugawaTaxiLogo: {\n margin: '10px 0px',\n maxWidth: 'min(426px, 100%)',\n maxHeight: '156px',\n },\n body: {\n width: '100%',\n textAlign: 'center'\n }\n}));\n\n/**\n * å„タクシー会社ã®ä¼æ¥ãƒã‚´ã‚’表示ã™ã‚‹\n * @param props 会社å\n * @returns ä¼æ¥ãƒã‚´Components\n */\nconst ShowTaxiComapnyLogo: React.FC<Props> = (props: Props) => {\n const { i18n } = useTranslation();\n const theme = useTheme();\n const classes = useStyles(theme);\n const taxiCompanyConfigurations = useSelector((state: State) => state.general.taxiCompanyConfigurations);\n if(!taxiCompanyConfigurations) {\n return null;\n }\n const taxiCompanyConfiguration = taxiCompanyConfigurations[props.company] || taxiCompanyConfigurations[TaxiCompanyList.limoTaxi];\n const EasternLogo = isJapanese(i18n.language)? EasternLogoJP: EasternLogoEN;\n\n const Logos: { [keys in TaxiCompanyList]: string } = {\n [TaxiCompanyList.eastern]: EasternLogo,\n [TaxiCompanyList.limoTaxi]: EasternLogo,\n [TaxiCompanyList.miyakou]: MiyakoTaxiLogo,\n [TaxiCompanyList.ubeSanden]: SandenLogo,\n [TaxiCompanyList.nahahire]: NahaHireLogo,\n [TaxiCompanyList.hinomaru]: HinomaruHireLogo,\n [TaxiCompanyList.nangoku]: NangokuTaxiLogo,\n [TaxiCompanyList.iyotetsutaxi]: IyotetsuLogo,\n [TaxiCompanyList.iyotetsuTaxi2]: IyotetsuLogo,\n [TaxiCompanyList.gotaku]: GotakuLogo,\n [TaxiCompanyList.hakodateTaxi]: HakodateTaxiLogo,\n [TaxiCompanyList.Asahikawachuuo]: AsahikawachuuoLogo,\n [TaxiCompanyList.daiwaj]: DaiwaTaxiLogo,\n [TaxiCompanyList.kitafukushima]: KitaFukushimaTaxiLogo,\n [TaxiCompanyList.fukushimachuo]: FukushimaChuoTaxiLogo,\n [TaxiCompanyList.iwakiTaxi]: IwakiTaxiLogo,\n [TaxiCompanyList['uchi-go']]: UchigoTaxiLogo,\n [TaxiCompanyList.tajimaTaxi]: TajimaTaxiLogo,\n [TaxiCompanyList.kinugawaTaxi]: KinugawaTaxiLogo,\n [TaxiCompanyList.hokutocab]: hokutocabLogo,\n [TaxiCompanyList.yotoTaxi]: YokoTaxiLogo,\n [TaxiCompanyList.kingTaxi]: KingTaxiLogo,\n [TaxiCompanyList.toden]: TodenTaxiLogo,\n [TaxiCompanyList.ishikawakotsu]: IshikawaKotsuLogo,\n [TaxiCompanyList.kingTaxi2]: KingTaxiLogo,\n [TaxiCompanyList.ubeKounai]: UbeKounaiLogo,\n [TaxiCompanyList.tsuzutaxi]: TsuzuTaxiLogo,\n [TaxiCompanyList.sakataNo1Taxi]: SakataNo1TaxiLogo,\n [TaxiCompanyList.shokoHire]: ShokoHireLogo,\n [TaxiCompanyList.airport_liner]: KisakataLogo,\n [TaxiCompanyList.nikaho_go]: KisakataLogo,\n [TaxiCompanyList.dummyVal]: DummyTaxiLogo\n }\n const classNames: { [keys in TaxiCompanyList]: string } = {\n [TaxiCompanyList.eastern]: classes.easternLogo,\n [TaxiCompanyList.limoTaxi]: classes.easternLogo,\n [TaxiCompanyList.miyakou]: classes.miyakohLogo,\n [TaxiCompanyList.ubeSanden]: classes.ubeSandenLogo,\n [TaxiCompanyList.nahahire]: classes.nahahireLogo,\n [TaxiCompanyList.hinomaru]: classes.easternLogo,\n [TaxiCompanyList.nangoku]: classes.nangokuLogo,\n [TaxiCompanyList.iyotetsutaxi]: classes.iyotetsutaxiLogo,\n [TaxiCompanyList.iyotetsuTaxi2]: classes.iyotetsutaxiLogo,\n [TaxiCompanyList.gotaku]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.hakodateTaxi]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.Asahikawachuuo]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.daiwaj]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.kitafukushima]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.fukushimachuo]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.iwakiTaxi]: classes.easternLogo,\n [TaxiCompanyList['uchi-go']]: classes.easternLogo,\n [TaxiCompanyList.tajimaTaxi]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.kinugawaTaxi]: classes.kinugawaTaxiLogo,\n [TaxiCompanyList.hokutocab]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.yotoTaxi]: classes.easternLogo,\n [TaxiCompanyList.kingTaxi]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.toden]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.ishikawakotsu]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.kingTaxi2]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.ubeKounai]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.tsuzutaxi]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.sakataNo1Taxi]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.shokoHire]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.airport_liner]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.nikaho_go]: classes.wideShortTaxiLogo,\n [TaxiCompanyList.dummyVal]: classes.easternLogo\n }\n const src = Logos[props.company];\n const className = classNames[props.company];\n return (\n <div className={classes.body}>\n <img\n src={src}\n alt={taxiCompanyConfiguration.logo.alt}\n className={className}\n data-cy={taxiCompanyConfiguration.cyName.logo}\n />\n </div>\n )\n}\n\nexport default ShowTaxiComapnyLogo;\n","/** タクシー予約画é¢ã®ç·¯åº¦çµŒåº¦ã«é–¢ã™ã‚‹å‡¦ç†ã®ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class Coordinates {\n /** æ±äº¬é§…ã®åº§æ¨™ï¼ˆãƒ¡ã‚¿æƒ…å ±ã‚’èªã¿è¾¼ã‚ãªã„時ã®ãŸã‚ã®æœ¬å½“ã®åˆæœŸåº§æ¨™ï¼‰ */\n static readonly TOKYO_STATION = {\n lat: 35.68153260987459,\n lng: 139.76771635598573,\n };\n}\n","/** é€è¿Žãƒ‘ターンã®ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class PickupPattern {\n /** ãŠè¿Žãˆå…ˆâ†’空港(ï¼ç©ºæ¸¯ç€ï¼‰ã®å ´åˆã®è¨å®šå€¤ã€‚ */\n static readonly TO_AIRPORT = 1;\n\n /** 空港→ãŠé€ã‚Šå…ˆï¼ˆï¼ç©ºæ¸¯ç™ºï¼‰ã®å ´åˆã®è¨å®šå€¤ã€‚ */\n static readonly FROM_AIRPORT = 2;\n\n /** 往復ã®å ´åˆã®è¨å®šå€¤ã€‚ */\n // 2021/07/07ç¾åœ¨æœªä½¿ç”¨ã€‚\n static readonly ROUND_TRIP = 3;\n\n /**\n * é€è¿Žãƒ‘ターンãŒç©ºæ¸¯ç€ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param v\n */\n static isToAirport(v: number) {\n return v === PickupPattern.TO_AIRPORT;\n }\n}\n","import { load } from 'recaptcha-v3';\n\n/** Google reCAPTCHAã®ã‚ãƒ¼æƒ…å ±ã€‚ */\nconst RECAPTCHA_KEY = process.env[\"REACT_APP_GOOGLE_RECAPTCHA_KEY\"] as string;\n\n/** Google reCaptcha V3ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’å–å¾—ã™ã‚‹ã€‚ */\nexport async function getRecaptchaToken() {\n try {\n /** Google reCaptchaã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const recaptcha = await load(RECAPTCHA_KEY);\n /** Google reCaptchaã®ãƒˆãƒ¼ã‚¯ãƒ³ã€‚ */\n const token = await recaptcha.execute('homepage');\n return token;\n }\n catch(e) {\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(\"reCAPTCHA v3ã®ãƒˆãƒ¼ã‚¯ãƒ³å–å¾—ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\");\n console.error(e);\n }\n return \"\";\n }\n}\n","import axios from 'axios';\nimport { setTaxiEndpoint } from '../GetReservation';\nimport { TemporaryReservationParams } from './TemporaryReservationParams';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 60000,\n};\n\n/** 仮予約APIを呼ã³å‡ºã™ã€‚ */\nexport async function submitTemporaryReservation(params: TemporaryReservationParams) {\n try {\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n /** 仮予約APIã®ãƒ‘ス。 */\n const path = await setPath();\n // 仮予約APIã«POSTメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n return await instance.post(path, {...params});\n } catch (err) {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã€nullã‚’è¿”ã™ã€‚\n return null;\n }\n}\n\n/** 環境ã«å¿œã˜ã¦å‘¼ã³å‡ºã™APIã®ãƒ‘スを切り替ãˆã‚‹ã€‚ */\nasync function setPath() {\n return setTaxiEndpoint('submit-temporary-reservation');\n}\n","/**\n * 二点間ã®è·é›¢ã‚’求ã‚ã‚‹\n * @param depPoint 出発地\n * @param arrPoint 到ç€åœ°\n */\nexport const computeDistanceBetween = (depPoint: GeoLocation, arrPoint: GeoLocation) => {\n const rad = (deg: number) => {\n return deg * Math.PI / 180;\n }\n const depRedPoint = {\n lat: rad(depPoint.lat),\n lng: rad(depPoint.lng)\n }\n const arrRedPoint = {\n lat: rad(arrPoint.lat),\n lng: rad(arrPoint.lng)\n }\n\n // 緯度差\n const latDiff = depRedPoint.lat - arrRedPoint.lat;\n // 経度差算\n const lngDiff = depRedPoint.lng - arrRedPoint.lng;\n // å¹³å‡ç·¯åº¦\n const latAvg = (depRedPoint.lat + arrRedPoint.lat) / 2.0;\n // 赤é“åŠå¾„\n const equatorRad = 6378137.0;\n // 第一離心率^2\n const e2 = 0.00669438002301188;\n // 赤é“上ã®ååˆç·šæ›²çŽ‡åŠå¾„\n const a1e2 = 6335439.32708317;\n const sinLat = Math.sin(latAvg);\n const W2 = 1.0 - e2 * (sinLat * sinLat);\n // ååˆç·šæ›²çŽ‡åŠå¾„M\n const M = a1e2 / (Math.sqrt(W2) * W2);\n // å¯é…‰ç·šæ›²çŽ‡åŠå¾„\n const N = equatorRad / Math.sqrt(W2);\n const t1 = M * latDiff;\n const t2 = N * Math.cos(latAvg) * lngDiff;\n return Math.sqrt((t1 * t1) + (t2 * t2));\n}\n/**\n * 駅ã™ã±ã‚ã¨ã®ç·¯åº¦çµŒåº¦æƒ…å ±ã‚ˆã‚Šã€GeoLocationå½¢ã«å¤‰æ›ã™ã‚‹\n */\nexport const convertEWSToLocation = (baseGeoPoint: EWSGeoPoint): GeoLocation => {\n return {\n lat: Number(baseGeoPoint.lati_d),\n lng: Number(baseGeoPoint.longi_d),\n gcs: baseGeoPoint.gcs\n }\n}\n/**\n * Location型を駅ã™ã±ã‚ã¨ã§ä½¿ãˆã‚‹åº§æ¨™æƒ…å ±æ–‡å—列ã«å¤‰æ›ã™ã‚‹\n */\nexport const convertLocationToStr = (point: GeoLocation): string => {\n return `${point.lat},${point.lng}`;\n}\n\n/**\n * æ–‡å—列をGeoLocationåž‹ã«å¤‰æ›ã™ã‚‹\n * @param point 変æ›å¯¾è±¡ã®æ–‡å—\n * @returns\n */\nexport const convertStrToLocation = (point: string): GeoLocation => {\n const lat = Number(point.split(',')[0]);\n const lng = Number(point.split(',')[1]);\n if(isNaN(lat) || isNaN(lng)) {\n throw new Error(`対象ã®æ–‡å—列ã¯åº§æ¨™ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“: ${point}`)\n }\n return {\n lat: lat,\n lng: lng\n }\n}\n\nexport interface GeoLocation {\n lat: number;\n lng: number;\n gcs?: string;\n}\n\nexport interface EWSGeoPoint {\n longi: string;\n lati: string;\n longi_d: string;\n lati_d: string;\n gcs: string;\n}\n","import { Point } from '../../services/ekispert/models';\nimport { Prefecture } from '../../services/ekispert/models/operationLinePattern';\nimport { Type } from '../../services/ekispert/models/stationLight';\nimport { PointType } from '../../states/common';\nimport { convertEWSToLocation, GeoLocation } from '../../utils/geoLocation';\n\n// オートコンプリートã§è¡¨ç¤ºã™ã‚‹å€™è£œã®ã‚¯ãƒ©ã‚¹ã€‚\nexport class Candidate {\n name: string;\n code: string;\n type: string;\n geoPoint?: GeoLocation;\n prefecture?: Prefecture;\n description?: string;\n\n /**\n * constructor\n * @param name 地点å\n * @param code 駅コード\n * @param type 地点種別\n * @param geoPoint åœ°ç‚¹ç·¯åº¦çµŒåº¦æƒ…å ±\n * @param prefecture 都é“åºœçœŒæƒ…å ±\n * @param description 備考(ä½æ‰€ï¼‰\n */\n constructor(name: string, code: string, type: string | Type, geoPoint?: GeoLocation | null, prefecture?: Prefecture | null, description?: string) {\n this.name = name;\n this.code = code;\n // stringã®å ´åˆã¯ãã®ã¾ã¾æŽ¡ç”¨ã—ã€ãƒã‚¹ã®å ´åˆã¯1階層深ã„オブジェクトã®ãŸã‚分å²ã—ã¦ã„る。\n this.type = typeof type === 'string' ? type : type.text;\n if(geoPoint) {\n this.geoPoint = geoPoint;\n }\n if(prefecture) {\n this.prefecture = prefecture;\n }\n if(description) {\n this.description = description;\n }\n }\n\n static convertPointToCandidate(point: Point) {\n return new Candidate(point.Station.Name, point.Station.code, point.Station.Type, convertEWSToLocation(point.GeoPoint), point.Prefecture);\n }\n\n /** 候補リストã§è¡¨ç¤ºã™ã‚‹å„種別ã«å¿œã˜ãŸãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã€‚ */\n getTypeLabel(t: any) {\n switch (this.type) {\n // ç¾åœ¨åœ°ã®å ´åˆã€‚\n case 'currentPosition':\n // 空文å—ã«ã™ã‚‹ã“ã¨ã§è¦‹å‡ºã—(背景色ã¤ãã®éƒ¨åˆ†ï¼‰ã¯éžè¡¨ç¤ºã¨ã™ã‚‹ã€‚\n return '';\n // 鉄é“ã®å ´åˆã€‚\n case 'train':\n return t('station');\n // æ–½è¨ãƒ»åœ°ç‚¹ï¼ˆGoogle Places APIã‹ã‚‰å–å¾—ã—ãŸå€™è£œï¼‰ã®å ´åˆã€‚\n case 'place':\n return t('place');\n // ãƒã‚¹ã®å ´åˆã€‚\n case 'bus':\n return t('bus_stop');\n // 船ã®å ´åˆã€‚\n case 'ship':\n return t('port');\n // å±¥æ´ã®å ´åˆã€‚\n case PointType.HISTORY:\n return t('search:history') + t('search:history_limit');\n // ãれ以外ã¯ç©ºæ–‡å—ã‚’è¿”ã™ã€‚\n default:\n return '';\n }\n }\n}\n","import { Lang } from \"../states/query\";\n\n/** æ–‡å—列ã«é–¢ã™ã‚‹å‡¦ç†ã‚’ã¾ã¨ã‚ãŸã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class StringUtils {\n /**\n * 番地ã®å½¢å¼ï¼ˆæ•°å—ã®ã¿ã€ã¾ãŸã¯ã€å…¨è§’マイナスã¤ãªãŽã®æ•°å—)ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param str 判定ã—ãŸã„æ–‡å—列。\n */\n static isHouseNumber(str: string) {\n const regex = RegExp('^[0-9ï¼-9−]+$');\n return regex.test(str);\n }\n\n /**\n * æ–‡å—列ã®æœ«å°¾ãŒæ•°å—ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param str 判定ã—ãŸã„æ–‡å—列。\n */\n static endsWithNumbers(str: string) {\n const regex = RegExp('.*[0-9ï¼-ï¼™]$');\n return regex.test(str);\n }\n\n /**\n * カッコ付ãã®æ–‡å—列ã«ã™ã‚‹ã€‚\n * 例:「第1ターミナルã€â†’「(第1ターミナル)ã€\n * @param str カッコã§æ‹¬ã‚ŠãŸã„æ–‡å—列。\n */\n static addBracket(str: string) {\n return '(' + str + ')';\n }\n\n /** \n * 言語è¨å®šã«å¿œã˜ã¦æ–‡å—列ã®é…列ã®å„è¦ç´ ã‚’çµåˆã™ã‚‹ã€‚\n * @param data çµåˆã—ãŸã„æ–‡å—列ã®é…列。\n * @param lang 言語è¨å®šã€‚\n * */\n static join(data: string[], lang: string = Lang.ja) {\n // 英語版ã®å ´åˆã¯å„å˜èªžã«ã‚¹ãƒšãƒ¼ã‚¹ã‚’入れã¦çµåˆã™ã‚‹ã€‚\n return (lang === Lang.en) ? data.join(' ') : data.join('');\n }\n\n /**\n * æ–‡å—列ãŒç·¯åº¦çµŒåº¦ã®å½¢å¼ã«ãªã£ã¦ã„ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param value 判定ã—ãŸã„æ–‡å—列。\n */\n static isCoordinates(value: string) {\n /** 緯度経度ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã®æ£è¦è¡¨ç¾ã€‚ */\n const coordinetesRegexp = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?).*$/;\n /** 与ãˆã‚‰ã‚ŒãŸå¼•æ•°ã®æ–‡å—列ãŒç·¯åº¦çµŒåº¦ã®å½¢å¼ã§ã‚ã‚‹ã‹ã‚’判定ã—ãŸçµæžœã€‚ */\n // matchメソッドã®æˆ»ã‚Šå€¤ãŒnullã®å ´åˆã¯falseã‚’ã€ãれ以外(Array)ã®å ´åˆã¯trueã‚’è¿”ã™ã€‚\n const result = value.match(coordinetesRegexp) === null ? false : true;\n return result;\n }\n}\n","import { AddressComponent, Result } from \"./PlaceDetail\";\nimport StringUtil from './../../utils/stringUtils';\nimport { Lang } from \"../../states/query\";\nimport { GeoLocation } from \"../../utils/geoLocation\";\nexport interface PlaceLog {\n prefecture: string;\n city: string;\n address: string;\n place: string;\n category: string;\n}\n\nexport interface PlaceData {\n /** 緯度。 */\n lat: string;\n /** 経度。 */\n lng: string;\n /** 都é“府県。 */\n prefecture: string;\n /** 市区町æ‘。 */\n city: string;\n /** ãã®ä»–ã®ä½æ‰€ã€‚ */\n address: string;\n /** 地点å。 */\n name: string;\n /** 地点ã®ã‚«ãƒ†ã‚´ãƒªã€‚ */\n category: string;\n /** ä½æ‰€æƒ…å ± */\n formattedAddress: string;\n}\n\n/** Google Places APIã‹ã‚‰å–å¾—ã—ãŸåœ°ç‚¹ã‚’扱ã†ã‚¯ãƒ©ã‚¹ã€‚(検索ãƒã‚°ç”¨ã®æƒ…å ±ã‚’æ ¼ç´ã™ã‚‹ã€‚) */\nexport default class Place implements PlaceData {\n /** 緯度。 */\n lat: string;\n /** 経度。 */\n lng: string;\n /** 都é“府県。 */\n prefecture: string;\n /** 市区町æ‘。 */\n city: string;\n /** ãã®ä»–ã®ä½æ‰€ã€‚ */\n address: string;\n /** 地点å。 */\n name: string;\n /** 地点ã®ã‚«ãƒ†ã‚´ãƒªã€‚ */\n category: string;\n /** ä½æ‰€æƒ…å ± */\n formattedAddress: string;\n\n // 定数。\n /** 都é“府県ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー。 */\n prefectureKey = 'administrative_area_level_1';\n /** 市区町æ‘ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー(ãã®1)。 */\n administrativeAreaLv2Key = 'administrative_area_level_2';\n /** 市区町æ‘ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー(ãã®2)。 */\n cityKey1 = 'locality';\n /** 市区町æ‘ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー(ãã®3)。 */\n cityKey2 = 'sublocality_level_1';\n /** ãã®ä»–ã®ä½æ‰€ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー。 */\n premiseKey = 'premise';\n /** 郵便番å·ã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー。 */\n postalCode = 'postal_code';\n /** 国åã¨ã—ã¦åˆ¤åˆ¥ã™ã‚‹ã‚ー。 */\n country = 'country';\n /** 全角マイナス。 */\n fillwidthMinus = '−';\n\n /** リãƒãƒ¼ãƒ‰æ™‚ã«ã‚‚æƒ…å ±ã‚’å¾©å…ƒã§ãるよã†ã«æ ¼ç´ã™ã‚‹Session Storageã®ã‚ー。 */\n static readonly sessionStorageKeys = {\n /** 地点ã®åç§°ã‚’æ ¼ç´ã™ã‚‹ã‚ー。 */\n latlng: 'ana-airport-access-navi_latlng',\n };\n\n /**\n * コンストラクタ。\n * @param response Place Details(https://maps.googleapis.com/maps/api/place/details/)ã§å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ã€‚\n */\n constructor(result: Result);\n constructor(result: Place);\n constructor(result: PlaceData);\n constructor(result: any) {\n // geometry è¦ç´ ãŒã‚ã‚Œã°PlaceData Typeã¨åˆ¤å®šã™ã‚‹\n if(result.geometry) {\n this.lat = result.geometry.location.lat.toString();\n this.lng = result.geometry.location.lng.toString();\n // 都é“府県・市区町æ‘ã¯åˆ¥ãƒ¡ã‚½ãƒƒãƒ‰ã§è¨å®šã™ã‚‹ãŸã‚ã€ä¸€æ—¦ç©ºæ–‡å—をセットã™ã‚‹ã€‚\n this.prefecture = '';\n this.city = '';\n // ä½æ‰€æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n this.formattedAddress = result.formatted_address;\n // 都é“府県・市区町æ‘ã‚’è¨å®šã™ã‚‹ã€‚\n this.setFromAddressComponents(result.address_components);\n // ãã®ä»–ä½æ‰€ã‚’address_componentsè¦ç´ ã‹ã‚‰è¨å®šã™ã‚‹ã€‚\n this.address = this.setAddress(result.address_components);\n // 地点å称ã¯nameè¦ç´ ã‹ã‚‰å–å¾—ã™ã‚‹ã€‚\n this.name = result.name;\n // スラッシュ区切りã§ã‚«ãƒ†ã‚´ãƒªï¼ˆtype)ã®è¦ç´ ã‚’1ã¤ã®æ–‡å—列ã«ã™ã‚‹ã€‚\n this.category = result.types.join('/');\n } else {\n this.lat = result.lat;\n this.lng = result.lng;\n this.prefecture = result.prefecture;\n this.city = result.city;\n this.address = result.address;\n this.name = result.name;\n this.category = result.category;\n this.formattedAddress = result.formattedAddress;\n }\n }\n\n /** places/geocode ã§åœ°ç‚¹ã‚’å–å¾—ã—ãŸå ´åˆã«ã¯åœ°ç‚¹åãŒå–ã‚Œãªã„ã®ã§å¾Œå…¥ã‚Œã‚’ã™ã‚‹ */\n setPlaceName(name: string) {\n if(!this.name || this.name === '') {\n this.name = name;\n }\n }\n\n /**\n * ä½æ‰€ï¼ˆéƒ½é“府県・市区町æ‘・å—(+番地ãªã©ï¼‰ï¼‰ã®æ–‡å—列をå–å¾—ã™ã‚‹ã€‚\n * @param lang 言語è¨å®šã€‚未指定ã®å ´åˆã¯æ—¥æœ¬èªžç‰ˆã¨ãªã‚‹ã€‚\n */\n getFullAddress = (lang: Lang = Lang.ja) => {\n // 日本語版ã®å ´åˆã¯ã€Œéƒ½é“府県ã€ã€Œå¸‚区町æ‘ã€ã€Œå—(+番地ãªã©ï¼‰ã€ã®é †ã®æ–‡å—列を返ã™ã€‚\n if(lang === Lang.ja) {\n return `${this.prefecture}${this.city}${this.address}`;\n }\n // 英語版ã®å ´åˆã¯ã€Œå—(+番地ãªã©ï¼‰ã€ã€Œå¸‚区町æ‘ã€ã€Œéƒ½é“府県ã€ã®é †ã®æ–‡å—列を返ã™ã€‚\n else {\n return `${this.address}, ${this.city}, ${this.prefecture}`;\n }\n }\n\n /**\n * 市区町æ‘ã¾ã§ã®ä½æ‰€ï¼ˆéƒ½é“府県・市区町æ‘)ã®æ–‡å—列をå–å¾—ã™ã‚‹ã€‚\n * (空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼ã®äºˆç´„時ã®ã‚¨ãƒªã‚¢åˆ¤åˆ¥ã§åˆ©ç”¨ã™ã‚‹ã€‚2021/07/12ç¾åœ¨ã€‚)\n */\n getAddressToMunicipality = () => {\n // 「都é“府県ã€ã€Œå¸‚区町æ‘ã€ã‚’組ã¿åˆã‚ã›ãŸæ–‡å—列を返ã™ã€‚\n return `${this.prefecture}${this.city}`;\n }\n\n /**\n * address_componentè¦ç´ ã‹ã‚‰éƒ½é“府県・市区町æ‘ã‚’è¨å®šã™ã‚‹ã€‚\n * @param addressComponent Place Detailsã§å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®address_componentè¦ç´ 。\n */\n setFromAddressComponents = (addressComponent: AddressComponent[]) => {\n let prefecture = '';\n let cityList: AddressComponent[] = [];\n // 日本ã®ä½æ‰€ã®è¨˜æ³•ã¨ã¯é€†é †ã§ãƒ‡ãƒ¼ã‚¿ãŒè¿”å´ã•ã‚Œã‚‹ãŸã‚ã€é…列ã®é †åºã‚’逆転ã•ã›ãŸä¸Šã§ãƒ«ãƒ¼ãƒ—ã•ã›ã‚‹ã€‚\n addressComponent.reverse().forEach((c) => {\n const types = c.types;\n const longName = c.long_name;\n // åå¤å±‹é§…ãªã©ã¯administrative_area_level1ã¨2ãŒåŒã˜æ„›çŸ¥çœŒã«ãªã£ã¦ã„ã‚‹ãŸã‚ã€ãã®ã‚ˆã†ãªã‚±ãƒ¼ã‚¹ã¯æ¨ã¦ã‚‹ã€‚\n if (types.includes(this.administrativeAreaLv2Key) && prefecture === longName) { return; }\n // 種別ãŒéƒµä¾¿ç•ªå·ã¾ãŸã¯å›½åã®å ´åˆã¯ã‚¹ã‚ップã™ã‚‹ã€‚\n if (types.includes(this.postalCode) || types.includes(this.country)) {\n return;\n // 種別ã«éƒ½é“府県を表ã™ã‚ーをå«ã‚“ã§ã„ã‚‹å ´åˆã¯éƒ½é“府県ã®å称ã¨ã—ã¦æŽ¡ç”¨ã™ã‚‹ã€‚\n } else if (types.includes(this.prefectureKey)) {\n prefecture = longName;\n // 種別ã«å¸‚区町æ‘を表ã™ã‚ーをå«ã‚“ã§ã„ã‚‹å ´åˆã¯å¸‚区町æ‘ã®å称ã¨ã—ã¦æŽ¡ç”¨ã™ã‚‹ã€‚\n } else if (types.includes(this.cityKey1) || types.includes(this.cityKey2) || types.includes(this.administrativeAreaLv2Key)) {\n cityList.push(c);\n }\n })\n // 市区町æ‘を求ã‚ã‚‹\n this.city = cityList.map((c)=>{\n // 該当地点ãŒãƒ•ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ä¸ã§ä½•æ–‡å—ç›®ã«æ¥ã‚‹ã‹ã‚’求ã‚ã‚‹\n c.index = this.formattedAddress.indexOf(c.long_name);\n return c;\n })\n // フルアドレスã«ãƒžãƒƒãƒã—ãªã„地åã¯é™¤å¤–ã™ã‚‹\n .filter((x)=>{\n return x.index !== -1;\n })\n // フルアドレスã«å‡ºã¦ãã‚‹é †ã«ä¸¦ã³æ›¿ãˆã‚‹\n .sort((a, b)=>{\n if(a.index === undefined || b.index === undefined) {\n return 0;\n }\n else {\n return a.index > b.index? 1: -1;\n }\n })\n // フルアドレスã«å‡ºã¦ãã‚‹é †ã«æ§‹ç¯‰ã™ã‚‹\n .reduce((x, a)=>{\n return x + a.long_name;\n }, \"\");\n /**\n * TODO:「奈良県宇陀郡曽爾æ‘ã€ã‚’é¸æŠžã—ãŸéš›ã«ã€Œå¥ˆè‰¯çœŒæ›½çˆ¾æ‘宇陀郡ã€ã«ãªã‚‹å ´åˆãŒã‚ã‚‹ã®ã§ä¿®æ£å‡¦ç†ã‚’入れるãŒã€\n * デグレãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã®ã§ä¸€æ—¦ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã—ã¦ã„る(2022/03/04)\n **/\n // this.city = this.fixCity()\n this.prefecture = prefecture;\n }\n\n /**\n * Google APIã®ãƒ‡ãƒ¼ã‚¿ã‹ã‚‰ãã®ä»–ä½æ‰€ã‚’è¨å®šã™ã‚‹ã€‚\n * @param addressComponents Google Places Details APIã®ä½æ‰€ãƒ‡ãƒ¼ã‚¿ã®é…列。\n */\n setAddress = (addressComponents: AddressComponent[]) => {\n let address = '';\n /** \n * typeè¦ç´ ã«ã€Œsublocality_level_2〠~ 「sublocality_level_5ã€ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹è¦ç´ ã‚’æ ¼ç´ã™ã‚‹é…列。\n * https://developers.google.com/places/supported_types\n * */\n const sublocalityElements: AddressComponent[] = [];\n /** 都é“府県より先ã®ä½æ‰€ã¨ã—ã¦æ‰±ã†ä½æ‰€è¦ç´ ã®ã‚ãƒ¼ã‚’æ ¼ç´ã™ã‚‹é…列。 */\n const sublocalityKeys: string[] = [];\n /** 都é“府県より先ã®ä½æ‰€ã¨ã—ã¦æ‰±ã†ä½æ‰€è¦ç´ ã®ã‚ーã®å…±é€šã™ã‚‹æ–‡å—列。 */\n const subLocalityKey = 'sublocality_level_';\n // ä½æ‰€ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’ループã™ã‚‹ã€‚\n addressComponents.forEach((c) => {\n // typeè¦ç´ ã®å…¨é …目を評価ã™ã‚‹ã€‚\n c.types.forEach((type) => {\n // typeè¦ç´ ã®é…列ã«ã€Œsublocality_level_ã€ã‚’å«ã‚€æ–‡å—列をå«ã‚€ã€ã‹ã¤ã€ã€Œsublocality_level_1ã€ï¼ˆéƒ½é“府県å称)ã§ã¯ãªã„å ´åˆã€ãã®typeè¦ç´ ã®å€¤ã‚’é…列ã«æ ¼ç´ã™ã‚‹ã€‚\n if (type.includes(subLocalityKey) && type !== 'sublocality_level_1') { sublocalityKeys.push(type); }\n })\n })\n // ソートã—ãŸã€Œsublocality_level_xã€ã®ã‚ーをループã™ã‚‹ã€‚\n // (末尾ã®ã€Œxã€éƒ¨åˆ†ãŒæ•°å—ã§ã‚ã‚‹ãŸã‚ã€æ¨™æº–メソッドã®ã‚½ãƒ¼ãƒˆã§ä¸¦ã³æ›¿ãˆã‚‹ã“ã¨ã§é †ç•ªã©ãŠã‚Šã«ãƒ«ãƒ¼ãƒ—ã•ã›ã‚‹ã€‚)\n sublocalityKeys.sort().forEach((key) => {\n // ã‚らã‹ã˜ã‚å–å¾—ã—ãŸã‚ーをæŒã¤ä½æ‰€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’å–å¾—ã™ã‚‹ã€‚\n const targetComponent = addressComponents.find((c) => { return c.types.includes(key); })\n // ä½æ‰€ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆãŒå–å¾—ã§ããŸå ´åˆã®ã¿ã€é…列ã«æ ¼ç´ã™ã‚‹ã€‚\n if (targetComponent) { sublocalityElements.push(targetComponent); }\n })\n // 上記ã®whileæ–‡ã§ã€Œsublocality_level_xã€ã®æ•°å—é †ã«å–å¾—ã—ãŸsublocalityè¦ç´ をループã•ã›ã‚‹ã€‚\n sublocalityElements.forEach((s) => {\n const longName = s.long_name;\n // å‚ç…§ã—ã¦ã„ã‚‹è¦ç´ ãŒç•ªåœ°ã®å½¢å¼ï¼ˆæ•°å—ã®ã¿ã€ã¾ãŸã¯å…¨è§’マイナスã¤ãªãŽã®æ•°å—)ã€ã‹ã¤ã€ç¾åœ¨å–å¾—ã—ã¦ã„ã‚‹ãã®ä»–ä½æ‰€ã®æœ«å°¾ãŒæ•°å—ã§ã‚ã‚‹å ´åˆã€‚\n if (StringUtil.isHouseNumber(longName) && StringUtil.endsWithNumbers(address)) {\n // å…¨è§’ãƒžã‚¤ãƒŠã‚¹ã‚’è¿½åŠ ã™ã‚‹ã€‚\n address += this.fillwidthMinus;\n }\n address += longName;\n })\n // sublocality以下ã®ä½æ‰€ã‚’å–å¾—ã™ã‚‹ã€‚\n addressComponents.forEach((c) => {\n const types = c.types;\n if (types.includes(this.premiseKey)) {\n const longName = c.long_name;\n // 番地ã®å½¢å¼ï¼ˆæ•°å—ã®ã¿ã€ã¾ãŸã¯å…¨è§’マイナスã¤ãªãŽã®æ•°å—)ã§ã‚ã‚‹å ´åˆã€‚\n if (StringUtil.isHouseNumber(longName)) {\n // ç¾åœ¨å–å¾—ã—ã¦ã„ã‚‹ãã®ä»–ä½æ‰€ã®æœ«å°¾ãŒæ•°å—ã§çµ‚ã‚ã£ã¦ã„ã‚‹å ´åˆã¯å…¨è§’ãƒžã‚¤ãƒŠã‚¹ã‚’è¿½åŠ ã™ã‚‹ã€‚\n if (StringUtil.endsWithNumbers(address)) { address += this.fillwidthMinus; }\n address += longName;\n }\n }\n })\n // ã“ã“ã¾ã§ã®å‡¦ç†ã§ã€Œaddressã€ãŒç©ºã®å ´åˆã«ã¯ã€Œestablishmentã€å±žæ€§ã®è¦ç´ ã‚’è¿½åŠ ã™ã‚‹\n // AM-796「山形県酒田市 豊å·ã€å¯¾å¿œã®ãŸã‚ã®å‡¦ç†\n if(address === '') {\n addressComponents.forEach((c) => {\n if(c.types.includes('establishment')) {\n const longName = c.long_name;\n address += longName;\n }\n })\n }\n return address;\n }\n\n /** カンマ区切りã®ç·¯åº¦çµŒåº¦ï¼ˆé§…ã™ã±ã‚ã¨ã®çµŒè·¯æŽ¢ç´¢ã§åˆ©ç”¨ã™ã‚‹å½¢å¼ï¼‰ã‚’å–å¾—ã™ã‚‹ã€‚ */\n getCoordinate = () => {\n return this.lat + ',' + this.lng;\n }\n\n /** ãƒã‚°è¨˜éŒ²æ™‚ã«åˆ©ç”¨ã™ã‚‹ã‚ªãƒ–ジェクトã«å¤‰æ›ã™ã‚‹ã€‚ */\n toLog = (): PlaceLog => {\n return {\n prefecture: this.prefecture,\n city: this.city,\n address: this.address,\n place: this.name,\n category: this.category,\n }\n }\n\n /** 地点åã®åº§æ¨™ã‚’GeoLocationå½¢ã«å¤‰æ›ã™ã‚‹ */\n getLocation = (): GeoLocation => {\n return {\n lat: Number(this.lat),\n lng: Number(this.lng)\n }\n }\n\n /**\n * XXXæ‘XX郡ã®ä¸¦ã³ã«ãªã£ã¦ã„ã‚‹å ´åˆã«ã¯ä¸¦ã³ã‚’戻ã™\n * 奈良県宇陀郡曽爾æ‘ã‚’é¸æŠžã—ãŸå ´åˆã«ä½æ‰€ãŒãŠã‹ã—ããªã‚‹å ´åˆãŒã‚ã‚‹ã®ã§ã€XX郡ãŒå«ã¾ã‚Œã‚‹éš›ã«ä¸¦ã³ãŒæ£ã—ã„ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹\n * TODO: 1ケースã—ã‹è©¦ã—ã¦ã„ãªã„ã®ã§ä»–ã®å¸‚区町æ‘ã®ãƒ‘ターンã§ã‚‚æ£ç¢ºã«ç›´ã‚‹ã‹ã‚’検証ã—ãŸã„\n **/\n fixCity = () => {\n const matchPattern = /((?:æ—å·|伊é”|石狩|盛岡|奥州|ç”°æ‘|å—相馬|é‚£é ˆå¡©åŽŸ|æ±æ‘å±±|æ¦è”µæ‘å±±|ç¾½æ‘|å日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下æ¾|岩国|ç”°å·|大æ‘)市|.+?郡(?:玉æ‘|大町|.+?)[町æ‘]|.+?市.+?区|.+?[市区町æ‘])(.+)/\n const matchResult = this.city.match(matchPattern);\n // XXæ‘ã®å¾Œã«XXX郡ãŒæ¥ã¦ã„ã‚‹å ´åˆã«ã¯falseã¨ã™ã‚‹\n if(matchResult && matchResult[2] && matchResult[2].match(/.+?郡$/)) {\n return `${matchResult[2]}${matchResult[1]}`;\n }\n return this.city;\n }\n}\n","/* eslint @typescript-eslint/no-unused-vars: 0 */\n\nimport axios from 'axios';\nimport { Candidate } from '../../components/search/Candidate';\nimport { Lang } from '../../states/query';\nimport { convertEWSToLocation, GeoLocation } from '../../utils/geoLocation';\nimport { Point } from '../ekispert/models';\nimport { GetFlightInfoRequest, RequestDiaList, RequestSearchCourse } from './models/searchCourse';\nimport Environment from '../../utils/environment';\nimport { GetFlightInfoResponse } from './models/aswLinkageInfo';\nimport { InterruptToTransferRequest } from './models/interruptToTransfer';\n\n\nexport interface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst TIMEOUT_LIMIT = 40000;\n\n// mockã®URLを貼る\nconst MOCK_API_CONFIG: ApiConfig = {\n baseURL: '/',\n timeout: TIMEOUT_LIMIT,\n};\n\n// HTTP STATUS TEST用\nconst HTTP_STAT_CONFIG: ApiConfig = {\n baseURL: 'https://httpstat.us/',\n timeout: TIMEOUT_LIMIT,\n};\n\nexport const API_DEV_CONFIG: ApiConfig = {\n baseURL: 'https://ana-maas-api-dev.val.jp/',\n timeout: TIMEOUT_LIMIT,\n}\n\nexport const API_STAGE_CONFIG: ApiConfig = {\n baseURL: 'https://ana-maas-api-stg.val.jp/',\n timeout: TIMEOUT_LIMIT,\n}\n\nexport const API_PROD_CONFIG: ApiConfig = {\n baseURL: 'https://ana-maas-api.val.jp/',\n timeout: TIMEOUT_LIMIT,\n}\n\n/**\n * StatusErrorCodeテスト用ã«ã€ä»»æ„ã®HTTPStatusCodeã‚’è¿”ã™ãƒ¢ãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’投ã’ã‚‹\n * @param statusCode\n * @returns\n */\nconst getErrorStatus = async (statusCode: number) => {\n const useAPIConfig: ApiConfig = HTTP_STAT_CONFIG;\n const instance = axios.create(useAPIConfig);\n return await instance.get(`/${statusCode}`);\n}\n\n/** テスト用ã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‚’使用ã™ã‚‹ã‹ã‚’判別ã™ã‚‹ */\n/** Localã‹ã‚‰æœ¬ç•ªç”¨ã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã‚’使ã†å ´åˆã«ã¯å¸¸ã«ã€ŒAPI_PROD_CONFIGã€ã‚’è¿”ã™ã‚ˆã†ã«å¤‰æ›´ã—ã¦ãã ã•ã„ */\nexport const getUseAPI = (): ApiConfig => {\n /** 実行環境を判別ã™ã‚‹ãŸã‚ã®ç’°å¢ƒå¤‰æ•°ã€‚ */\n const env = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isProduction(env)) {\n return API_PROD_CONFIG;\n }\n switch(Environment.isBackendEnv()) {\n case Environment.PRODUCTION:\n return API_PROD_CONFIG;\n case Environment.STAGING:\n return API_STAGE_CONFIG;\n case Environment.DEV:\n return API_DEV_CONFIG;\n default:\n return API_STAGE_CONFIG;\n }\n}\n\n/**\n * 駅ã™ã±ã‚ã¨ã‹ã‚‰è¿”ã•ã‚Œã‚‹ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«ã‚µãƒ¼ãƒã®å€™è£œã®ã†ã¡ã€ã€Œç¦å²¡ã€ãªã©åˆ†ã‹ã‚Šã«ãã„駅åã¯ç½®æ›ã‚’ã™ã‚‹\n * @param points \n * @returns \n */\nconst replaceStationName = (points: Point[] | Point) => {\n const replaceOneStationName = (point: Point) => {\n // ç½®ãæ›ãˆå¯¾è±¡ã®é§…リスト\n const replaceStationList = [{\n point: \"24761\",\n replaceName: 'ç¦å²¡ï¼ˆå¯Œå±±çœŒï¼‰'\n }];\n // 対応駅ã®ã†ã¡ã€PointList\n const replaceStationPointList = replaceStationList.map((station)=>{\n return station.point;\n });\n if(replaceStationPointList.includes(point.Station.code)) {\n const replacePoint = replaceStationList.find((station)=>{\n return station.point === point.Station.code\n });\n // インクリメンタルサーãƒã«è¡¨ç¤ºã•ã‚Œã‚‹é§…åã®ç½®ãæ›ãˆã‚’ã™ã‚‹\n if(replacePoint) {\n point.Station.Name = replacePoint.replaceName;\n }\n }\n return point;\n }\n if(Array.isArray(points)) {\n return points.map((point)=>{\n return replaceOneStationName(point);\n })\n }\n else {\n return replaceOneStationName(points);\n }\n}\n\n/**\n * é§…è©³ç´°æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n * (広告ã®å‡ºç™ºãƒ»åˆ°ç€é§…ã®ç·¯åº¦çµŒåº¦ã‚’å–å¾—ã™ã‚‹ãŸã‚)\n * codeã¨name両方ã¨ã‚‚入れられãŸå ´åˆã«ã¯nameを優先ã™ã‚‹\n * /station/\n * @param code å–å¾—ã™ã‚‹é§…コード\n * @param name テã‚ストボックスã§å…¥åŠ›ã•ã‚ŒãŸå€¤ã€‚\n * @param optionConfig 独自ã§æŒ‡å®šã—ãŸAPIã®è¨å®šãªã©ï¼ˆä»»æ„)\n */\nexport async function getStationDetail(code: string | null, name: string | null, lang: Lang = Lang.ja, optionConfig?: object) {\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const config = {\n ...useAPIConfig,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n interface StationDetailParams {\n code?: string,\n name?: string,\n language: Lang,\n type: string,\n gcs: string\n }\n let params: StationDetailParams = {\n language: lang,\n type: 'train:ship:bus',\n gcs: 'wgs84'\n };\n if(code) {\n params.code = code\n }\n if(name) {\n params.name = name\n }\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2019/12/23ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n let response = await instance.get(`fetch-station`, { params });\n\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒundefinedã§ã¯ãªã„å ´åˆã«ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®å€¤ã‚’代入ã™ã‚‹ã€‚\n if (typeof response.data.ResultSet.Point !== undefined && response.data.ResultSet.Point !== undefined) {\n return replaceStationName(response.data.ResultSet.Point);\n }\n return [];\n}\n\nexport const changeStationDetailToCandidate = (points: Point[]): Candidate[] => {\n if(!points || !Array.isArray(points)) {\n return [];\n }\n return points.map((p)=>{\n const geoPoint: GeoLocation | null = p.GeoPoint? convertEWSToLocation(p.GeoPoint): null;\n return new Candidate(p.Station.Name, p.Station.code, p.Station.Type, geoPoint, p.Prefecture);\n })\n}\n\n/**\n * 駅ã™ã±ã‚ã¨çµŒè·¯æ¤œç´¢ã‚’è¡Œã†\n * /search\n * @param conditions \n */\nexport const getCourses = async (conditions: RequestSearchCourse) => {\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const response = await instance.post('/search', conditions, {\n headers: { \n 'Content-Type': 'application/json'\n }\n });\n return response.data;\n}\n\n/**\n * å‰å¾Œã®åˆ—車・ãƒã‚¹ãƒ»æ乗便一覧をå–å¾—ã™ã‚‹\n * @param conditions\n * @returns\n */\nexport const getPublicZengoDia = async (conditions: RequestDiaList) => {\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const response = await instance.post('/search/dia-list', conditions);\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.ResultSet;\n}\n\n/**\n * ASWスクレイピングçµæžœã®ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n * /get-flight-info\n * @param conditions\n * @returns\n */\nexport const getFlightInfo = async (conditions: GetFlightInfoRequest): Promise<GetFlightInfoResponse> => {\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const response = await instance.post('/get-flight-info', conditions);\n\n return response.data;\n}\n\n/*\n * é‹è¡Œæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n * /train-info\n * @param conditions\n */\nexport const getTrainInfo = async () => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const path = '/train-info';\n const response = await instance.get(path);\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.ResultSet;\n}\n\n/**\n * å‰å¾Œã®ãƒ€ã‚¤ãƒ¤ã‚ˆã‚Šå†æ¤œç´¢ã‚’ã™ã‚‹\n * /search/ekispert/assign-dia\n * @param request å†æ¤œç´¢ã«å¿…è¦ãªRequestBody\n */\nexport const assignDia = async (request: any) => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const path = '/search/ekispert/assign-dia';\n const response = await instance.post(path, request, {\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data;\n}\n\n/**\n * 回é¿ã™ã‚‹æ©Ÿèƒ½ã‚’実行ã™ã‚‹\n * /search/interrupt-to-transfer\n * @param request 回é¿æ©Ÿèƒ½å®Ÿè¡Œã«å¿…è¦ãªRequestBody\n */\nexport const interruptToTransfer = async (request: InterruptToTransferRequest) => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const instance = axios.create(useAPIConfig);\n const path = '/search/interrupt-to-transfer';\n const response = await instance.post(path, request, {\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data;\n}\n","import axios from 'axios';\nimport { PlaceAutocomplete } from '../google/PlaceAutocomplete';\nimport { PlaceDetail, Result } from '../google/PlaceDetail';\nimport Place from '../google/Place';\nimport { ApiConfig, getUseAPI } from './api';\nimport { Candidate } from '../../components/search/Candidate';\nimport { Lang } from '../../states/query';\n\n/**\n * GooglePlacesAPIã‹ã‚‰å–å¾—ã—ãŸä½æ‰€æƒ…å ±ã‚’æ•´å½¢ã™ã‚‹\n * @param baseAddress\n * @returns\n */\nexport const formatAddress = (baseAddress: string) => {\n // TODO: 日本語版ã®ã¿ã‚’想定ã—ã¦ã„ã‚‹ã®ã§ã€ä»Šå¾Œè‹±èªžç‰ˆãŒæ¥ãŸã‚‰å¯¾å¿œã™ã‚‹\n const matchList = baseAddress.match(/日本ã€(.*)/);\n if(matchList && Array.isArray(matchList) && matchList.length > 1 ) {\n return matchList[1];\n }\n else {\n return baseAddress;\n }\n}\n\n/**\n * Google Places APIã‹ã‚‰å€™è£œã‚’å–å¾—ã™ã‚‹å‡¦ç†ã€‚\n * @param input テã‚ストボックスã§å…¥åŠ›ã—ãŸå€¤ã€‚\n * @param lang 言語指定(ja/en)\n * @param optionConfig\n */\nexport async function getAutocomplete (input: string, lang: string = 'ja', optionConfig?: ApiConfig) {\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const config = {\n ...useAPIConfig,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n input,\n // 地点候補ã®è¨€èªžæŒ‡å®šã€‚\n language: lang,\n // 日本ã®ãƒ‡ãƒ¼ã‚¿ã®ã¿å–å¾—ã™ã‚‹ã‚ˆã†æŒ‡å®šã€‚\n components: 'country:jp',\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`/places/autocomplete`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ã€‚\n const placeAutocomplete: PlaceAutocomplete = response.data;\n // å–å¾—ã—ãŸæ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹å€™è£œã®å½¢å¼ã«å¤‰æ›ã™ã‚‹ã€‚\n const candidates = placeAutocomplete.predictions.map((p) => {\n const name = p.structured_formatting ? p.structured_formatting.main_text : p.description;\n return new Candidate(name, p.place_id, 'place', undefined, undefined, formatAddress(p.description));\n })\n return candidates;\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * 地点詳細(/places/details)をå–å¾—ã™ã‚‹ã€‚\n * (AutoCompleteã§å–å¾—ã—ãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«åˆ©ç”¨ã™ã‚‹ã€‚)\n * @param place_id ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã®ID。(AutoCompleteã§å–å¾—ã—ãŸplace_id)\n * @param optionConfig\n */\nexport async function getPlaceDetail (place_id: string, optionConfig?: ApiConfig) {\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const config = {\n ...useAPIConfig,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n place_id,\n fields: 'geometry,address_components,type,name,formatted_address',\n // テã‚スト部分ã¯ãƒã‚°è¨˜éŒ²æ™‚ã®ã¿åˆ©ç”¨ã™ã‚‹ãŸã‚ã€æ—¥æœ¬èªžã§å›ºå®šã¨ã™ã‚‹ã€‚(2020/07/15ç¾åœ¨ã€‚)\n language: 'ja',\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`/places/details`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n // Place Detailsã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹éƒ¨åˆ†ã€‚\n const data: PlaceDetail = response.data;\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®è©³ç´°ãƒ‡ãƒ¼ã‚¿ã‚’インスタンス化ã—ã¦è¿”ã™ã€‚\n return new Place(data.result);\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * ä½ç½®æƒ…å ±ã‚ˆã‚Šåœ°ç‚¹è©³ç´°æƒ…å ±ã‚’å–å¾—ã™ã‚‹ï¼ˆ/places/geocode/)\n */\nexport async function getGeocode(latlng: string, lang: Lang = Lang.ja, optionConfig?: ApiConfig) {\n // 使用ã™ã‚‹API\n const useAPIConfig: ApiConfig = getUseAPI();\n const config = {\n ...useAPIConfig,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n latlng,\n language: lang\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`/places/geocode`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®è©³ç´°ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ã€‚\n return response.data.results.map((x: Result)=>{\n return new Place(x);\n });\n } catch (err) {\n throw err;\n }\n}\n","import axios from 'axios';\nimport { PlaceAutocomplete } from './PlaceAutocomplete';\nimport { PlaceDetail, Result } from './PlaceDetail';\nimport { Candidate } from './../../components/search/Candidate';\nimport Place from './Place';\nimport { Lang } from '../../states/query';\nimport { formatAddress } from '../public/googleApi';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\n/**\n * Google Places APIã‹ã‚‰å€™è£œã‚’å–å¾—ã™ã‚‹å‡¦ç†ã€‚\n * @param input テã‚ストボックスã§å…¥åŠ›ã—ãŸå€¤ã€‚\n * @param lang 言語指定(ja/en)\n * @param optionConfig\n */\nexport async function getClosedAutocomplete (input: string, lang: string = 'ja', optionConfig?: ApiConfig) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n // 入力文å—列ã«è£œæ£ã‚’ã‹ã‘ã‚‹\n input,\n // 地点候補ã®è¨€èªžæŒ‡å®šã€‚\n language: lang,\n // 日本ã®ãƒ‡ãƒ¼ã‚¿ã®ã¿å–å¾—ã™ã‚‹ã‚ˆã†æŒ‡å®šã€‚\n components: 'country:jp',\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`google/places/autocomplete`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ã€‚\n const placeAutocomplete: PlaceAutocomplete = response.data;\n // å–å¾—ã—ãŸæ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’ç”»é¢ä¸Šã«è¡¨ç¤ºã™ã‚‹å€™è£œã®å½¢å¼ã«å¤‰æ›ã™ã‚‹ã€‚\n const candidates = placeAutocomplete.predictions.map((p) => {\n const name = p.structured_formatting ? p.structured_formatting.main_text : p.description;\n return new Candidate(name, p.place_id, 'place', undefined, undefined, formatAddress(p.description))\n })\n return candidates;\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * 地点詳細(/places/detail)をå–å¾—ã™ã‚‹ã€‚\n * (AutoCompleteã§å–å¾—ã—ãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã‚’å–å¾—ã™ã‚‹ãŸã‚ã«åˆ©ç”¨ã™ã‚‹ã€‚)\n * @param place_id ユーザーãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã®ID。(AutoCompleteã§å–å¾—ã—ãŸplace_id)\n * @param optionConfig\n */\nexport async function getClosedPlaceDetail(place_id: string, optionConfig?: ApiConfig, lang: Lang = Lang.ja) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n place_id,\n fields: 'geometry,address_components,type,name,formatted_address',\n // テã‚スト部分ã¯ãƒã‚°è¨˜éŒ²æ™‚ã®ã¿åˆ©ç”¨ã™ã‚‹ãŸã‚ã€æ—¥æœ¬èªžã§å›ºå®šã¨ã™ã‚‹ã€‚(2020/07/15ç¾åœ¨ã€‚)\n // タクシー仮予約画é¢å¤šè¨€èªžãŸå¯¾å¿œã®ãŸã‚ã€è©²å½“箇所ã¯æŒ‡å®šã®è¨€èªžã§å–å¾—ã§ãるよã†ã«ã™ã‚‹ï¼ˆ2022/02/22ç¾åœ¨ï¼‰\n language: lang\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`google/places/detail`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n // Place Detailsã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹éƒ¨åˆ†ã€‚\n const data: PlaceDetail = response.data;\n if(!response.data.result) {\n throw new Error(response.data.error_message)\n }\n // Response.statusçµæžœãŒç•°å¸¸ã®å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã‚’è¿”ã™\n if(data.status !== 'OK') {\n throw new Error(JSON.stringify(data));\n }\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®è©³ç´°ãƒ‡ãƒ¼ã‚¿ã‚’インスタンス化ã—ã¦è¿”ã™ã€‚\n return new Place(data.result);\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * ä½ç½®æƒ…å ±ã‚ˆã‚Šåœ°ç‚¹è©³ç´°æƒ…å ±ã‚’å–å¾—ã™ã‚‹ï¼ˆ/places/geocode/)\n */\nexport async function getClosedGeocode(latlng: string, lang: Lang = Lang.ja, optionConfig?: ApiConfig) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n const instance = axios.create(config);\n const params = {\n latlng,\n language: lang\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2020/02/20ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`google/places/geocode`, { params });\n\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // æ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã®è©³ç´°ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ã€‚\n return response.data.results.map((x: Result)=>{\n return new Place(x);\n });\n } catch (err) {\n throw err;\n }\n}\n","import luxon from \"luxon\";\nconst { DateTime } = require('luxon')\n\n/**\n * ISO8601å½¢å¼æ–‡å—列よりDateTimeåž‹ã«å¤‰æ›ã™ã‚‹\n * @param iso8601 ISO8601å½¢å¼æ™‚刻表示文å—列\n * @return luxon.DateTimeåž‹ã®æ™‚åˆ»æƒ…å ±\n */\nexport const toLuxonDateTime = (iso8601: string): luxon.DateTime => {\n return DateTime.fromISO(iso8601, { zone: 'Asia/Tokyo', setZone: true });\n}\n\n/**\n * UNIXTIMEよりDateTimeåž‹ã«å¤‰æ›ã™ã‚‹\n * @param unixtime UNIXTIMEã®æ™‚åˆ»æƒ…å ±\n * @return luxon.DateTimeåž‹ã®æ™‚åˆ»æƒ…å ±\n */\nexport const toLuxonDateTimeFromUnixTime = (unixtime: number): luxon.DateTime => {\n return DateTime.fromSeconds(unixtime, { zone: 'Asia/Tokyo' });\n}\n\n/**\n * Date型よりDateTimeåž‹ã«å¤‰æ›ã™ã‚‹\n * @param date JavaScriptデフォルトã®Dateåž‹\n * @returns luxon.DateTimeåž‹ã®æ™‚åˆ»æƒ…å ±\n */\nexport const toLuxonDateTimeFronJSDate = (date: Date): luxon.DateTime => {\n return DateTime.fromJSDate(date, { zone: 'Asia/Tokyo' });\n}\n\n/**\n * ç¾åœ¨æ™‚刻をå–å¾—ã™ã‚‹\n * @return luxon.DateTimeåž‹ã®ç¾åœ¨æ™‚åˆ»æƒ…å ±\n */\nexport const getNowLuxonDateTime = (): luxon.DateTime => {\n return DateTime.now()\n .set({ second: 0, millisecond: 0 })\n .setZone('Asia/Tokyo');\n}\n\n/**\n * yyyyMMddHHmmå½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列をluxon.DateTimeåž‹ã«ãƒ‘ースã™ã‚‹ã€‚\n * @param dateStr yyyyMMddHHmmå½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列\n * @returns luxon.DateTimeåž‹ã®æ™‚åˆ»æƒ…å ±\n */\nexport const parseFromyyyyMMddHHmm = (dateStr: string): luxon.DateTime => {\n return DateTime.fromFormat(dateStr, 'yyyyMMddHHmm', { zone: 'Asia/Tokyo' })\n}\n\n/**\n * 指定ã®æ—¥ä»˜ã®0時0分ã«è¨å®šã™ã‚‹\n * @param date ä»»æ„ã®æ™‚åˆ»æƒ…å ±\n * @returns 0時0分0秒ã«è¨å®šã—ãŸæ™‚åˆ»æƒ…å ±\n */\nexport const setBaseDay = (date: luxon.DateTime): luxon.DateTime => {\n return date.set({\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n })\n}\n","import { parse } from \"date-fns\";\nimport { getNowLuxonDateTime, toLuxonDateTimeFromUnixTime } from \"./luxonUtil\";\nimport { isNumber } from \"./regExpUtils\";\n\nclass URLParams {\n searchParams: URLSearchParams;\n\n constructor(path: string) {\n this.searchParams = new URLSearchParams(path);\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n * @param type å–å¾—ã™ã‚‹ãƒ‘ラメータã®åž‹\n */\n getParam(key: string, type: string) {\n switch(type) {\n case 'string':\n return this.getStringParam(key);\n case 'number':\n return this.getNumberParam(key);\n case 'boolean':\n return this.getBooleanParam(key);\n case 'date':\n return this.getDateParam(key);\n case 'unixtime':\n return this.getDateFromUnixTimeMilisecondsParam(key);\n default:\n return null;\n }\n }\n\n checkParams(keys: string[]): boolean {\n const result = keys.find((k)=>{\n return this.searchParams.get(k) === null;\n })\n return result === undefined;\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n */\n getStringParam(key: string): string | null {\n // nullã¨ãªã‚‹å ´åˆã¯ç©ºæ–‡å—ã‚’è¿”ã™ã€‚\n return (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '';\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ã‚’数値型ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n */\n getNumberParam(key: string): number {\n // nullã¨ãªã‚‹å ´åˆã¯0ã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '0';\n return Number.parseInt((param === null) ? '0' : param);\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ã‚’floatåž‹ã®æµ®å‹•å°æ•°ç‚¹æ•°å€¤åž‹ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n */\n getFloatParam(key: string): number {\n // nullã¨ãªã‚‹å ´åˆã¯0ã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '0';\n return Number((param === null) ? '0' : param);\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ã‚’Booleanåž‹ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n */\n getBooleanParam(key: string): boolean {\n // nullã¨ãªã‚‹å ´åˆã¯falseã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '';\n return param === 'true' ? true : false;\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ï¼ˆyyyyMMddå½¢å¼ã®å€¤ï¼‰ã‚’Dateåž‹ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n * @param defaultDate パラメーターを解æžã§ããªã‹ã£ãŸæ™‚ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ—¥ä»˜\n */\n getDateParam(key: string, defaultDate: Date = new Date()): Date {\n // 空文å—ã‚„nullã¨ãªã‚‹å ´åˆã¯ç¾åœ¨æ—¥æ™‚ã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '';\n return (param && param !== null) ? parse(param, 'yyyyMMdd', defaultDate) : defaultDate;\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ï¼ˆUNIXTIME Miliseconds)をDateåž‹ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n * @param defaultDate パラメーターを解æžã§ããªã‹ã£ãŸæ™‚ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ—¥ä»˜\n */\n getDateFromUnixTimeMilisecondsParam(key: string, defaultDate: Date = new Date()): Date {\n // 空文å—ã‚„nullã¨ãªã‚‹å ´åˆã¯ç¾åœ¨æ—¥æ™‚ã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : '';\n return (param && param !== null) ? new Date(Number(param)) : defaultDate;\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ï¼ˆUNIXTIME Miliseconds)を Luxon.DateTime åž‹ã¨ã—ã¦å–å¾—ã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n * @param defaultDate パラメーターを解æžã§ããªã‹ã£ãŸæ™‚ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ—¥ä»˜\n */\n getLuxonDateTimeUnixTimeMilisecondsParam(key: string, defaultDate: luxon.DateTime = getNowLuxonDateTime()): luxon.DateTime {\n // 空文å—ã‚„nullã¨ãªã‚‹å ´åˆã¯ç¾åœ¨æ—¥æ™‚ã‚’è¿”ã™ã€‚\n const param = (this.searchParams.get(key) !== null) ? this.searchParams.get(key) : null;\n // UnixTime Milisecondsã§æ¥ã‚‹ã®ã§ã€UnixTimeã«å¤‰æ›ã™ã‚‹\n return (param && param !== null && isNumber(param)) ? toLuxonDateTimeFromUnixTime(Number(param)/1000) : defaultDate;\n }\n\n /**\n * 引数ã§æŒ‡å®šã•ã‚ŒãŸã‚ーã«å¯¾å¿œã™ã‚‹å€¤ãŒå˜åœ¨ã™ã‚‹ã‹ã‚’確èªã™ã‚‹ã€‚\n * @param key パラメーターã®ã‚ー文å—列。\n */\n hasParam(key: string): boolean {\n return this.searchParams.has(key);\n }\n}\n\nexport default URLParams;","/**\n * å‚ç…§ã™ã‚‹éš›ãªã©ã«ã‚ãŸã£ã¦ä½æ‰€æ–‡å—列ã®å¤‰æ›ã‚’ã™ã‚‹ã€‚\n * @param value ä½æ‰€ãªã©å¤‰æ›ã‚’ã‹ã‘ãŸã„æ–‡å—列。\n */\n export function convertLetter(value: string) {\n // 大ãã„「ケã€ã‚’「ヶã€ã«å¤‰æ›´ã™ã‚‹ã€‚\n return value.replace(/ケ/g, 'ヶ');\n}\n","import axios from \"axios\";\nimport { setTaxiEndpoint } from \"../GetReservation\";\nimport { GetDirectionAndFareParams, GetDirectionAndFareSamplesParams } from \"./models/getFareSamplesParams\";\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 60000,\n};\n\n/**\n * å¿…è¦ãªãƒ‘ラメーターを満ãŸã—ã¦ã„ã‚‹ã‹\n * @param params ãƒã‚§ãƒƒã‚¯ãƒ‘ラメーター\n * @param isTemporaryReservation 仮予約画é¢ã‹\n */\nconst checkParams = (params: GetDirectionAndFareParams | GetDirectionAndFareSamplesParams) => {\n // to空港ã®å ´åˆã€å‡ºç™ºåœ°ç‚¹ãƒ»å‡ºç™ºåœ°ç‚¹åº§æ¨™ãŒãªã„ã¨ã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹\n if(!(params.pointInfo?.latLng && params.pointInfo?.label && params.pointInfo?.latLngForPriceCalc && params.pointInfo?.labelForPriceCalc)) {\n throw new Error('åœ°ç‚¹æƒ…å ±ã®è¦ç´ ãŒè¶³ã‚Šã¦ã„ã¾ã›ã‚“')\n }\n}\n\n/** タクシー経路料金算出APIを呼ã³å‡ºã™ */\nexport async function getDirectionAndFareAPI(params: GetDirectionAndFareParams) {\n // å¿…è¦ãªãƒ‘ラメーターãŒè¶³ã‚Šã¦ã„ã‚‹ã‹ãƒã‚§ãƒƒã‚¯\n checkParams(params)\n const path = setTaxiEndpoint('get-fare-info');\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n // 仮予約APIã«POSTメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n const response = await instance.post(path, params);\n // ResponseçµæžœãŒæ£å¸¸ãªã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™\n // è·é›¢ãƒ©ãƒ™ãƒ«ã¨æ–™é‡‘ラベルãŒå–ã‚Œãªã„時ã«ã‚‚エラーを返ã™\n if(response.status === 200 && response.data && response.data.distanceLabel && response.data.durationLabel) {\n return response.data;\n }\n else {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€debugレベルã§ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力ã™ã‚‹ã®ã¿ã¨ã™ã‚‹ã€‚\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(response);\n }\n return null;\n }\n}\n\n/** 汎用タクシー経路料金算出APIを呼ã³å‡ºã™ */\nexport async function getDirectionAndFareSamplesAPI(params: GetDirectionAndFareSamplesParams) {\n // å¿…è¦ãªãƒ‘ラメーターãŒè¶³ã‚Šã¦ã„ã‚‹ã‹ãƒã‚§ãƒƒã‚¯\n checkParams(params)\n const path = setTaxiEndpoint('get-fare-samples-info');\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n /** axiosã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã€‚ */\n const instance = axios.create(config);\n // 仮予約APIã«POSTメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n const response = await instance.post(path, params);\n // ResponseçµæžœãŒæ£å¸¸ãªã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã™\n // è·é›¢ãƒ©ãƒ™ãƒ«ã¨æ–™é‡‘ラベルãŒå–ã‚Œãªã„時ã«ã‚‚エラーを返ã™\n if(response.status === 200 && response.data) {\n return response.data;\n }\n else {\n // エラーãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€debugレベルã§ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力ã™ã‚‹ã®ã¿ã¨ã™ã‚‹ã€‚\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(response);\n }\n return null;\n }\n}","import { TaxiCompanyList } from \"../../GetDirectionAndFare/models/getFareSamplesParams\";\n\nexport type TaxiCompanyConfigurations = {\n [key in TaxiCompanyList]: TaxiCompanyConfiguration;\n};\n\nexport interface SCClickSection {\n asw: string,\n airportAccess: string,\n chatan: string,\n fukushima: string\n}\n\n\nexport interface TaxiCompanyConfiguration {\n name: string;\n companyName: string;\n displayName: string;\n operatingCompanyName: string;\n temporaryDisplayName: string;\n hasPAYG_Tariff: boolean;\n supportAirports: string[];\n defaultAirportCode: string;\n scClick: {\n result: string,\n temporaryReservation: SCClickSection,\n reservation: SCClickSection\n };\n cyName: {\n result: string,\n logo: string\n };\n logo: {\n alt: string\n },\n contact: {\n isLinkMailAddress: string,\n messages: string[]\n }\n limit: {\n errorMessage: string,\n limitDays: number,\n limitHours: number\n }\n tariffType: {\n [key: string]: string\n };\n supportAMC: string[],\n supportAMCPeriod: {\n start: string,\n end: string\n },\n supportPlacardName: boolean,\n ui: {\n // 対応è·ç‰©\n bags: Element[],\n // é¸æŠžã§ãる車種\n carTypes: Element[],\n // 支払ã„方法\n paymentMethod: Element[],\n specifiedMethod: {\n [key: string]: {\n component: string;\n airport?: {\n [key: string]: boolean;\n }\n }\n }\n }\n whenTooLongDistance?: {\n bookable: boolean,\n nextAction: string\n },\n whenUnsupportedFixedFareArea: {\n bookable: boolean,\n nextAction: string\n };\n defaultCenter: {\n [key: string]: {\n municipality: string,\n position: {\n lat: number,\n lng: number\n }\n }\n },\n timePattern: TaxiTimePattern,\n supportDirection: string,\n defaultFlightPattern: {\n pickup: string[],\n dropOff: string[]\n }\n}\n\nexport interface Element {\n maxQuantity?: number;\n id: string,\n label: string\n}\n\n/** タクシー日付é¸æŠžã‚¿ã‚¤ãƒ— */\nexport enum TaxiTimePattern {\n /** 通常通り日付をé¸æŠžã§ãã‚‹ */\n normal = 'normal',\n /** é¸æŠžè‚¢ã®ä¸ã‹ã‚‰æ™‚刻をé¸æŠžã™ã‚‹ */\n pulldown = 'pulldown'\n}\n","import { TaxiCompanyList } from \"../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams\";\nimport { Lang } from \"../../../../states/query\";\nimport { getNowLuxonDateTime, setBaseDay } from \"../../../../utils/luxonUtil\";\n\nexport class CommonTaxiUtils {\n limit_days: number;\n limit_hours: number;\n company: TaxiCompanyList;\n targetAirport: string;\n constructor(limit_days: number, limit_hours: number, company: TaxiCompanyList, targetAirport: string) {\n this.limit_days = limit_days;\n this.limit_hours = limit_hours;\n this.company = company;\n this.targetAirport = targetAirport;\n }\n\n /**\n * 仮予約画é¢ã§äºˆç´„å—付期間外をé¸ã‚“ã éš›ã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸\n * @param originErrorMessage ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‹ã‚‰å–å¾—ã—ãŸè¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸\n */\n getErrorMessage(originErrorMessage: string, lang: Lang): string {\n if(this.isLimoTaxiTYO()) {\n if(lang === Lang.ja) {\n return '乗車日時ã¯2日後以é™ã‚’指定ã—ã¦ãã ã•ã„。'\n }\n else {\n return 'Please specify a ride date and time from two days’ time on.';\n }\n }\n else {\n return originErrorMessage;\n }\n }\n\n /**\n * limoTaxiã‹ã¤HNDã‹NRTã®æ™‚ã«ã¯äºˆç´„å—ä»˜ç· åˆ‡ã‚’2æ—¥å‰ã«è¨å®šã™ã‚‹\n * ã“ã®ä¾‹å¤–è¨å®šã‚’é©ç”¨ã™ã‚‹ã‹åˆ¤å®šã™ã‚‹\n * @param targetAirport æ乗対象ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n */\n isLimoTaxiTYO() {\n const isLimoTaxi = (this.company === TaxiCompanyList.limoTaxi);\n const isTYO = ['HND', 'NRT', 'TYO'].includes(this.targetAirport);\n return isLimoTaxi && isTYO;\n }\n\n /**\n * ç¾åœ¨æ™‚刻ãŒã‚¤ãƒ¼ã‚¹ã‚¿ãƒ³ã‚¿ã‚¯ã‚·ãƒ¼ãŒäºˆç´„å¯èƒ½æœŸé™å†…ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * TODO: isAvalableã«çµ±åˆã™ã‚‹\n * @param ridingDate 乗車日\n */\n isAvalableEastern(ridingDate: luxon.DateTime): boolean {\n // ãã®ã¾ã¾ differenceInDays を使ã†ã¨ 23:59㨠00:01 ã®å·®ã¯0ã«ãªã‚‹ã®ã§ã€åˆ†ã¨ç§’ã¯0ã«ä¸€æ—¦æƒãˆã‚‹\n const rideingDateBase = setBaseDay(ridingDate);\n const nowDateBase = setBaseDay(getNowLuxonDateTime());\n // limotaxiã®å ´åˆã‹ã¤ã€ç¾½ç”°ãƒ»æˆç”°ã®å ´åˆã«ã¯2æ—¥å‰ã¾ã§ã«äºˆç´„ã™ã‚Œã°ã‚ˆã„\n const limitDays = this.isLimoTaxiTYO() ? 1: this.limit_days;\n /** ä¸æ£ãªä¹—車日時ã§ã‚る(ç¾åœ¨æ—¥æ™‚ã®X日後以å‰ï¼‰ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n return rideingDateBase.diff(nowDateBase, 'days').days > limitDays;\n }\n\n /**\n * ç¾åœ¨æ™‚刻ãŒã‚¿ã‚¯ã‚·ãƒ¼ãŒäºˆç´„å¯èƒ½æœŸé™å†…ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param flightDate æä¹—æ—¥ã®æ—¥æ™‚。\n * @param targetAirport æ乗対象ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n */\n isAvalable(flightDate: luxon.DateTime): boolean {\n /** イースタンã ã‘ãƒã‚¸ãƒƒã‚¯ãŒé•ã†ã®ã§ã“ã¡ã‚‰ã«ã¦å¯¾å¿œ */\n if(this.company === TaxiCompanyList.eastern || this.company === TaxiCompanyList.limoTaxi) {\n return this.isAvalableEastern(flightDate);\n }\n /** タクシーã®äºˆç´„期é™ã®æ—¥ä»˜ã€‚ */\n const deadlineDate = setBaseDay(\n flightDate.minus({\n day: this.limit_days\n })\n ).set({\n hour: this.limit_hours\n })\n // æä¹—æ—¥ã®Xæ—¥å‰ã®XX時よりå‰ã§ã‚ã‚‹å ´åˆã®ã¿ã€äºˆç´„å¯èƒ½ã¨ã™ã‚‹ã€‚\n return getNowLuxonDateTime() < deadlineDate;\n }\n\n /**\n * ç¾åœ¨æ™‚刻ãŒã‚¿ã‚¯ã‚·ãƒ¼ã‚’予約ã§ããªã„日付ã®å ´åˆã€äºˆç´„ã§ãる代替ã®æ—¥ä»˜ã‚’è¿”ã™\n * @param flightDate æä¹—æ—¥ã®æ—¥æ™‚。\n * @param nowDate 端末ã®ç¾åœ¨æ™‚刻\n * @return 代替ã®æ—¥ä»˜\n */\n getAvailableDate(flightDate: luxon.DateTime): luxon.DateTime {\n /** イースタンã ã‘ãƒã‚¸ãƒƒã‚¯ãŒé•ã†ã®ã§ã“ã¡ã‚‰ã«ã¦å¯¾å¿œ */\n if(this.company === TaxiCompanyList.eastern || this.company === TaxiCompanyList.limoTaxi) {\n if(this.company === TaxiCompanyList.eastern || this.isLimoTaxiTYO()) {\n return getNowLuxonDateTime().plus({\n day: 2\n });\n }\n else {\n return getNowLuxonDateTime().plus({\n day: 4\n })\n }\n }\n if(this.isAvalable(flightDate)) {\n return flightDate;\n }\n else {\n if(getNowLuxonDateTime().hour >= this.limit_hours) {\n return getNowLuxonDateTime().plus({\n days: (this.limit_days + 1)\n })\n }\n else {\n return getNowLuxonDateTime().plus({\n days: this.limit_days\n })\n }\n }\n }\n}\n","/* eslint react-hooks/exhaustive-deps: 0 */\n\nimport React from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport Coordinates from '../Map/Coordinates';\nimport { isEmail } from '../../../../../../utils/regExpUtils';\nimport PickupPattern from './PickupPattern';\nimport { TemporaryReservationParams } from '../../../../../../services/taxi/TemporaryReservation/TemporaryReservationParams';\nimport luxon from \"luxon\";\nimport { getRecaptchaToken } from '../../../../../../services/google/GoogleReCaptcha';\nimport { submitTemporaryReservation } from '../../../../../../services/taxi/TemporaryReservation';\nimport { getClosedGeocode } from '../../../../../../services/google/api';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { switchisLoading, switchUseV2, updateErrorMessage, updateTaxiCompanyConfigurations } from '../../../../../../actions/generalAction';\nimport { isValidFLight } from '../../common/RegExp';\nimport { Location } from '../../../../../../../src/services/google/PlaceDetail';\n\nimport scClick from '../../../../../common/ScClick';\nimport URLParams from '../../../../../../utils/getParams';\nimport Place from '../../../../../../services/google/Place';\nimport { convertLetter } from '../../common/Address';\nimport Cookies from 'js-cookie';\nimport { SelectPoint } from '../../../MiyakoTaxi/data/SeaGaiaNearbyFacilities';\nimport { getDirectionAndFareAPI} from '../../../../../../services/taxi/GetDirectionAndFare';\nimport { AlertLabel, convertStringToTaxiCompany, FlightType, GetDirectionAndFareOperation, GetDirectionAndFareParams, GetDirectionAndFareResponse, TaxiCompanyList } from '../../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { ComponentKey, getTaxiCompanyConfiguration, GetTaxiCompanyConfParams } from '../../../../../../services/taxi/GetTaxiMetaInfo';\nimport { TaxiCompanyConfiguration, TaxiCompanyConfigurations, TaxiTimePattern } from '../../../../../../services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf';\nimport Environment from '../../../../../../utils/environment';\nimport { CommonTaxiUtils } from '../../../CommonTaxi/CommonTaxiDateUtils';\nimport { useTranslation } from 'react-i18next';\nimport { changeLang, Lang } from '../../../../../../states/query';\nimport { changeLanguage } from '../../../../../../utils/lang';\nimport { getNowLuxonDateTime } from '../../../../../../utils/luxonUtil';\nimport { State } from '../../../../../../reducers';\nimport * as holiday from '@holiday-jp/holiday_jp';\n\nexport interface BookingTaxiQueryParams {\n // 出発案内ã‹\n isDeparture: boolean,\n // 発ç€åœ°ç‚¹å\n pointName: string,\n // 発ç€åœ°ç‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹\n pointAddress: string,\n // 発ç€åœ°ç‚¹ç·¯åº¦\n pointLat: number,\n // 発ç€åœ°ç‚¹çµŒåº¦\n pointLng: number,\n // 発ç€ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n airportCode: string,\n // æ乗便ナンãƒãƒ¼\n flightNumber: string,\n // フライトã®ç™ºç€æ™‚刻\n flightDate: luxon.DateTime,\n // タクシー乗車時刻\n rideDate: luxon.DateTime,\n // 国内線ã‹\n isDomestic: boolean,\n // ターミナルå\n terminal: string,\n // æ乗・到ç€ã‚²ãƒ¼ãƒˆå\n gate: string,\n // 連æºã‚¿ã‚¯ã‚·ãƒ¼\n company: TaxiCompanyList,\n // 連æºãƒ‘ラメーター(宮交タクシーã®ã‚·ãƒ¼ã‚¬ã‚¤ã‚¢é€£æºã§ç”¨ã„る)\n mode: string,\n // é·ç§»å…ƒãƒªãƒ•ã‚¡ãƒ©ãƒ¼æƒ…å ±\n referrer: string,\n // è¨€èªžæƒ…å ±\n lang: string,\n // デãƒãƒƒã‚°ç”¨éš ã—パラメーター\n // 実際ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‰ãªã„ã‹\n dryRun?: string,\n // 発ç€åœ°ç‚¹æ—¥æœ¬èªžã‚¢ãƒ‰ãƒ¬ã‚¹\n pointJPAddress: string,\n // 発ç€åœ°ç‚¹æ—¥æœ¬èªžåœ°ç‚¹å\n pointJPName: string,\n // googleDirectionAPIã«æŠ•ã’る出発時刻(フライト出発時刻ã«å„ªè¶Šã™ã‚‹ï¼‰\n googleAPIDepDate: luxon.DateTime\n}\n\nexport enum AirportTransferTaxiMapMode {\n // マップé¸æŠžãƒ¢ãƒ¼ãƒ‰\n map = 'map',\n // é¸æŠžãƒ¢ãƒ¼ãƒ‰\n select = 'select'\n}\n\nenum REFERRER_TYPE {\n /** ASWã‹ã‚‰ä»®äºˆç´„ç”»é¢ã«é·ç§» */\n asw = 'asw',\n /** 空港アクセスナビよりé·ç§» */\n airportAccess = 'airportAccess',\n /** 北谷HPよりé·ç§» */\n chatan = 'chatan',\n /** ç¦å³¶ç©ºæ¸¯ã‚µã‚¤ãƒˆã‚ˆã‚Šé·ç§» */\n fukushima = 'fukushima'\n}\n\n/**\n * リファラータイプを返å´ã™ã‚‹\n * @param referrer クエリã‹ã‚‰å—ã‘å–ã£ãŸãƒªãƒ•ã‚¡ãƒ©ãƒ¼å€¤\n * @param taxiCompany å‚ç…§ã—ã¦ã„るタクシー事æ¥è€…\n * @returns\n */\nexport const getSCCkickType = (referrer?: string, taxiCompany?: TaxiCompanyList) => {\n // çµæžœç”»é¢ã‹ã‚‰ã®çµŒç”±ã§æ¥ãŸã‹åˆ¤å®š\n // airport_access: 空港アクセスナビ・旅CUBEã‹ã‚‰æ¥ãŸã¨åˆ¤å®š\n // chatan: タクシー会社ãŒé‚£è¦‡ãƒã‚¤ãƒ¤ãƒ¼ã®å ´åˆã®ã¿ã€åŒ—è°·MaaSサイトã‹ã‚‰æ¥ãŸã¨åˆ¤å®šã€‚\n // ãれ以外: ASWã‹ã‚‰æ¥ãŸã¨åˆ¤å®šï¼ˆå®Ÿéš›ã«ã¯ referrer=asw ã§é£›ã‚“ã§ãる)\n switch(referrer) {\n case 'airport_access':\n case 'tabicube':\n return REFERRER_TYPE.airportAccess;\n case 'chatan':\n if(taxiCompany === undefined) {\n return REFERRER_TYPE.chatan;\n }\n else if(taxiCompany === TaxiCompanyList.nahahire) {\n return REFERRER_TYPE.chatan;\n }\n else {\n return REFERRER_TYPE.asw;\n }\n case 'fukushima':\n return REFERRER_TYPE.fukushima;\n default:\n return REFERRER_TYPE.asw\n }\n}\n\n/** 未é¸æŠžçŠ¶æ…‹ã‚’è˜åˆ¥ã™ã‚‹æ–‡å—列 */\nexport const UNSELECTED_RIDING_DATE_STRING = '----------';\n\n/**\n * タクシー予約画é¢ã®æƒ…å ±ã«é–¢ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ フック。\n * @returns flightDate - 指定ã•ã‚ŒãŸãƒ•ãƒ©ã‚¤ãƒˆæ—¥æ™‚。\n * @returns setFlightDate - フライト日時日時を更新ã™ã‚‹é–¢æ•°ã€‚\n * @returns email - メールアドレス。\n * @returns setEmail - メールアドレスを更新ã™ã‚‹é–¢æ•°ã€‚\n * @returns isEmptyEmail - メールアドレス欄ãŒç©ºã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @returns isInvalidEmail - 入力ã•ã‚ŒãŸæ–‡å—列ãŒãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å½¢å¼ã«ãªã£ã¦ã„ãªã„ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n */\nexport function useForm() {\n const history = useHistory();\n const dispatch = useDispatch();\n const location = useLocation();\n const { t, i18n } = useTranslation();\n const useRecaptchaV2 = useSelector((state: State) => state.general.useV2);\n /** 乗車日時ã®åˆæœŸå€¤ã€‚(ç¾åœ¨æ—¥æ™‚より5日後をè¨å®šã™ã‚‹ã€‚) */\n const defaultDate = getNowLuxonDateTime().plus({ hours: 120 });\n\n const [ airportCode, setAirportCode ] = React.useState('HND');\n const [ center, setCenter ] = React.useState(Coordinates.TOKYO_STATION);\n const [ markerPoint, setMarkerPoint ] = React.useState(Coordinates.TOKYO_STATION);\n const [ pointName, setPointName ] = React.useState('');\n // 料金å–å¾—ç”¨æ—¥æœ¬èªžåœ°ç‚¹æƒ…å ±\n const [ placeJP, setPlaceJP ] = React.useState<Place|null>(null);\n const [ flight, setFlight ] = React.useState('');\n const [ flightDate, setFlightDate ] = React.useState<luxon.DateTime>(defaultDate);\n const [ ridingDate, setRidingDate ] = React.useState<luxon.DateTime>(defaultDate);\n const [ selectFlightData, setSelectFlightData ] = React.useState(UNSELECTED_RIDING_DATE_STRING);\n const [ isSubmitted, setSubmitted ] = React.useState(false);\n\n /** ä½æ‰€ãŒç©ºã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isEmptyAddress, setEmptyAddress ] = React.useState(false);\n\n const [ email, setEmail ] = React.useState('');\n /** メールアドレス欄ãŒç©ºã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isEmptyEmail, setEmptyEmail ] = React.useState(false);\n /** メールアドレスã®å½¢å¼ã«ãªã£ã¦ã„ãªã„æ–‡å—列ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isInvalidEmail, setInvalidEmail ] = React.useState(false);\n /** 利用ã§ããªã„メールアドレスã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isUnavalableEmail, setUnavalableEmail] = React.useState(false);\n\n /** 便åãŒç©ºã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isEmptyFlight, setEmptyFlight ] = React.useState(false);\n /** 便åã®å½¢å¼ã«ãªã£ã¦ã„ãªã„æ–‡å—列ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isInvalidFlight, setInvalidFlight ] = React.useState(false);\n /** ユーザーã«å†è©¦è¡Œã—ã¦ã»ã—ã„(ï¼ã‚‚ã†ä¸€åº¦äºˆç´„ボタンを押ã—ã¦ã‚‚らã„ãŸã„ï¼‰å ´åˆã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isRequiredRetry, setRequiredRetry] = React.useState(false);\n /** 予約処ç†ã«å¤±æ•—ã—ãŸã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isFailed, setFailed] = React.useState(false);\n /** 予約期é™ã‚’éŽãŽã¦ã„ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isOverDeadline, setOverdeadline ] = React.useState(false);\n /** 日付ã«é–¢ã™ã‚‹ã‚¢ãƒ©ãƒ¼ãƒˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’管ç†ã™ã‚‹ */\n const [ invalidFlightErrorMessage, setInvalidFlightErrorMessage ] = React.useState(\"\");\n /** ã”利用便日時ã«é–¢ã™ã‚‹ã‚¢ãƒ©ãƒ¼ãƒˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’管ç†ã™ã‚‹ */\n const [ invalidFlightDateErrorMessage, setInvalidFlightDateErrorMessage ] = React.useState(\"\");\n /** reCaptcha v2ã§ã®å†æ¤œè¨¼ã‚’促ã™ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ needRetryRecaptcha, switchNeedRetryRecaptcha ] = React.useState(false);\n /** é€è¿Žã‚¿ã‚¤ãƒ—ãŒè¨±å¯ã•ã‚ŒãŸãƒ‘ターンã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n const [ disallowSupportDirection, switchDisallowSupportDirection ] = React.useState(false);\n /** é€è¿Žã‚¿ã‚¤ãƒ—ãŒä¾¿é¸æŠžã®å ´åˆã€ä¾¿é¸æŠžãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n const [ invalidFlightPattern, switchInvalidFlightPattern ] = React.useState(false);\n\n // TODO: ã‚„ã£ã¦ã‚‹ã“ã¨ãŒ pickupPattern ã¨ã‹ã¶ã‚‹ã®ã§å¾Œã€…削除ã™ã‚‹\n const [ toAirport, setToAirport ] = React.useState(true);\n const [ pickupPattern, setPickupPattern ] = React.useState(PickupPattern.TO_AIRPORT);\n\n /** 市区町æ‘ã¾ã§ã®ä½æ‰€ã€‚ */\n const [municipality, setMunicipality] = React.useState('æ±äº¬éƒ½åƒä»£ç”°åŒº');\n /** é€è¿Žåœ°ç‚¹ã®åœ°ç‚¹æƒ…å ± */\n const [place, setPlace] = React.useState<Place>();\n /** 空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼ã®å¯¾è±¡ã‚¨ãƒªã‚¢ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isSubjectArea, switchSubjectArea] = React.useState(true);\n /** è·é›¢ã®æ•°å€¤ï¼ˆm) */\n const [discance, setDistance] = React.useState(0);\n /** è·é›¢ã®è¡¨ç¤ºç”¨ãƒ©ãƒ™ãƒ« */\n const [distanceText, setDistanceText] = React.useState('');\n /** 所è¦æ™‚é–“ã®æ•°å€¤(秒) */\n const [duaration, setDuration] = React.useState(0);\n /** 所è¦æ™‚é–“ã®è¡¨ç¤ºãƒ©ãƒ™ãƒ« */\n const [durationText, setDurationText] = React.useState('');\n /** 基本料金 */\n const [fee, setFee] = React.useState(0);\n /** トータルã®æ–™é‡‘ */\n const [totalFee, setTotalFee] = React.useState(0);\n /** 料金ラベル */\n const [feeLabel, setFeeLabel] = React.useState('');\n /** 注æ„äº‹é …ãƒ©ãƒ™ãƒ« */\n const [notesLabel, setNotesLabel] = React.useState<string[]>([]);\n /** アラートラベル */\n const [alertLabel, setAlertLabel] = React.useState<AlertLabel[]>([]);\n /** 対象ã¨ãªã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ */\n const [taxiCompany, setTaxiCompany] = React.useState<TaxiCompanyList>(TaxiCompanyList.limoTaxi);\n\n /** リクエスト回数。 */\n const [requestCount, setRequestCount] = React.useState(1);\n\n /** 発ç€åœ°ç‚¹ãŒç·¨é›†æ¸ˆã¿ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [ isEdited, switchEdited ] = React.useState(false);\n /** åˆæœŸã‚¢ã‚¯ã‚»ã‚¹æ™‚ã«ã‚¯ã‚¨ãƒªã‹ã‚‰å€¤ã‚’èªã¿å–ã£ãŸã‹ã‚’判定ã™ã‚‹ãƒ•ãƒ©ã‚° */\n const [ isEndInit, switchIsEndInit ] = React.useState(false);\n /** クエリパラメーター */\n const [ params, setParams ] = React.useState<BookingTaxiQueryParams|null>(null);\n /** Selectモードã®éš›ã«é¸æŠžã—ãŸåœ°ç‚¹ */\n const [ selectPointNumber, setSelectPointNumber ] = React.useState(\"0\");\n /** Selectモードã®æ™‚ã®é¸æŠžã§ãる地点一覧 */\n const [ pointList, setPointList ] = React.useState<SelectPoint[]>([]);\n /** タクシー料金APIã«å•ã„åˆã‚ã›ãŒå®Œäº†ã—ã¦ã„ã‚‹ã‹ */\n const [ isEndCallTaxiAPI, switchIsEndCallTaxiAPI ] = React.useState(true);\n /** タクシー料金å–å¾—ãŒå¤±æ•—ã—ãŸã‹ */\n const [ isFailCallTaxiAPI, switchIsFailCallTaxiAPI ] = React.useState(false);\n /** 対象ã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ */\n const [ taxiCompanyConf, setTaxiCompanyConf ] = React.useState<TaxiCompanyConfiguration|null>(null);\n /** 対象空港リスト */\n const [ targetAirportCodeList, setTargetAirportCodeList ] = React.useState<string[]>([]);\n /** モード */\n const [ mode, setMode ] = React.useState<AirportTransferTaxiMapMode>(AirportTransferTaxiMapMode.map);\n /** 表示ã•ã‚Œã¦ã„る料金ã®ã‚¿ã‚¤ãƒ— */\n const [ fareType, setFareType ] = React.useState(\"\");\n /** 料金ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹æƒ…å ±ï¼ˆäºˆç´„å¯èƒ½ã‹ã©ã†ã‹ï¼‰ */\n const [ isAvailableReservation, switchIsAvailableReservation ] = React.useState<boolean>(true);\n /** è¨€èªžæƒ…å ± */\n const [ lang, setLang ] = React.useState<Lang>(Lang.ja);\n /** åˆæœŸçŠ¶æ…‹ã§è¡¨ç¤ºã•ã‚Œã‚‹ãƒ©ãƒ™ãƒ« */\n const [ defaultPointlabel, setDefaultPointLabel ] = React.useState<string>('');\n /** 日付é¸æŠžã‚¿ã‚¤ãƒ— */\n const [ timePattern, setTimePattern ] = React.useState<TaxiTimePattern>(TaxiTimePattern.normal);\n /** é¸æŠžå¯èƒ½ãªå‡ºç™ºæ—¥æ™‚リスト */\n const [ selectTimeList, setSelectTimeList ] = React.useState<string[]>([UNSELECTED_RIDING_DATE_STRING]);\n /** 乗車日時ãŒæœªé¸æŠžçŠ¶æ…‹ã‹ã®ãƒ•ãƒ©ã‚° */\n const [ isUnselectedRidingDate, switchIsUnselectedRidingDate ] = React.useState<boolean>(false);\n /** ã”利用便日時(時間)ãŒæœªé¸æŠžçŠ¶æ…‹ã‹ã®ãƒ•ãƒ©ã‚° */\n const [ isUnselectedFlightHour, switchIsUnselectedFlightHour ] = React.useState<boolean>(false);\n /** ã”利用便日時(分)ãŒæœªé¸æŠžçŠ¶æ…‹ã‹ã®ãƒ•ãƒ©ã‚° */\n const [ isUnselectedFlightMinutes, switchIsUnselectedFlightMinutes ] = React.useState<boolean>(false);\n /** ã”利用便日時ãŒæœªé¸æŠžçŠ¶æ…‹ã‹ã®ãƒ•ãƒ©ã‚° */\n const [ isUnselectedFlightDate, switchIsUnselectedFlightDate ] = React.useState<boolean>(false);\n /** referrerパラメーターã®å€¤ã€‚ */\n const [ referrer, setReferrer ] = React.useState<string>('');\n /** クエリã®æƒ…å ±ã‚’å…ƒã«æ–™é‡‘æƒ…å ±ã‚’å–å¾—ã™ã‚‹ã‹ */\n const [ isInitGetFareInfo, switchIsInitGetFareInfo ] = React.useState<boolean>(true);\n /** é€è¿Žã«å¯¾å¿œã™ã‚‹ä¾¿æƒ…å ± */\n const [ flightPattern, setFlightPattern ] = React.useState<string[]>([]);\n\n /** 象潟åˆåŒäº¤é€šã‹ï¼Ÿ */\n const isKisakataTaxi = [TaxiCompanyList.airport_liner, TaxiCompanyList.nikaho_go].includes(taxiCompany);\n /** 平日用ã®ãƒ—ルダウンリスト */\n const [ weekdayPointList, setWeekdayPointList ] = React.useState<SelectPoint[]>([]);\n /** 休日用ã®ãƒ—ルダウンリスト */\n const [ holidayPointList, setHolidayPointList ] = React.useState<SelectPoint[]>([]);\n /** 平日ã‹ä¼‘日㋠*/\n const [ dayOfWeek, setDayOfWeek ] = React.useState<string>('');\n\n /**\n * 象潟åˆåŒäº¤é€šã®ãƒ—ルダウンリストをè¨å®šã™ã‚‹\n * @param params クエリパラメーター\n * @param ridingDate 乗車日時\n */\n const setNikahoPointListByParams = async (params: BookingTaxiQueryParams, ridingDate: luxon.DateTime, defaulPickupPattern: number) => {\n /**\n * プルダウンリストをå–å¾—ã™ã‚‹\n * @param id s3ã®jsonファイルå\n * @returns プルダウンリスト\n */\n const fetchPointList = async (id: 'nikahoWeekday' | 'nikahoHoliday') => {\n const response = await getTaxiCompanyConfiguration({\n companyCode: params.company,\n componentKey: ComponentKey.pulldown,\n id,\n language: lang\n });\n \n if (response.body !== null && Array.isArray(response.body) && response.body.length > 0) {\n return response.body;\n }\n return [];\n };\n\n const weekdayList = await fetchPointList('nikahoWeekday');\n const holidayList = await fetchPointList('nikahoHoliday');\n // 平日用ã®ãƒ—ルダウンリスト\n setWeekdayPointList(weekdayList);\n // 休日用ã®ãƒ—ルダウンリスト\n setHolidayPointList(holidayList);\n\n if (weekdayList.length > 0 && holidayList.length > 0) {\n // セレクトモードã«åˆ‡ã‚Šæ›¿ãˆ\n setMode(AirportTransferTaxiMapMode.select);\n let currentList: SelectPoint[] = isHoliday(ridingDate) ? holidayList : weekdayList;\n // defaulPickupPatternãŒ1(TO_AIRPORT)ã§å¹³æ—¥ã®å ´åˆã€id001を除外\n if (defaulPickupPattern === PickupPattern.TO_AIRPORT && !isHoliday(ridingDate)) {\n currentList = currentList.filter(point => point.id !== '001');\n }\n setDayOfWeek(isHoliday(ridingDate) ? 'holiday' : 'weekday');\n // プルダウンã«ã‚»ãƒƒãƒˆ\n setPointList(currentList);\n }\n };\n\n /** クエリã®paramsã¨companyよりé¸æŠžåœ°ç‚¹ã®ä¸€è¦§ã‚’入れ込む */\n const setPointListByParams = async (params: BookingTaxiQueryParams) => {\n const setParams: GetTaxiCompanyConfParams = {\n companyCode: params.company,\n // TODO: ç¾çŠ¶ã§ã¯ãƒ—ルダウンã ã‘ãªã®ã§å›ºå®šå€¤ã ãŒã€ä»Šå¾Œé¢¨å‘ããŒå¤‰ã‚ã£ãŸã‚‰å¯¾å¿œã™ã‚‹\n componentKey: ComponentKey.pulldown,\n id: params.mode,\n language: lang\n }\n getTaxiCompanyConfiguration(setParams)\n .then((res)=>{\n // ResponseãŒé…列ã§è¦ç´ ãŒå…¥ã£ã¦ã„ã‚‹å ´åˆã®ã¿å‡¦ç†ã™ã‚‹\n if(res.body !== null && Array.isArray(res.body) && res.body.length > 0) {\n let matchPointList: SelectPoint[] = res.body;\n setPointList(matchPointList);\n setMode(AirportTransferTaxiMapMode.select);\n }\n })\n }\n\n /**\n * メールアドレス欄ã®å€¤ã‚’変更ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚\n * @param e テã‚ストボックスã®å€¤ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedEmail = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** テã‚ストボックスã«å…¥åŠ›ã•ã‚ŒãŸå€¤ã€‚ */\n const value = e.target.value as string;\n // メールアドレスã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n setEmail(value);\n // メールアドレスãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç©ºã§ã‚るフラグをオフã«ã™ã‚‹ã€‚\n setEmptyEmail(false);\n // メールアドレスãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆå›žæ•°ã‚’1ã«æˆ»ã™ã€‚\n setRequestCount(1);\n }\n\n /**\n * æ乗便ã®å€¤ã‚’変更ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚\n * @param e テã‚ストボックスã®å€¤ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedFlight = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** テã‚ストボックスã«å…¥åŠ›ã•ã‚ŒãŸå€¤ã€‚ */\n const value = e.target.value as string;\n // 便åã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n setFlight(value);\n // 便åãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯ã€ä¾¿åãŒç©ºã§ã‚るフラグをオフã«ã™ã‚‹ã€‚\n setEmptyFlight(false);\n }\n\n\n /**\n * 空港ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedAirport = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚(空港コード) */\n const value = e.target.value as string;\n // é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã«ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setAirportCode(value);\n }\n\n /**\n * 乗車日時ã®æ—¥ä»˜ï¼ˆã€Œå¹´ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingYear = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as number;\n // セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ä¹—車日時・フライト日時ã®ã€Œå¹´ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚\n const modifiedDate = ridingDate.set({\n year: value\n });\n // 乗車日時を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n }\n\n /**\n * 乗車日時ã®æ—¥ä»˜ï¼ˆã€Œæœˆã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingMonth = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value: number = e.target.value as number;\n // セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ä¹—車日時・フライト日時ã®ã€Œæœˆã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚\n const modifiedDate = ridingDate.set({\n month: value\n });\n // 乗車日時を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n }\n\n /**\n * 乗車日時ã®æ—¥ä»˜ï¼ˆã€Œæ—¥ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingDay = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as number;\n // セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ä¹—車日時・フライト日時ã®ã€Œæ—¥ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚\n const modifiedDate = ridingDate.set({\n day: value\n });\n // 乗車日時を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n }\n\n /**\n * 乗車日時ã®æ™‚刻(「時ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingHour = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as number;\n /** セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ã€Œæ™‚ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚ */\n const modifiedDate = ridingDate.set({\n hour: value\n });\n // æ乗便ã®æ™‚刻を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n }\n\n /**\n * 乗車日時ã®æ™‚刻(「分ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingMinutes = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as number;\n /** セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ã€Œåˆ†ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚ */\n const modifiedDate = ridingDate.set({\n minute: value\n });\n // æ乗便ã®æ™‚刻を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n }\n\n /**\n * 乗車日時ã®æ™‚刻(「時刻・分ã€éƒ¨åˆ†ï¼‰ãŒãƒ—ルダウンã‹ã‚‰é¸æŠžã•ã‚Œã¦å¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingHourAndMinutes = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as string;\n /** 未é¸æŠžçŠ¶æ…‹ã‚’é¸ã‚“ã éš›ã®æŒ™å‹• */\n if(value === UNSELECTED_RIDING_DATE_STRING) {\n /** 未é¸æŠžçŠ¶æ…‹ã‚’trueã«ã™ã‚‹ */\n switchIsUnselectedRidingDate(true);\n return;\n }\n const hour = Number(value.slice(0, 2));\n const minutes = Number(value.slice(-2));\n /** セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ã€Œæ™‚ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚ */\n const modifiedDate = ridingDate.set({\n hour: hour,\n minute: minutes\n });\n // æ乗便ã®æ™‚刻を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setRidingDate(modifiedDate);\n /** 未é¸æŠžçŠ¶æ…‹ã‚’ false ã«ã™ã‚‹ */\n switchIsUnselectedRidingDate(false);\n }\n\n /**\n * ã”利用便ãŒãƒ—ルダウンã‹ã‚‰é¸æŠžã•ã‚Œã¦å¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚\n * @param e セレクトボックスãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å—ã‘渡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã€‚\n */\n const onChangedRidingFlight = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as string;\n\n /** 未é¸æŠžçŠ¶æ…‹ã‚’é¸ã‚“ã éš›ã®æŒ™å‹• */\n if (value === UNSELECTED_RIDING_DATE_STRING) {\n setSelectFlightData(value);\n }\n\n /** é¸æŠžã•ã‚ŒãŸãƒ•ãƒ©ã‚¤ãƒˆä¾¿ã®æƒ…å ±ã‚’å‡¦ç†ã™ã‚‹ */\n const selectedFlight = flightPattern.find(flight => flight === value);\n if (selectedFlight) {\n setSelectFlightData(selectedFlight);\n }\n }\n\n /**\n * æ乗便ã®æ™‚刻ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†å…±é€šéƒ¨åˆ†\n */\n const onChangedFlightDateCommon = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>, type: string) => {\n /** 未é¸æŠžçŠ¶æ…‹ã‹ã®ãƒ•ãƒ©ã‚° */\n const isUnselected = e.target.value === '---';\n if (type === 'hour') {\n switchIsUnselectedFlightHour(isUnselected);\n } else if (type === 'minutes') {\n switchIsUnselectedFlightMinutes(isUnselected);\n }\n if (isUnselected) return;\n // /** セレクトボックスã§é¸æŠžã•ã‚ŒãŸé …ç›®ã®å€¤ã€‚ */\n const value = e.target.value as number;\n /** セレクトボックスã§å¤‰æ›´ã•ã‚ŒãŸæ™‚刻ã©ãŠã‚Šã«ã€Œæ™‚ã€éƒ¨åˆ†ã‚’è¨å®šã™ã‚‹ã€‚ */\n const luxonSetObject = ((): luxon.DateObjectUnits => {\n switch(type) {\n case 'year':\n return {year: value};\n case 'month':\n return {month: value};\n case 'day':\n return {day: value};\n case 'hour':\n return {hour: value};\n case 'minutes':\n default:\n return {minute: value};\n }\n })()\n // æ乗便ã®æ™‚刻を変更後ã®æ—¥æ™‚ã«æ›´æ–°ã™ã‚‹ã€‚\n setFlightDate(flightDate.set(luxonSetObject));\n }\n /**\n * æ乗便ã®æ™‚刻ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‘¼ã³å‡ºã—å£\n */\n const onChangedFlightDate = {\n // æ乗便ã®æ™‚刻(「年ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†\n year: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n onChangedFlightDateCommon(e, 'year');\n },\n // æ乗便ã®æ™‚刻(「月ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†\n month: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n onChangedFlightDateCommon(e, 'month');\n },\n // æ乗便ã®æ™‚刻(「日ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†\n day: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n onChangedFlightDateCommon(e, 'day');\n },\n // æ乗便ã®æ™‚刻(「時ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†\n hour: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n onChangedFlightDateCommon(e, 'hour');\n },\n // æ乗便ã®æ™‚刻(「分ã€éƒ¨åˆ†ï¼‰ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†\n minutes: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n onChangedFlightDateCommon(e, 'minutes');\n }\n }\n\n /** 発ç€åœ°æƒ…å ±ã€‚ */\n let points = {\n label: pointName,\n latLng: `${center.lat},${center.lng}`,\n }\n\n /** 仮予約APIã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーターをå–å¾—ã™ã‚‹ã€‚ */\n const getSendParams = (token: string): TemporaryReservationParams => {\n // TODO: ã„らãªã•ãã†ãªã‚‰ã“ã®è¾ºå‰Šé™¤ã™ã‚‹ デフォルトãƒã‚§ãƒƒã‚¯ã ã‘残ã™\n let sendPoints = (()=>{\n if(points.label === defaultPointlabel) {\n throw new Error('座標ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã¾ã¾ã§ã™');\n }\n return points;\n })();\n // Selectモードã®å ´åˆã€é¸ã‚“ã é¸æŠžè‚¢ã‚’発ç€åœ°ç‚¹åº§æ¨™ã¨ãƒ©ãƒ™ãƒ«ã«ç”¨ã„ã‚‹\n if(pointList.length > 0 && mode === AirportTransferTaxiMapMode.select && selectPointNumber !== '-1') {\n const selectPointObject = pointList[Number(selectPointNumber)];\n if(selectPointObject.name) {\n points = {\n label: selectPointObject.name,\n latLng: selectPointObject.latLng\n }\n }\n }\n // ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n let setFlightInfo: any = {\n number: flight,\n datetime: flightDate.toFormat('yyyyMMddHHmm'),\n // 空港ç€ã®å ´åˆã¯æ乗便ã®å‡ºç™ºæ™‚é–“ã¨ã—ã¦ã€\n // 空港発ã®å ´åˆã¯æ乗便ã®åˆ°ç€æ™‚é–“ã¨ã—ã¦ç™»éŒ²ã™ã‚‹ã€‚\n isDeparture: toAirport\n }\n // å›½éš›ãƒ»å›½å†…æƒ…å ±ãŒã‚ã‚Œã°é€£æºã™ã‚‹\n if(params?.isDomestic) {\n setFlightInfo = {\n ...setFlightInfo,\n flightType: params.isDomestic? FlightType.domestic: FlightType.international\n }\n }\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒã‚ã‚Œã°é€£æºã™ã‚‹\n if(params?.terminal && params.terminal !== '') {\n setFlightInfo = {\n ...setFlightInfo,\n terminal: params.terminal\n }\n }\n // ã‚²ãƒ¼ãƒˆæƒ…å ±ã‚’é€£æºã™ã‚‹\n if(params?.gate && params.gate !== '') {\n setFlightInfo = {\n ...setFlightInfo,\n gate: params.gate\n }\n }\n // labelForPriceCalc ã§é€ã‚‹å€¤ã¯æ–½è¨åã‚’å«ã‚るよã†ã«ã™ã‚‹\n // クエリã‹ã‚‰å–å¾—ã—ãŸæ—¥æœ¬èªžä½æ‰€æƒ…å ±\n const paramsPointJPAddress: string = params?.pointJPAddress || '';\n const jpAddress = placeJP? convertLetter(placeJP.getFullAddress().replace(/-/g, '_')): paramsPointJPAddress;\n const jpPlaceName = placeJP? ( placeJP.name || '' ): (params?.pointJPName || '');\n const labelForPriceCalc = jpPlaceName !== ''? `${jpAddress} ${jpPlaceName}`: jpAddress;\n\n let sendParams: TemporaryReservationParams = {\n mailaddress: email,\n pointInfo: {\n latLng: sendPoints.latLng,\n label: sendPoints.label,\n latLngForPriceCalc: sendPoints.latLng,\n // TODO: 今後宮交ãŒè‹±èªžç‰ˆå¯¾å¿œã—ãŸã¨ãã«ã¯ã€Selectã§é¸ã‚“ã 時ã®æ‰±ã„を考ãˆã‚‹å¿…è¦ãŒã‚ã‚‹\n labelForPriceCalc: labelForPriceCalc\n },\n flight: setFlightInfo,\n taxiConnectFlightNumber: selectFlightData !== UNSELECTED_RIDING_DATE_STRING ? selectFlightData : undefined,\n rideDatetime: ridingDate.toFormat('yyyyMMddHHmm'),\n // 空港ç€ã®å ´åˆã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã‹ã‚‰ä¹—る値(pickup)をã€\n // 空港発ã®å ´åˆã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸåœ°ç‚¹ã§é™ã‚Šã‚‹ï¼ˆdropOff)をè¨å®šã™ã‚‹ã€‚\n operation: toAirport ? \"pickup\" : \"dropOff\",\n token: token,\n // 空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼ã®å€¤ï¼ˆlimoTaxi)をè¨å®šã™ã‚‹ã€‚\n company: taxiCompany,\n count: requestCount,\n referrer: params?.referrer || '',\n language: i18n.language,\n airportLetter: airportCode,\n };\n // reCAPTCHA v2ã§æ¤œè¨¼ã™ã‚‹å ´åˆã®ã¿ã€vrパラメーターをå«ã‚ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n if (useRecaptchaV2) {\n sendParams = {\n ...sendParams,\n vr: useRecaptchaV2,\n }\n }\n // æœ¬ç•ªç’°å¢ƒä»¥å¤–ãƒ†ã‚¹ãƒˆãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãƒ¼ã‚’è¿½åŠ ã™ã‚‹\n if(process.env['REACT_APP_STAGE_ENV'] !== 'master') {\n let backURL = `${window.location.protocol}//${window.location.host}/booking`;\n // localhostã®å ´åˆã«ã¯ç½®æ›ã¯ã—ãªã„\n if(!backURL.includes('localhost')) {\n // メールアドレスã«æ›¸ã„ã¦ã‚る戻り先URLを指定ã™ã‚‹\n // ç¾åœ¨ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã‚‹URLã‚’ãã®ã¾ã¾æŒ‡å®šã™ã‚‹\n sendParams.overwirteBookingUrl = backURL;\n }\n // 実際ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‰ãªã„\n if(params?.dryRun === 'true') {\n sendParams.dryRun = params?.dryRun === 'true';\n }\n }\n if(params && params.mode) {\n sendParams = {\n ...sendParams,\n mode: params.mode\n };\n }\n return sendParams;\n }\n\n /**\n * タクシー乗車ãŒå‡ºæ¥ãªã„日時ã‹\n * @param rideDate 乗車日時\n * @param taxiCompany タクシー会社\n * @returns エラーã®å ´åˆã«ã¯trueãŒè¿”ã‚‹\n */\n const checkRideDate = (rideDate: luxon.DateTime, taxiCompany: TaxiCompanyList, taxiConf = taxiCompanyConf) => {\n if(!taxiConf) {\n return true;\n }\n const limit = taxiConf.limit;\n const taxiUtils = new CommonTaxiUtils(limit.limitDays, limit.limitHours, taxiCompany, airportCode);\n /** 指定乗車時刻ãŒã‚¿ã‚¯ã‚·ãƒ¼ãŒäºˆç´„å¯èƒ½æœŸé™å†…ã§ã‚ã‚‹ã‹ */\n const isAvalableDate = !taxiUtils.isAvalable(rideDate);\n /** 指定乗車時刻ãŒã‚¿ã‚¯ã‚·ãƒ¼ãŒäºˆç´„å¯èƒ½æœŸé™å†…ã§ã‚ã‚‹ã‹ */\n if(isAvalableDate) {\n const setErrorMessage = taxiUtils.getErrorMessage(limit.errorMessage, lang);\n setInvalidFlightErrorMessage(setErrorMessage);\n }\n return isAvalableDate;\n }\n\n /** 入力フォームã§è¨å®šã•ã‚ŒãŸå„é …ç›®ã®æ¤œè¨¼ã‚’ã™ã‚‹ã€‚ */\n const validate = async() => {\n const emptyAddress = pointName === '';\n const emptyEmail = email === '';\n const emptyFlight = flight === '';\n const invalidEmail = email !== '' && !isEmail(email);\n const invalidFlight = flight !== '' && !isValidFLight(flight);\n // ã”利用便日時ãŒæœªé¸æŠžçŠ¶æ…‹ã®å ´åˆã«ã¯ã€ã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹\n const invalidFlightDate: boolean = (()=> {\n if (isUnselectedFlightHour || isUnselectedFlightMinutes) {\n setInvalidFlightDateErrorMessage(t('taxi:unselected_flight_date_error_msg'));\n return true;\n }\n return false;\n })();\n /** ä¸æ£ãªä¹—車日時ã§ã‚る(ç¾åœ¨æ—¥æ™‚より96時間を切ã£ã¦ã„る)ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const invalidRidingDate: boolean = (()=>{\n // ã”利用便日時ãŒæœªé¸æŠžçŠ¶æ…‹ã®å ´åˆã«ã¯ã€ä¹—車日時ã®æ¤œè¨¼ã‚’スã‚ップã™ã‚‹\n if(invalidFlightDate) {\n return false;\n }\n /** 未é¸æŠžçŠ¶æ…‹ã®å ´åˆã«ã¯æœªé¸æŠžã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ */\n if (isUnselectedRidingDate) {\n setInvalidFlightErrorMessage(t('taxi:unselected_riding_date_error_msg'));\n return true;\n }\n // sakataNo1Taxi ã¾ãŸã¯ shokoHire ã®å ´åˆã¯å‡¦ç†ã‚’スã‚ップ\n if (taxiCompany !== TaxiCompanyList.sakataNo1Taxi && taxiCompany !== TaxiCompanyList.shokoHire) {\n // to空港ã®å ´åˆã«ã¯ãƒ•ãƒ©ã‚¤ãƒˆå‡ºç™ºæ™‚刻ãŒé€è¿Žæ™‚刻よりå‰ã®å ´åˆã«ã¯ã‚¢ãƒ©ãƒ¼ãƒˆã‚’出ã™\n if (toAirport && ridingDate > flightDate) {\n setInvalidFlightErrorMessage(t('taxi:set_after_time_dep'));\n return true;\n }\n // from空港ã®å ´åˆã«ã¯ã€ãƒ•ãƒ©ã‚¤ãƒˆåˆ°ç€æ™‚刻ãŒé€è¿Žæ™‚刻より後ã®å ´åˆã«ã‚¨ãƒ©ãƒ¼ã‚’出ã™\n if (!toAirport && ridingDate < flightDate) {\n setInvalidFlightErrorMessage(t('taxi:set_after_time_arr'));\n return true;\n }\n }\n return checkRideDate(ridingDate, taxiCompany);\n })();\n setEmptyAddress(emptyAddress);\n setEmptyEmail(emptyEmail);\n setEmptyFlight(emptyFlight);\n setInvalidEmail(invalidEmail);\n setInvalidFlight(invalidFlight);\n setOverdeadline(invalidRidingDate);\n switchIsUnselectedFlightDate(invalidFlightDate);\n // サãƒãƒ¼ãƒˆé€è¿Žãƒ‘ターンãŒALLã§ãªã„ãªã‚‰ã€è¨±å¯ã•ã‚ŒãŸã‚¿ã‚¤ãƒ—ã‹ã®æ¤œè¨¼ã‚’ã™ã‚‹\n switch(taxiCompanyConf?.supportDirection) {\n case 'fromAirport':\n switchDisallowSupportDirection((pickupPattern !== PickupPattern.FROM_AIRPORT))\n break;\n case 'toAirport':\n switchDisallowSupportDirection((pickupPattern !== PickupPattern.TO_AIRPORT))\n break;\n default:\n switchDisallowSupportDirection(false);\n }\n /* æ乗タクシーã¨å¯¾å¿œãƒ•ãƒ©ã‚¤ãƒˆãŒã‚る事æ¥è€…ã®å ´åˆã€å¯¾å¿œãƒ•ãƒ©ã‚¤ãƒˆãŒé¸æŠžã§ãã¦ã„ãªã„ã¨ã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹ */\n const invalidFlightPattern: boolean = (()=> {\n if(flightPattern.length === 0) {\n return false;\n }\n return selectFlightData === UNSELECTED_RIDING_DATE_STRING;\n })();\n switchInvalidFlightPattern(invalidFlightPattern);\n\n if (\n emptyEmail ||\n emptyFlight ||\n invalidEmail ||\n invalidFlight ||\n invalidRidingDate ||\n invalidFlightDate ||\n emptyAddress ||\n isUnselectedRidingDate ||\n disallowSupportDirection ||\n invalidFlightPattern\n ) {\n return false;\n } else {\n return true;\n }\n }\n\n /** 本予約APIã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーターを整形ã™ã‚‹ã€‚ */\n const modifyParams = (params: TemporaryReservationParams) => {\n // 本番環境ã§ã¯ãƒ†ã‚¹ãƒˆãƒ‘ラメーターを削除ã™ã‚‹\n if(process.env['REACT_APP_STAGE_ENV'] === 'master') {\n delete params.overwirteBookingUrl;\n delete params.dryRun;\n }\n return params;\n }\n\n /**\n * 仮予約ã®å‡¦ç†ã€‚\n * @param tokenV2 reCAPTCHA v2ã®ãƒˆãƒ¼ã‚¯ãƒ³ã€‚(reCAPTCHA v2を使用ã™ã‚‹å ´åˆã®ã¿æŒ‡å®šï¼‰\n * */\n const onSubmit = (tokenV2?: any) => {\n const clickName = (()=>{\n const scClicks = taxiCompanyConf?.scClick.temporaryReservation;\n const clickType = getSCCkickType(params?.referrer, taxiCompany);\n if(!scClicks) {\n return '';\n }\n return scClicks[clickType] || scClicks?.asw;\n })();\n // 本番以外ã§ã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’Cookieã«ä¿å˜ã™ã‚‹\n if (Environment.getEnvironmentType() !== Environment.PRODUCTION) {\n const mailAddressCookieName = 'ana_airport_access_navi_email_address';\n Cookies.set(mailAddressCookieName, email);\n }\n // ダミータクシーã®å ´åˆã«ã¯SCクリックを実行ã—ãªã„\n if(taxiCompany !== TaxiCompanyList.dummyVal) {\n // SCクリックã®å®Ÿè¡Œã€‚\n scClick(clickName);\n }\n // é€ä¿¡æ¸ˆã¿ï¼ˆäºˆç´„ボタンを押ã—ãŸå¾Œï¼‰ã¨ã—ã¦æ‰±ã†ã‚ˆã†ãƒ•ãƒ©ã‚°ã‚’更新。\n setSubmitted(true);\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オンã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(true));\n // éžåŒæœŸå‡¦ç†ã‚’実行ã™ã‚‹ãŸã‚ã®ç„¡å関数ã®å‘¼ã³å‡ºã—。\n (async() => {\n /** Google reCapthcaã‹ã‚‰å–å¾—ã—ãŸãƒˆãƒ¼ã‚¯ãƒ³ã€‚ */\n const token = useRecaptchaV2 ? tokenV2 : await getRecaptchaToken();\n /** 仮予約APIã«é€ä¿¡ã™ã‚‹ãƒ‘ラメーター。 */\n let sendParams = getSendParams(token);\n /** 入力フォームã®æ¤œè¨¼çµæžœã€‚ */\n const validatedResult = await validate();\n sendParams = modifyParams(sendParams);\n if (validatedResult) {\n // 仮予約APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n submitTemporaryReservation(sendParams).then((response) => {\n const statusCode = response?.status;\n /** 仮予約æˆåŠŸæ™‚ã«å®Œäº†ãƒšãƒ¼ã‚¸ã«é€ã‚‹ãƒ‘ラメーター。 */\n const successParams = new URLSearchParams({\n company: taxiCompany,\n lang: lang,\n referrer: params?.referrer ? params.referrer : '',\n });\n switch (statusCode) {\n case 200:\n // 予約完了画é¢ã«é·ç§»ã™ã‚‹ã€‚\n // タクシー会社を連æºã™ã‚‹\n history.push(`/booking-taxi/success?${successParams.toString()}`);\n break;\n case 403:\n // reCAPTCHA v3ã®æ¤œè¨¼ã«å¤±æ•—ã—ãŸå ´åˆã€‚\n // (エラーコードãŒ100ã®å ´åˆã¯reCAPTCHA検証ã«å¤±æ•—ã—ãŸå ´åˆã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã§ã‚ã‚‹ãŸã‚。)\n if (response?.data?.errorCode === 100) {\n // 予約ボタンã®å†ã‚¯ãƒªãƒƒã‚¯ï¼ˆreCAPTCHA v2ã§ã®æ¤œè¨¼ï¼‰ã‚’促ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n switchNeedRetryRecaptcha(true);\n // reCAPTCHA v2を使用ã™ã‚‹ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n dispatch(switchUseV2(true));\n } else {\n // ãã®ä»–ã®å ´åˆã¯äºˆç´„失敗フラグをè¨å®šã™ã‚‹ã€‚\n setFailed(true);\n }\n break;\n case 499:\n // 別ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¨å®šã™ã‚‹ã‚ˆã†ä¿ƒã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n setUnavalableEmail(true);\n break;\n case 599:\n // 予約処ç†ã®å†å®Ÿè¡Œã‚’促ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n setRequiredRetry(true);\n // リクエスト回数をインクリメントã™ã‚‹ã€‚\n setRequestCount(requestCount + 1);\n break;\n default:\n // 予約失敗フラグをè¨å®šã™ã‚‹ã€‚\n setFailed(true);\n break;\n }\n }).catch(() => {\n // 何らã‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆå‡¦ç†ã«å¤±æ•—ã—ãŸå ´åˆã¯ã€äºˆç´„失敗フラグをè¨å®šã™ã‚‹ã€‚\n setFailed(true);\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n }).finally(() => {\n // 最後ã«ã‹ãªã‚‰ãšå‡¦ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n })\n } else {\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n return;\n }\n })();\n }\n\n /** URLクエリパラメータをå–å¾—ã™ã‚‹ */\n const getQueryParams = (searchParams: URLParams, getTaxiCompanyConf: TaxiCompanyConfigurations): BookingTaxiQueryParams | null => {\n // 連æºã•ã‚ŒãŸã‚¯ã‚¨ãƒªã‚ˆã‚Šã€è©²å½“ã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‚’表示ã™ã‚‹\n const taxiCompany: TaxiCompanyList = convertStringToTaxiCompany(searchParams.getStringParam('company') || '') || TaxiCompanyList.limoTaxi;\n const taxiCompanyConf = getTaxiCompanyConf[taxiCompany] || getTaxiCompanyConf[TaxiCompanyList.limoTaxi];\n\n // 連æºãŒãªã„時ã«è¡¨ç¤ºã™ã‚‹ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆæ—¥ä»˜\n const defaultDate = (()=>{\n if(!taxiCompanyConf) {\n return getNowLuxonDateTime().plus({\n day: 4\n });\n }\n const limit = taxiCompanyConf.limit;\n const commonTaxiUtils = new CommonTaxiUtils(limit.limitDays, limit.limitHours, taxiCompany, airportCode);\n return commonTaxiUtils.getAvailableDate(getNowLuxonDateTime());\n })();\n const flightDate = (() => {\n const hasRideDate = searchParams.hasParam('rideDate');\n const hasFlightDate = searchParams.hasParam('flightDate');\n \n if (hasRideDate && !hasFlightDate) {\n // ã”利用便日時ãŒæœªé¸æŠžçŠ¶æ…‹ã®å ´åˆã«ã¯ã€æ™‚間を未è¨å®šçŠ¶æ…‹ã«ã™ã‚‹\n switchIsUnselectedFlightHour(true);\n switchIsUnselectedFlightMinutes(true);\n // rideDateã®æ—¥ä»˜éƒ¨åˆ†ã®ã¿ã‚’使用ã—ã¦æ™‚刻ã¯æœªè¨å®šçŠ¶æ…‹ã«ã™ã‚‹\n const rideDateTime = searchParams.getLuxonDateTimeUnixTimeMilisecondsParam('rideDate', defaultDate);\n return rideDateTime\n }\n \n // æ—¢å˜ã®å‡¦ç†ã‚’ç¶æŒ\n return searchParams.getLuxonDateTimeUnixTimeMilisecondsParam('flightDate', defaultDate);\n })();\n const rideDate = searchParams.getLuxonDateTimeUnixTimeMilisecondsParam('rideDate', defaultDate);\n let getParams: BookingTaxiQueryParams = {\n isDeparture: searchParams.getBooleanParam('isDeparture'),\n pointAddress: searchParams.getStringParam('pointAddress') || '',\n pointName: searchParams.getStringParam('pointName') || '',\n pointLat: searchParams.getFloatParam('pointLat'),\n pointLng: searchParams.getFloatParam('pointLng'),\n airportCode: searchParams.getStringParam('airportCode') || '',\n flightNumber: searchParams.getStringParam('flightNumber') || '',\n flightDate: flightDate,\n rideDate: rideDate,\n isDomestic: searchParams.getBooleanParam('isDomestic'),\n terminal: searchParams.getStringParam('terminal') || '',\n gate: searchParams.getStringParam('gate') || '',\n mode: searchParams.getStringParam('mode') || '',\n referrer: searchParams.getStringParam('referrer') || '',\n company: taxiCompany,\n dryRun: searchParams.getStringParam('dryRun') || undefined,\n lang: searchParams.getStringParam('lang') || 'ja',\n pointJPAddress: searchParams.getStringParam('pointJPAddress') || '',\n pointJPName: searchParams.getStringParam('pointJPName') || '',\n googleAPIDepDate: searchParams.getLuxonDateTimeUnixTimeMilisecondsParam('googleAPIDepDate', rideDate),\n }\n\n // クエリã«å¿œã˜ã¦è¨€èªžã®åˆ‡ã‚Šæ›¿ãˆã‚’ã—ã¾ã™ã€‚\n switch(i18n.language) {\n case 'en':\n setLang(Lang.en);\n setDefaultPointLabel('Search here');\n setPointName('Search here');\n setPlaceJP(null);\n break;\n case 'ja':\n default:\n setLang(Lang.ja);\n setDefaultPointLabel('ã“ã“ã§æ¤œç´¢');\n setPointName('ã“ã“ã§æ¤œç´¢');\n setPlaceJP(null);\n break;\n }\n\n const targetAirportCodeList: string[] = taxiCompanyConf.supportAirports;\n // 空港コードã ã‘指定ã®ã‚³ãƒ¼ãƒ‰ãƒªã‚¹ãƒˆã«ä¸€è‡´ã™ã‚‹ã‹å†åº¦ãƒã‚§ãƒƒã‚¯ã‚’入れる\n if(!targetAirportCodeList.includes(getParams.airportCode)) {\n // 会社ã«åˆã‚ã›ãŸãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚’入れる\n getParams.airportCode = taxiCompanyConf?.defaultAirportCode || '';\n }\n // 乗車日時ãŒäºˆç´„å¯èƒ½ãªç¯„囲ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹\n const invalidRidingDate = checkRideDate(getParams.rideDate, taxiCompany, taxiCompanyConf);\n setOverdeadline(invalidRidingDate);\n if(invalidRidingDate) {\n const limit = taxiCompanyConf.limit;\n const commonTaxiUtils = new CommonTaxiUtils(limit.limitDays, limit.limitHours, taxiCompany, airportCode);\n const setErrorMessage = commonTaxiUtils.getErrorMessage(limit.errorMessage, lang);\n setInvalidFlightErrorMessage(setErrorMessage);\n }\n // 日本ã®ã‚¨ãƒªã‚¢å¤–ã§ã‚ã‚‹å ´åˆã«ã¯ãƒ‘ラメーターをåˆæœŸåŒ–ã•ã›ã‚‹\n if(!checkJPNArea(getParams.pointLat, getParams.pointLng)) {\n getParams = {\n ...getParams,\n pointLat: 0,\n pointLng: 0\n }\n }\n return getParams;\n }\n\n // 座標ãŒæ—¥æœ¬å‘¨è¾ºã‹ã‚’判定ã™ã‚‹\n // 日本周辺ãªã‚‰Trueã‚’è¿”ã™\n const checkJPNArea = (lat: number, lng: number) => {\n return lat > 20 && lat < 50 && lng < 155 && lng > 120;\n }\n\n /** 座標よりä½æ‰€æƒ…å ±ã‚’å–å¾—ã—ã¦å…¥ã‚Œè¾¼ã‚ã‚‹ */\n const setMunicipalityFromPosition = async (position: Location) => {\n const latlng = `${position.lat},${position.lng}`;\n const places: Place[] = await getClosedGeocode(latlng, changeLang(i18n.language));\n if(places.length > 0) {\n const place: Place = places[0];\n setPlace(place);\n /** 「都é“府県ã€ãƒ»ã€Œå¸‚区町æ‘ã€ã¾ã§ã®ä½æ‰€ã€‚ */\n const municipality = convertLetter(place.getAddressToMunicipality());\n setMunicipality(municipality);\n }\n else {\n // ä½ç½®æƒ…å ±ãŒå–ã‚Œãªã„å ´åˆã«ã¯ä½æ‰€ã‚’空欄ã«ã™ã‚‹\n setMunicipality('')\n }\n return {\n 'type': 'setMunicipalityFromPosition'\n }\n }\n\n // é€è¿Žãƒ‘ターンãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã€é€è¿Žãƒ‘ターンã®ãƒ•ãƒ©ã‚°ã‚’変更ã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n setToAirport(PickupPattern.isToAirport(pickupPattern));\n /** é€è¿Žãƒ‘ターンãŒå¤‰æ›´ã•ã‚ŒãŸã¨ã対応フライトもåˆæœŸå€¤ã«æˆ»ã™ */\n setSelectFlightData(UNSELECTED_RIDING_DATE_STRING);\n }, [pickupPattern, setToAirport]);\n\n // 空港コードãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã€åœ°å›³ã®ä¸å¿ƒåº§æ¨™ã¨åœ°ç‚¹ã®å称を変更ã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n // 発ç€åœ°ã‚’未編集ã®å ´åˆã®ã¿ã€å称・座標・市区町æ‘ã‚’æ›´æ–°ã™ã‚‹ã€‚\n // クエリèªã¿è¾¼ã¿ãŒå®Œäº†ã—ã¦ã„ã‚‹å ´åˆã®ã¿æ›´æ–°ã‚’ã‹ã‘ã‚‹\n if (isEndInit && taxiCompanyConf) {\n // 一度インクリメンタルサーãƒã‹ã‚‰å€™è£œã‚’é¸ã‚“ã§ã„ãŸã‚‰æ–™é‡‘ã ã‘を変ãˆã‚‹\n if(isEdited) {\n getDirectionAndFare();\n }\n else {\n // ãれ以外ã®å ´åˆã«ã¯ä¸å¿ƒåº§æ¨™ã‚’デフォルトã«å¤‰æ›´ã™ã‚‹\n const defaultCenter = taxiCompanyConf.defaultCenter[airportCode];\n const newCenter = defaultCenter.position;\n // åˆæœŸåœ°ç‚¹åã¯ã€Œã“ã“ã§æ¤œç´¢ã€ã«è¨å®š\n setPointName(defaultPointlabel);\n // 空港ã«å¿œã˜ãŸåˆæœŸåº§æ¨™ã«æ›´æ–°ã™ã‚‹ã€‚\n setCenter(newCenter);\n setMarkerPoint(newCenter);\n /** 空港ã”ã¨ã«è¨å®šã•ã‚Œã¦ã„ã‚‹åˆæœŸåœ°ç‚¹ã®å¸‚区町æ‘。 */\n const municipalityByAirport = defaultCenter.municipality;\n // 空港ã”ã¨ã®åˆæœŸå€¤ã®å¸‚区町æ‘ã«æ›´æ–°ã™ã‚‹ã€‚\n setMunicipality(municipalityByAirport);\n // 空港を切り替ãˆã¦åœ°ç‚¹ãŒå¤‰ã‚らãªã„å ´åˆã«ã¯æ–™é‡‘計算APIãŒãã®ã¾ã¾ã§ã¯åå¿œã—ãªã„ã®ã§æ‰‹å‹•ã§æ›´æ–°ã™ã‚‹\n if(center.lat === newCenter.lat && center.lng === newCenter.lng) {\n getDirectionAndFare();\n }\n }\n }\n }, [airportCode, setCenter, setPointName, taxiCompanyConf]);\n\n /**\n * 料金経路å–å¾—APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n * @param origin 出発地ã®ç·¯åº¦çµŒåº¦ã€‚\n * @param destination 目的地ã®ç·¯åº¦çµŒåº¦ã€‚\n */\n const getDirectionAndFare = React.useCallback(async() => {\n // エラーメッセージを空ã«ã™ã‚‹\n dispatch(updateErrorMessage(''));\n // èªè¾¼ä¸ã‚’ONã«ã™ã‚‹\n switchIsEndCallTaxiAPI(false);\n // タクシー料金å–å¾—ã«å¤±æ•—ã—ãŸã‹ã‚’Falseã«ã™ã‚‹\n switchIsFailCallTaxiAPI(false);\n const useRideDate: luxon.DateTime = (()=>{\n if(isInitGetFareInfo && params?.googleAPIDepDate) {\n switchIsInitGetFareInfo(false);\n return params?.googleAPIDepDate;\n }\n return ridingDate;\n })();\n // クエリ連æºãŒãªã„デフォルト値を入れ込む\n let request: GetDirectionAndFareParams = {\n airportLetter: airportCode,\n operation: (pickupPattern === PickupPattern.TO_AIRPORT? GetDirectionAndFareOperation.pickup: GetDirectionAndFareOperation.dropOff),\n companyCode: taxiCompany,\n rideDatetime: useRideDate.toFormat('yyyyMMddHHmm'),\n language: i18n.language\n }\n // クエリ連æºãŒã‚ã‚‹å ´åˆã«ã¯ã€ãƒ•ãƒ©ã‚¤ãƒˆã‚¿ã‚¤ãƒ—ãƒ»ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãƒ»ã‚²ãƒ¼ãƒˆæƒ…å ±ã‚’é€£æºã™ã‚‹\n if(params) {\n request = {\n ...request,\n flightType: params.isDomestic? FlightType.domestic: FlightType.international\n }\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒç©ºå‡ºãªã„å ´åˆã«ã¯å…¥ã‚Œè¾¼ã‚€\n if(params.terminal !== '') {\n request = {\n ...request,\n terminal: params.terminal\n }\n }\n // æä¹—å£æƒ…å ±ãŒç©ºå‡ºãªã„å ´åˆã«ã¯å…¥ã‚Œè¾¼ã‚€\n if(params.gate !== '') {\n request = {\n ...request,\n gate: params.gate\n }\n }\n // シーガイアè˜åˆ¥ç”¨\n if(params.mode === \"seaGaia\") {\n request = {\n ...request,\n mode: params.mode,\n modeValue: 'true'\n }\n }\n }\n if(taxiCompany === TaxiCompanyList.nikaho_go && params) {\n const isHolidayDate = isHoliday(useRideDate);\n const newDayOfWeek = isHolidayDate ? 'holiday' : 'weekday';\n let usePointList = isHolidayDate ? holidayPointList : weekdayPointList;\n // 平日ã®ç©ºæ¸¯è¡Œãã®å ´åˆã€id001を除外\n if (pickupPattern === PickupPattern.TO_AIRPORT && !isHolidayDate) {\n usePointList = usePointList.filter(point => point.id !== '001');\n }\n // 平日/休日ãŒåˆ‡ã‚Šæ›¿ã‚る時ã¯å¿…ãšãƒªã‚»ãƒƒãƒˆ\n if (dayOfWeek !== newDayOfWeek) {\n setDayOfWeek(newDayOfWeek);\n setPointList(usePointList);\n setSelectPointNumber('-1');\n setFeeLabel('');\n setDurationText('');\n setDistanceText('');\n setPointName(defaultPointlabel);\n switchIsEndCallTaxiAPI(true);\n return;\n }\n // 平日空港ç€ã®å ´åˆ\n if (usePointList !== pointList) {\n const selectedPointId = pointList[Number(selectPointNumber)]?.id;\n const newListIndex = usePointList.findIndex(point => point.id === selectedPointId);\n setPointList(usePointList);\n if (newListIndex === -1) {\n setSelectPointNumber('-1');\n setFeeLabel('');\n setDurationText('');\n setDistanceText('');\n setPointName(defaultPointlabel);\n switchIsEndCallTaxiAPI(true);\n return;\n }\n setSelectPointNumber(String(newListIndex));\n }\n }\n // pointNameãŒã€Œã“ã“ã§æ¤œç´¢ã€ã¨ãªã£ã¦ã„ã‚‹å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹\n if(pointName === defaultPointlabel) {\n switchIsEndCallTaxiAPI(true);\n // デフォルトã§é€è¿Žã«å¯¾å¿œã™ã‚‹ä¾¿æƒ…å ±ãŒã‚ã‚‹å ´åˆã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®é€è¿Žãƒ‘ターンを発ç€ã®åˆæœŸå€¤ã‚’切り替ãˆã‚‹\n if(flightPattern.length > 0 && taxiCompanyConf !== null) {\n const newflightPattern = pickupPattern === PickupPattern.TO_AIRPORT?\n taxiCompanyConf.defaultFlightPattern.pickup:\n taxiCompanyConf.defaultFlightPattern.dropOff;\n setFlightPattern(newflightPattern)\n }\n return;\n }\n // 発ç€åœ°ç‚¹æƒ…å ±ã‚’å…¥ã‚Œã‚‹\n const latlng = `${center.lat},${center.lng}`;\n // クエリã‹ã‚‰å–å¾—ã—ãŸä½æ‰€æƒ…å ±\n const paramsPointAddress: string = params?.pointAddress || '';\n // クエリã‹ã‚‰å–å¾—ã—ãŸæ—¥æœ¬èªžä½æ‰€æƒ…å ±\n const paramsPointJPAddress: string = params?.pointJPAddress || '';\n const setPointLabel = (() => {\n // 象潟åˆåŒã®å ´åˆã¯ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®é¸æŠžå€¤ã‚’使用\n if (isKisakataTaxi && pointList.length > 0 && selectPointNumber !== '-1') {\n const selectedPoint = pointList[Number(selectPointNumber)];\n return selectedPoint.name || '';\n }\n // ãれ以外ã¯æ—¢å˜ã®å‡¦ç†ã‚’使用\n return convertLetter(place?.getFullAddress(lang) || paramsPointAddress);\n })();\n\n const setPointJPLabel = (() => {\n // 象潟åˆåŒã®å ´åˆã¯ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®é¸æŠžå€¤ã‚’使用\n if (isKisakataTaxi && pointList.length > 0 && selectPointNumber !== '-1') {\n const selectedPoint = pointList[Number(selectPointNumber)];\n return selectedPoint.name || '';\n }\n // ãれ以外ã¯æ—¢å˜ã®å‡¦ç†ã‚’使用\n return convertLetter(place?.getFullAddress().replace(/-/g, '_') || paramsPointJPAddress);\n })();\n request.pointInfo = {\n latLng: latlng,\n label: setPointLabel,\n latLngForPriceCalc: latlng,\n labelForPriceCalc: setPointJPLabel\n }\n try {\n /** æ–™é‡‘æƒ…å ±ã®å–å¾—ä¸ã¯äºˆç´„ボタンを押ã›ãªã„よã†ã«ã™ã‚‹ */\n switchIsAvailableReservation(false);\n const response: GetDirectionAndFareResponse = await getDirectionAndFareAPI(request);\n if(response !== null) {\n // 料金ステータスを更新ã™ã‚‹\n switchIsAvailableReservation(response.status === 'available')\n // è·é›¢ãƒ©ãƒ™ãƒ«ã‚’æ›´æ–°ã™ã‚‹\n setDistanceText(response.distanceLabel);\n // 所è¦æ™‚間ラベルを更新ã™ã‚‹\n setDurationText(response.durationLabel);\n // 基本料金を更新ã™ã‚‹ã€‚\n setFee(response.value);\n // 回é€æ–™é‡‘è¾¼ã®ç·é¡æ–™é‡‘ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setTotalFee(response.totalValue);\n // 料金ラベルをè¨å®šã™ã‚‹\n setFeeLabel(response.fareLabel)\n // è·é›¢ã®æ•´æ•°å€¤ãŒè¿”ã£ã¦ãるよã†ã«ãªã£ãŸã‚‰å…¥ã‚Œè¾¼ã‚€\n setDistance(response.distance)\n // 所è¦æ™‚é–“ã®æ•´æ•°å€¤ãŒè¿”ã£ã¦ãるよã†ã«ãªã£ãŸã‚‰å…¥ã‚Œè¾¼ã‚€\n setDuration(response.duration);\n // 料金タイプを入れ込む\n setFareType(response.fareType);\n // 注æ„äº‹é …ãƒ©ãƒ™ãƒ«ã‚’å…¥ã‚Œã‚‹\n if(response.notesLabel && response.notesLabel.length > 0) {\n setNotesLabel(response.notesLabel);\n }\n else {\n setNotesLabel([]);\n }\n // ã‚¢ãƒ©ãƒ¼ãƒˆæƒ…å ±ã‚’å…¥ã‚Œã‚‹\n if(response.alertLabel && response.alertLabel.length > 0 ) {\n setAlertLabel(response.alertLabel);\n }\n else {\n setAlertLabel([]);\n }\n // å¿…è¦ã§ã‚ã‚Œã°æŒ‡å®šå‡ºç™ºæ™‚刻リストを更新ã™ã‚‹\n if(response.timePattern) {\n const newSelectTimeList = [UNSELECTED_RIDING_DATE_STRING, response.timePattern].flat(1);\n const isSameTimeList = JSON.stringify(newSelectTimeList) === JSON.stringify(selectTimeList);\n if(!isSameTimeList) {\n /** 指定出発時刻リストを更新ã™ã‚‹ */\n setSelectTimeList(newSelectTimeList);\n /** 未é¸æŠžçŠ¶æ…‹ã«å¤‰æ›´ã™ã‚‹ */\n switchIsUnselectedRidingDate(true);\n }\n }\n if(response.flightPattern) {\n setFlightPattern(response.flightPattern);\n }\n }\n else {\n throw new Error('料金算出APIã§ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸ')\n }\n }\n catch (e) {\n switchIsFailCallTaxiAPI(true);\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n finally {\n switchIsEndCallTaxiAPI(true);\n }\n }, [center, ridingDate, airportCode, pickupPattern, taxiCompany, params, place]);\n\n // é€è¿Žãƒ‘ターンã€é¸æŠžåœ°ç‚¹ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚\n // TODO: é€è¿Žãƒ‘ターンを変ãˆã‚‹ã¨2回呼ã°ã‚Œã‚‹ã®ã§å¯¾å‡¦ã™ã‚‹\n React.useEffect(() => {\n // クエリèªã¿è¾¼ã¿ãŒå®Œäº†ã—ãŸã¨ãã®ã¿æ›´æ–°ã‚’ã‹ã‘ã‚‹\n if(!isEndInit || !isEndCallTaxiAPI) {\n return;\n }\n // 料金経路å–å¾—APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹\n getDirectionAndFare();\n }, [center, toAirport, isEndInit, ridingDate])\n\n // リクエスト回数ã«å¤‰æ›´ãŒã‚ã£ãŸå ´åˆã«ç™ºç«ã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n // リクエスト回数ãŒ4回以上ã®å ´åˆã€‚\n if (requestCount > 3) {\n // 使用ã§ããªã„メールアドレスã§ã‚るフラグをオンã«ã™ã‚‹ã€‚\n setUnavalableEmail(true);\n }\n }, [requestCount]);\n\n /** ä½æ‰€æƒ…å ±ãŒç©ºã‹ã‚’判定ã™ã‚‹ */\n React.useEffect(() => {\n const isEmptyAddress = (pointName === '' || pointName === defaultPointlabel);\n setEmptyAddress(isEmptyAddress);\n // ä½æ‰€ãŒç©ºã®æ™‚ã«ã¯äºˆç´„ボタンを押ã›ãªã„よã†ã«ã™ã‚‹\n if(isEmptyAddress) {\n switchIsAvailableReservation(false);\n }\n }, [pointName])\n\n /** 日付ãŒåœŸæ—¥ç¥æ—¥ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ */\n const isHoliday = (date: luxon.DateTime): boolean => {\n // holiday-jpを使ã£ã¦ç¥æ—¥åˆ¤å®š\n const jsDate = date.toJSDate();\n const isPublicHoliday = holiday.isHoliday(jsDate);\n \n // 土日ã®åˆ¤å®š\n const isWeekend = date.weekday === 6 || date.weekday === 7;\n \n return isPublicHoliday || isWeekend;\n }\n\n // åˆå›žã‚¢ã‚¯ã‚»ã‚¹æ™‚ã®ã¿ã‚¯ã‚¨ãƒªã‚’èªã¿è¾¼ã‚€\n React.useEffect(() => {\n\n const searchParams = new URLParams(location.search);\n /** referrerパラメーターã®å€¤ã€‚ */\n const referrer = searchParams.getStringParam('referrer');\n // referrerパラメーターã®å€¤ãŒå–å¾—ã§ããŸå ´åˆã®ã¿æ›´æ–°ã™ã‚‹ã€‚\n if (referrer !== null) {\n setReferrer(referrer);\n }\n // 言語è¨å®šã‚’ã™ã‚‹\n changeLanguage(searchParams, i18n);\n // @ts-ignore\n const company: TaxiCompanyList = searchParams.getStringParam('company') || 'limoTaxi';\n const metaParams = {\n key: 'company_configuration',\n language: searchParams.getStringParam('lang') || 'ja',\n companyCode: company\n }\n // ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ãƒ¡ã‚¿æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n getTaxiCompanyConfiguration(metaParams)\n .then((res)=>{\n // æƒ…å ±ãŒå–ã‚Œãªã„ã¨ãã«ã¯ä½•ã‚‚処ç†ã‚’ã—ãªã„\n if(!res.body) {\n return;\n }\n const getTaxiCompanyConf: TaxiCompanyConfigurations = res.body;\n // Redux上ã«ã‚¿ã‚¯ã‚·ãƒ¼ãƒ¡ã‚¿æƒ…å ±ã‚’ä¿å˜ã™ã‚‹\n dispatch(updateTaxiCompanyConfigurations(getTaxiCompanyConf));\n const getParams = getQueryParams(searchParams, getTaxiCompanyConf);\n // Stateã«ä¿å˜ã™ã‚‹\n setParams(getParams);\n // タクシー会社ã®ä¿å˜ã‚’ã™ã‚‹\n // 連æºãƒ‘ラメーターãŒç„¡ã„ã¨ãã«ã¯ã‚¤ãƒ¼ã‚¹ã‚¿ãƒ³ã¨ã—ã¦å–り扱ã†\n const getTaxiCompany: TaxiCompanyList = getParams?.company? getParams.company: TaxiCompanyList.limoTaxi;\n setTaxiCompany(getTaxiCompany);\n setTaxiCompanyConf(getTaxiCompanyConf[getTaxiCompany]);\n /** 対応ã—ã¦ã„ã‚‹ç©ºæ¸¯ä¸€è¦§ã‚’ãƒ¡ã‚¿æƒ…å ±ã‚ˆã‚Šå–å¾—ã™ã‚‹ */\n const supportAirportCodeList = getTaxiCompanyConf[getTaxiCompany].supportAirports;\n setTargetAirportCodeList(supportAirportCodeList);\n const companyConf = getTaxiCompanyConf[getTaxiCompany];\n const defaultAirportCode: string = getParams?.airportCode || companyConf.defaultAirportCode;\n /** 日付é¸æŠžã‚¿ã‚¤ãƒ—ã‚’è¨å®šã™ã‚‹ */\n setTimePattern(companyConf.timePattern);\n /** 日付é¸æŠžã‚¿ã‚¤ãƒ—ãŒãƒ—ルダウンã®å ´åˆã€ä¸€æ—¦é¸æŠžã—ãªã„ã¨æ¤œç´¢ãŒã§ããªã„よã†ã«ã™ã‚‹ */\n if(companyConf.timePattern === TaxiTimePattern.pulldown) {\n switchIsUnselectedRidingDate(true);\n }\n if(getParams !== null) {\n // 空港コードã®æ›´æ–°ã‚’ã™ã‚‹\n setAirportCode(getParams.airportCode);\n // フライトナンãƒãƒ¼ã®è¨å®šã‚’ã™ã‚‹\n setFlight(getParams.flightNumber)\n setEmptyFlight(false);\n // æ乗便ã®æ™‚刻変更をã™ã‚‹\n setFlightDate(getParams.flightDate);\n // 迎車時刻ã®å¤‰æ›´ã‚’ã™ã‚‹\n setRidingDate(getParams.rideDate);\n /** デフォルトã®é€è¿Žãƒ‘ターンを入れる */\n const defaulPickupPattern = (() => {\n switch(getTaxiCompanyConf[getTaxiCompany].supportDirection) {\n case 'toAirport':\n return PickupPattern.TO_AIRPORT;\n case 'fromAirport':\n return PickupPattern.FROM_AIRPORT;\n case 'all':\n default:\n return getParams.isDeparture? PickupPattern.TO_AIRPORT: PickupPattern.FROM_AIRPORT;;\n }\n })();\n setPickupPattern(defaulPickupPattern);\n // アドレスãŒã‚ã‚‹å ´åˆã«ã¯ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入れる\n if(getParams.pointAddress !== \"\") {\n let setDefaultPointName = getParams.pointAddress;\n // 地点åãŒã‚ã‚‹å ´åˆã«ã¯è¿½åŠ ã§å…¥ã‚Œã‚‹\n if(getParams.pointName !== \"\") {\n setDefaultPointName = `${setDefaultPointName} ${getParams.pointName}`;\n }\n // クエリã§é€£æºã•ã‚ŒãŸåœ°ç‚¹åを入れる\n setPointName(setDefaultPointName);\n }\n let position: Location = {\n lat: getParams.pointLat,\n lng: getParams.pointLng\n }\n // 連æºã‚¯ã‚¨ãƒªã§åº§æ¨™ãŒé€£æºã•ã‚Œã¦ã„ã‚‹å ´åˆã€èªã¿è¾¼ã‚€\n // getQueryParams() ä¸ã§æ—¥æœ¬ã®Area内ã‹ã‚’判定ã—ã¦ã‚‹\n if(getParams.pointLat === 0 || getParams.pointLng === 0) {\n try {\n const defaultCenter = companyConf.defaultCenter[defaultAirportCode];\n position = defaultCenter.position;\n }\n catch(e) {\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.debug(e);\n }\n }\n }\n // クエリã§é€£æºã•ã‚ŒãŸåœ°ç‚¹åã«æ›´æ–°ã™ã‚‹\n setCenter(position);\n // クエリã§é€£æºã•ã‚ŒãŸåœ°ç‚¹ã«ãƒžãƒ¼ã‚«ãƒ¼ã‚’建ã¦ã‚‹\n setMarkerPoint(position);\n // éžåŒæœŸã§åº§æ¨™ã‚ˆã‚Šä½æ‰€æƒ…å ±ã‚’å–å¾—ã—ã¦å…¥ã‚Œè¾¼ã‚€\n setMunicipalityFromPosition(position)\n // Paramsã«ã‚ˆã£ã¦é¸æŠžãƒ¢ãƒ¼ãƒ‰ã‹ãƒžãƒƒãƒ—モードã‹ã‚’切り替ãˆã‚‹\n if( getParams.mode !== '' ) {\n // S3よりé¸æŠžè‚¢ä¸€è¦§ã‚’å–å¾—ã™ã‚‹ï¼ˆéžåŒæœŸï¼‰\n setPointListByParams(getParams)\n }\n if (getParams.company === TaxiCompanyList.airport_liner) {\n getParams.mode = 'airportLiner';\n setPointListByParams(getParams);\n setSelectPointNumber('-1');\n }\n if (getParams.company === TaxiCompanyList.nikaho_go) {\n setNikahoPointListByParams(getParams, getParams.rideDate, defaulPickupPattern)\n }\n // デフォルトフライトé¸æŠžè¦ç´ ãŒã‚ã‚‹ãªã‚‰ã‚»ãƒ¬ã‚¯ãƒˆã«è¿½åŠ ã™ã‚‹\n if(companyConf.defaultFlightPattern) {\n const flightpattern = defaulPickupPattern === PickupPattern.TO_AIRPORT?\n companyConf.defaultFlightPattern.pickup:\n companyConf.defaultFlightPattern.dropOff;\n setFlightPattern(flightpattern)\n }\n }\n })\n .finally(()=>{\n // クエリãŒãªã„ã¨ãã«ã¯ãƒ•ãƒ©ã‚°ã‚’ONã«ã™ã‚‹\n switchIsEndInit(true);\n })\n }, []);\n\n return {\n airportCode, setAirportCode, onChangedAirport,\n center, setCenter,\n markerPoint, setMarkerPoint,\n pointName, setPointName,\n setPlaceJP,\n email, onChangedEmail, isEmptyEmail, isInvalidEmail,\n isUnavalableEmail, isRequiredRetry, isFailed,\n flight, onChangedFlight,\n isEmptyFlight, isInvalidFlight,\n flightDate, setFlightDate, onChangedFlightDate,\n ridingDate, setRidingDate, onChangedRidingYear, onChangedRidingMonth, onChangedRidingDay,\n onChangedRidingHour, onChangedRidingMinutes, onChangedRidingHourAndMinutes,\n isOverDeadline,\n toAirport, setToAirport, pickupPattern, setPickupPattern,\n isSubmitted, setSubmitted,\n onSubmit,\n municipality, setMunicipality,\n isSubjectArea, switchSubjectArea,\n distanceText, durationText,\n fee, totalFee,\n switchEdited,\n taxiCompany,\n setPlace,\n mode,\n selectPointNumber, setSelectPointNumber,\n pointList,\n invalidFlightErrorMessage,\n feeLabel,\n isEndCallTaxiAPI,\n isFailCallTaxiAPI,\n targetAirportCodeList,\n isEndInit,\n fareType,\n notesLabel, alertLabel,\n isAvailableReservation,\n isEmptyAddress,\n taxiCompanyConf,\n lang,\n timePattern,\n flightPattern,\n selectFlightData,\n onChangedRidingFlight,\n selectTimeList,\n isUnselectedRidingDate,\n referrer,\n needRetryRecaptcha,\n switchNeedRetryRecaptcha,\n disallowSupportDirection,\n invalidFlightPattern,\n isUnselectedFlightHour,\n isUnselectedFlightMinutes,\n invalidFlightDateErrorMessage,\n isUnselectedFlightDate,\n }\n}\n","/**\n * 便åã¨ã—ã¦å…¥åŠ›ã•ã‚ŒãŸæ–‡å—列ãŒä¾¿åã®å½¢å¼ã«ãªã£ã¦ã„ã‚‹ã‹ã‚’検証ã™ã‚‹ã€‚\n * @param value 検証ã—ãŸã„値。\n */\nexport function isValidFLight(value: string) {\n const flightFormat = RegExp(/^([a-zA-Zï½-zA-Z0-9ï¼-ï¼™]{2}|[a-zA-Zï½-zA-Z]{3})[0-9ï¼-ï¼™]{1,4}$/);\n return flightFormat.test(value);\n}\n","/* eslint react-hooks/exhaustive-deps: 0 */\n\nimport { Container, FormControl, FormControlLabel, Grid, makeStyles, Radio, RadioGroup, TextField, Typography, Button, withStyles, useMediaQuery, Theme, Link, Select, MenuItem } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport { isEmail, isFullWidthKana, isNumber, isLetter, isACMNumber } from '../../../../../utils/regExpUtils';\nimport scClick from '../../../../common/ScClick';\nimport { submitReservation } from '../../../../../services/taxi/Reservation';\nimport { ReservationParams } from '../../../../../services/taxi/Reservation/ReservationParams';\nimport { Alert } from '@material-ui/lab';\nimport Environment from '../../../../../utils/environment';\nimport Cost from './../common/Cost';\nimport AlertInReservation from '../../MiyakoTaxi/AlertInReservation';\nimport { ReservationLabels, ReservationResponse } from '../../../../../services/taxi/Reservation/ReservationResponse';\nimport { useForm } from './Form/useForm';\n\nimport SelectChildrenNum from './Form/SelectChildrenNum';\nimport SelectAdultNum from './Form/SelectAdultNum';\nimport SelectCarNum from './Form/SelectCarNum';\nimport SelectOtherBag from './Form/SelectOtherBag';\nimport SelectSuitcase from './Form/SelectSuitcase';\nimport SelectGolfBag from './Form/SelectGolfBag';\nimport LoadingModal from '../../../../search/LoadingModal';\nimport { switchisLoading } from '../../../../../actions/generalAction';\nimport { useDispatch } from 'react-redux';\nimport Cautions from '../common/Cautions';\nimport Contact from '../common/Contact';\n\nimport { AlertLabel, TaxiCompanyList } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { TaxiCompanyConfiguration } from '../../../../../services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf';\nimport ShowTaxiComapnyLogo from '../TemporaryReservation/ShowTaxiComapnyLogo';\nimport { changeLang, Lang } from '../../../../../states/query';\nimport { useTranslation } from 'react-i18next';\nimport { getSCCkickType } from '../TemporaryReservation/Form/useForm';\nimport { parseFromyyyyMMddHHmm, toLuxonDateTime } from '../../../../../utils/luxonUtil';\n\nconst useStyles = makeStyles(() => ({\n forms: {\n marginBottom: \"5px\"\n },\n notes: {\n color: '#ff0000',\n fontSize: '0.75em'\n },\n tableLeft: {\n backgroundColor: \"#000066\",\n color: \"#FFF\",\n fontSize: '0.75rem',\n border: 'solid 1px #000',\n padding: '0.5rem 0'\n },\n tableRight: {\n fontSize: '0.75rem',\n border: 'solid 1px #000',\n padding: '0.5rem 5px',\n },\n tableFlex: {\n display: 'flex',\n alignItems: 'center',\n },\n formControl: {\n display: 'flex',\n fontSize: '0.5rem',\n flexDirection: 'row',\n margin: 'auto'\n },\n date: {\n wordBreak: 'keep-all',\n display: 'flex'\n },\n timeSelect: {\n height: '1rem',\n width: '3.0rem',\n fontSize: '0.75rem'\n },\n mailForm: {\n alignItems: 'baseline',\n padding: '0 5px'\n },\n mailText: {\n fontSize: '0.75rem'\n },\n disableMaileTaxt: {\n fontSize: '0.75rem',\n background: '#cccccc'\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n textAlign: 'center',\n width: '100%',\n height: '48px',\n margin: '16px 0',\n },\n itemName: {\n color: \"#ffffff\",\n fontSize: \"0.75rem\",\n },\n text: {\n color: \"#000000\",\n fontSize: \"0.75rem\",\n },\n validationAlert: {\n marginTop: \"5px\",\n padding: \"5px\",\n },\n costNotice: {\n color: '#f44336',\n textAlign: 'center'\n },\n imgContainer: {\n alignItems: 'flex-start',\n },\n easternLogo: {\n margin: '10px 0px',\n width: '100%',\n maxHeight: '156px',\n },\n link: {\n textDecoration: 'underline'\n }\n}));\n\n/** 背景色を黄色ã€ãƒ©ãƒ™ãƒ«è‰²ã‚’é»’ã«ã—ãŸãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst YellowButton = withStyles({\n root: {\n backgroundColor: \"#FDB50A\",\n },\n label: {\n color: \"#0f0f0f\",\n },\n})(Button);\n\n\n/** äºˆç´„æƒ…å ±ã®ã†ã¡ã€è·é›¢ãƒ»æ‰€è¦æ™‚間・金é¡ã‚’表示ã™ã‚‹éƒ¨åˆ†ã®æ–‡å—列。 */\nexport const reservationTransferInfo = (reservationLabels: ReservationLabels) => {\n const distanceLabel = reservationLabels.distanceLabel;\n const timeLabel = reservationLabels.durationLabel;\n const fareLabel = reservationLabels.fareLabel;\n return `${distanceLabel} ${timeLabel} ${fareLabel}`\n}\n\ninterface Props {\n /** ä»®äºˆç´„æƒ…å ±ã€‚ */\n reservation?: ReservationResponse,\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã€‚ */\n code: string,\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ãƒˆãƒ¼ã‚¯ãƒ³ã€‚ */\n token: string,\n /** ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ãƒ¡ã‚¿æƒ…å ± */\n taxiCompanyConf: TaxiCompanyConfiguration,\n /** ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾æƒ…å ± */\n taxiCompany: TaxiCompanyList\n}\n\n/** 空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼ã®æœ¬äºˆç´„ç”»é¢ã®ãƒ•ã‚©ãƒ¼ãƒ 部分ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const AirportTransferTaxi: React.FC<Props> = (props: Props) => {\n /** 実行環境を判別ã™ã‚‹ãŸã‚ã®ç’°å¢ƒå¤‰æ•°ã€‚ */\n const env = process.env['REACT_APP_STAGE_ENV'] || '';\n const classes = useStyles();\n const dispatch = useDispatch();\n const history = useHistory();\n const { i18n, t } = useTranslation();\n const isMobileSize = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down('sm')\n );\n\n /** PDFã§åˆ©ç”¨ã™ã‚‹HOSTã®ä¸€è¦§ */\n const PDF_HOST_LIST = {\n stg: \"https://ana-maas-staging.val.jp\",\n prod: \"https://ana-maas.val.jp\"\n }\n\n /** PDFã§åˆ©ç”¨ã™ã‚‹HOST */\n const PDF_HOST = process.env['REACT_APP_STAGE_ENV'] === 'master'? PDF_HOST_LIST.prod: PDF_HOST_LIST.stg;\n\n const {\n requestCount, setRequestCount,\n isFailed, setIsFailed,\n isRequiredRetry, setIsRequiredRetry,\n isUnavalableEmail, setIsUnavalableEmail,\n isInvalidInput, setIsInvalidInput,\n lastName, setLastName,\n firstName, setFirstName,\n lastNameKana, setLastNameKana,\n firstNameKana, setFirstNameKana,\n placard, setPlacard,\n carType, setCarType,\n adultNum, onChangeAdultNum,\n childNum, onChangeChildNum,\n carNum, onChangeCarNum,\n phoneNumber, setPhoneNumber,\n suitcase, onChangeSuitcase,\n maxSuitcase,\n golfBag, onChangedGolfBag, maxGolfBag,\n otherBag, onChangeOtherBag,\n payment, setPayment,\n receiptAddress, setReceiptAddress,\n remarks, setRemarks,\n operatorMailaddress, setOperatorMailaddress,\n acmMileageNumber, setAcmMileageNumber,\n reservationFare, setReservationFare,\n reservationLabels, setReservationLabels,\n setMaxSuitcasePerUnit, setMaxGolfBagPerUnit,\n setmaxSuitcase, setMaxGolfBag,\n mailUndeliveredProblemReproduction, setMailUndeliveredProblemReproduction\n } = useForm();\n\n // ãƒãƒªãƒ‡ãƒ¼ã‚·ãƒ§ãƒ³ã§åˆ©ç”¨ã™ã‚‹å„フラグã®State。\n // 入力ã•ã‚ŒãŸå€¤ãŒé©åˆ‡ã§ã¯ãªã„å ´åˆã€‚\n const [isInvalidLastName, setIsInvalidLastName] = useState(false);\n const [isInvalidFirstName, setIsInvalidFirstName] = useState(false);\n const [isInvalidLastNameKana, setIsInvalidLastNameKana] = useState(false);\n const [isInvalidFirstNameKana, setIsInvalidFirstNameKana] = useState(false);\n const [isInvalidPhoneNumber, setIsInvalidPhoneNumber] = useState(false);\n // é ˜åŽæ›¸ã§ä½¿ç”¨ã™ã‚‹æ–‡å—列ãƒã‚§ãƒƒã‚¯ï¼ˆç¾åœ¨ã¯ãƒã‚§ãƒƒã‚¯ãªã—)\n // const [isInvalidReceiptAddress, setIsInvalidReceiptAddress] = useState(false);\n const [isInvalidOperatorMailaddress, setIsInvalidOperatorMailaddress] = useState(false);\n const [isInvalidACMNumber, setIsInvalidACMNumber] = useState(false);\n\n // 入力ã•ã‚ŒãŸå€¤ã®ã†ã¡ã€å¿…é ˆé …ç›®ãŒæœªè¨å®šã§ã‚ã‚‹ã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n const [isEmptyLastName, setIsEmptyLastName] = useState(false);\n const [isEmptyFirstName, setIsEmptyFirstName] = useState(false);\n const [isEmptyLastNameKana, setIsEmptyLastNameKana] = useState(false);\n const [isEmptyFirstNameKana, setIsEmptyFirstNameKana] = useState(false);\n const [isEmptyPhoneNumber, setIsEmptyPhoneNumber] = useState(false);\n\n /** プラカードã®é …ç›®ã§å—数制é™ã‚’越ãˆã¦ã„る(51æ–‡å—以上)ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isTooLongPlacard, setIsTooLongPlacard] = useState(false);\n\n /** 備考ã¯500æ–‡å—以内ã‹ã‚’表ã™ãƒ•ãƒ©ã‚° */\n const [isTooLongRemarks, setInTooLongRemarks] = useState(false);\n\n /** ä»®äºˆç´„æƒ…å ±ã€‚ */\n const reservation = props.reservation;\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã€‚ */\n const code = props.code;\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ãƒˆãƒ¼ã‚¯ãƒ³ã€‚ */\n const token = props.token;\n /** 空港ç€ã®é€è¿Žãƒ‘ターンã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isToAirport = reservation?.flight?.isDeparture;\n /** 車種ãŒå¾©æ•°ã‹ã¤è»Šç¨®ã«ã‚ˆã£ã¦é‡‘é¡ãŒç•°ãªã‚‹å ´åˆã®æ³¨é‡ˆã‚’表示ã™ã‚‹ã‹ */\n const isShowNotesByDifferenceOfTariffs: boolean = (()=>{\n const tariffs = props.reservation?.transferInfo?.tariffs;\n if(!tariffs) {\n return false;\n }\n /** 車種ãŒ1ã¤ã ã‘ã®ã¨ãã«ã¯è¡¨ç¤ºã—ãªã„ */\n if(Object.keys(tariffs).length < 2) {\n return false;\n }\n /** 車種ã”ã¨ã®æ–™é‡‘一覧 */\n const fares = Object.keys(tariffs).map((x)=>{\n return tariffs[x].fare?.value;\n })\n // é‡è¤‡ã‚’排除ã—ãŸä¸Šã§æ–™é‡‘種類ãŒ2種類以上ã®ã¨ãã«ã¯è¡¨ç¤ºã™ã‚‹\n return Array.from(new Set(fares)).length > 1;\n })()\n /** é·ç§»å…ˆGoogleMapURL */\n const setGoogleMapURL = (latlng: string = \"\", lang: Lang) => {\n if(lang === Lang.ja) {\n return `https://www.google.co.jp/maps?q=${latlng}`;\n }\n return `https://www.google.com/maps?q=${latlng}`;\n }\n\n const airportNoteLabel = t('taxi:detail_meeting_point_infomation');\n\n // çµæžœç”»é¢ã‹ã‚‰ã®çµŒç”±ã§æ¥ãŸã‹åˆ¤å®š\n // airport_access: 空港アクセスナビã‹ã‚‰æ¥ãŸã¨åˆ¤å®š\n // chatan: タクシー会社ãŒé‚£è¦‡ãƒã‚¤ãƒ¤ãƒ¼ã®å ´åˆã®ã¿ã€åŒ—è°·MaaSサイトã‹ã‚‰æ¥ãŸã¨åˆ¤å®šã€‚\n // ãれ以外: ASWã‹ã‚‰æ¥ãŸã¨åˆ¤å®šï¼ˆå®Ÿéš›ã«ã¯ referrer=asw ã§é£›ã‚“ã§ãる)\n const clickName = (()=>{\n const scClicks = props.taxiCompanyConf?.scClick.reservation;\n const clickType = getSCCkickType(props.reservation?.referrer);\n if(!scClicks) {\n return '';\n }\n return scClicks[clickType] || scClicks?.asw;\n })();\n\n /** 表示制御用ã®UIæƒ…å ± */\n const ui = props.taxiCompanyConf.ui;\n\n /** åˆå›žèªã¿è¾¼ã¿æ™‚ã®ã¿å‡¦ç† */\n React.useEffect(() => {\n /** uiよりスーツケースã®æœ€å¤§æ•°ã‚’セットã™ã‚‹ */\n const suitcaseObj = ui.bags.find((x)=> x.id === 'suitcase');\n if(suitcaseObj && suitcaseObj.maxQuantity) {\n setMaxSuitcasePerUnit(suitcaseObj.maxQuantity);\n // スーツケースã®å€‹æ•°ã®æœ€å¤§å€¤ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setmaxSuitcase(suitcaseObj.maxQuantity);\n }\n /** uiよりゴルフãƒãƒƒã‚°ã®æœ€å¤§æ•°ã‚’セットã™ã‚‹ */\n const golfBagObj = ui.bags.find((x)=> x.id === 'golfBag');\n if(golfBagObj && golfBagObj.maxQuantity) {\n setMaxGolfBagPerUnit(golfBagObj.maxQuantity);\n // スーツケースã®å€‹æ•°ã®æœ€å¤§å€¤ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setMaxGolfBag(golfBagObj.maxQuantity);\n }\n }, []);\n\n /** タクシー会社ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚ */\n const onChangedOperatorMailaddress = (value: string) => {\n setOperatorMailaddress(value);\n }\n\n const lastNameChange = (value: string) => {\n setLastName(value);\n }\n\n const firstNameChange = (value: string) => {\n setFirstName(value);\n }\n\n /**\n * 全角カナã®åå—ã®é …ç›®ãŒæ›´æ–°ã•ã‚ŒãŸæ™‚ã®å‡¦ç†ã€‚\n * @param value テã‚ストボックスã§è¨å®šã•ã‚ŒãŸå€¤ã€‚\n */\n const onChangedLastNameKana = (value: string) => {\n setLastNameKana(value);\n }\n\n /**\n * 全角カナã®åå‰ã®é …ç›®ãŒæ›´æ–°ã•ã‚ŒãŸæ™‚ã®å‡¦ç†ã€‚\n * @param value テã‚ストボックスã§è¨å®šã•ã‚ŒãŸå€¤ã€‚\n */\n const onChangedFirstNameKana = (value: string) => {\n setFirstNameKana(value);\n }\n\n const phoneNumberChange = (value: string) => {\n setPhoneNumber(value);\n }\n\n const paymentChange = (value: string) => {\n setPayment(value);\n }\n\n const receiptAddressChange = (value: string) => {\n setReceiptAddress(value);\n }\n\n const remarksChange = (value: string) => {\n setRemarks(value)\n }\n\n /** プラカードã®é …ç›®ã®å€¤ãŒæ›´æ–°ã•ã‚ŒãŸæ™‚ã®å‡¦ç†ã€‚ */\n const onChangedPlacard = (value: string) => {\n setPlacard(value);\n }\n\n /** 「åã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextLastName = () => {\n if (isEmptyLastName) { return t('taxi:warning_empty_lastname'); }\n if (isInvalidLastName) { return t('taxi:warning_invalid_lastname'); }\n }\n\n /** 「姓ã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextFirstName = () => {\n if (isEmptyFirstName) { return t('taxi:warning_empty_firstname'); }\n if (isInvalidFirstName) { return t('taxi:warning_invalid_firstname'); }\n }\n\n /** 「メイã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextLastNameKana = () => {\n if (isEmptyLastNameKana) { return \"セイãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“\"; }\n if (isInvalidLastNameKana) { return \"セイã¯ã‚«ã‚¿ã‚«ãƒŠã§å…¥åŠ›ã—ã¦ãã ã•ã„\"; }\n }\n\n /** 「セイã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextFirstNameKana = () => {\n if (isEmptyFirstNameKana) { return \"メイãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“\" }\n if (isInvalidFirstNameKana) { return \"メイã¯ã‚«ã‚¿ã‚«ãƒŠã§å…¥åŠ›ã—ã¦ãã ã•ã„\"; }\n }\n\n /** 「æºå¸¯é›»è©±ç•ªå·ã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextPhoneNumber = () => {\n if (isEmptyPhoneNumber) { return t('taxi:warning_empty_phone_number'); }\n if (isInvalidPhoneNumber) { return t('taxi:warning_invalid_phone_number'); }\n }\n\n /** 「プラカードã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextPlacard = () => {\n if (isTooLongPlacard) { return t('taxi:warning_too_long_placard'); }\n }\n\n /** 「プラカードã€ã®æ¬„ã®ãƒ˜ãƒ«ãƒ‘ーテã‚ストをフラグã«å¿œã˜ã¦å–å¾—ã™ã‚‹ã€‚ */\n const getHelperTextRemarks = () => {\n if (isTooLongRemarks) { return t('taxi:warning_too_long_remarks'); }\n }\n\n /** è‡ªå‹•è»Šã‚¿ã‚¤ãƒ—ã‚ˆã‚Šæ–™é‡‘ãƒ»ãƒ©ãƒ™ãƒ«æƒ…å ±ã‚’æ›´æ–°ã™ã‚‹ */\n const setFareAndLabelsByCarType = (carType: string) => {\n const transferInfo = props?.reservation?.transferInfo;\n if(transferInfo && transferInfo.tariffs) {\n const fare = transferInfo.tariffs[carType]?.fare;\n if(fare) {\n setReservationFare(fare);\n }\n const labels = transferInfo.tariffs[carType]?.labels;\n if(labels) {\n setReservationLabels(labels);\n }\n }\n }\n\n /** 入力フォームã§è¨å®šã•ã‚ŒãŸå„é …ç›®ã®æ¤œè¨¼ã‚’ã™ã‚‹ã€‚ */\n const validate = async() => {\n const isLangJa = i18n.language === 'ja'\n /** 「åã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœã€‚ */\n const resultIsEmptyLastName = lastName === \"\";\n /** 「姓ã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœã€‚ */\n const resultIsEmptyFirstName = firstName === \"\";\n /** 「メイã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœï¼ˆæ—¥æœ¬èªžã®ã¿ï¼‰ */\n const resultIsEmptyLastNameKana = lastNameKana === \"\" && isLangJa;\n /** 「セイã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœï¼ˆæ—¥æœ¬èªžã®ã¿ï¼‰ */\n const resultIsEmptyFirstNameKana = firstNameKana === \"\" && isLangJa;\n /** 「æºå¸¯é›»è©±ç•ªå·ã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœã€‚ */\n const resultIsEmptyPhoneNumber = phoneNumber === \"\";\n /** 「æºå¸¯é›»è©±ç•ªå·ã€ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯çµæžœã€‚ */\n const resultIsEmptyACMNumber = acmMileageNumber === \"\";\n\n /** 「åã€ã®å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidLastName = (!resultIsEmptyLastName && !isLetter(lastName));\n /** 「姓ã€ã®å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidFirstName = (!resultIsEmptyFirstName && !isLetter(firstName));\n /** 「メイã€ã®å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidLastNameKana = isLangJa && (!resultIsEmptyLastNameKana && !isFullWidthKana(lastNameKana));\n /** 「セイã€ã®å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidFirstNameKana = isLangJa && (!resultIsEmptyFirstNameKana && !isFullWidthKana(firstNameKana));\n /** 「æºå¸¯é›»è©±ç•ªå·ã€å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidPhoneNumber = (!resultIsEmptyPhoneNumber && !isNumber(phoneNumber));\n /** 「ACM番å·ã€å€¤ã®ãƒã‚§ãƒƒã‚¯çµæžœã€‚(空白ã®å ´åˆã¯é™¤ã。) */\n const resultIsInvalidACMNumber = (!resultIsEmptyACMNumber && !isACMNumber(acmMileageNumber))\n\n /** プラカードã®é …ç›®ã®æ¤œè¨¼çµæžœã€‚ */\n // ä»»æ„é …ç›®ã§ã‚ã‚‹ãŸã‚ã€è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿å—数制é™ï¼ˆ50æ–‡å—以下ã§ã‚ã‚‹ã‹ï¼‰ã‚’検証ã™ã‚‹ã€‚\n const resultIsTooLongPlacard = (placard !== \"\" && placard.length > 50);\n\n /** 備考ã®é …ç›®ã®æ¤œè¨¼çµæžœã€‚ */\n // ä»»æ„é …ç›®ã§ã‚ã‚‹ãŸã‚ã€è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿å—数制é™ï¼ˆ500æ–‡å—以下ã§ã‚ã‚‹ã‹ï¼‰ã‚’検証ã™ã‚‹ã€‚\n const resultIsTooLongRemarks = (remarks !== \"\" && remarks.length > 500);\n\n /** é ˜åŽæ›¸å®›åã®é …ç›®ã®æ¤œè¨¼çµæžœã€‚ */\n // ä»»æ„é …ç›®ã§ã‚ã‚‹ãŸã‚ã€è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿å€¤ã‚’検証ã™ã‚‹ã€‚\n // ç¾åœ¨ã¯é ˜åŽæ›¸å®›åã®æ¤œè¨¼ã¯è¡Œã‚ãªã„\n // const resultIsInvalidReceiptAddress = (receiptAddress !== \"\" && !isLetterWithSpace(receiptAddress));\n\n /** タクシー会社ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æ¤œè¨¼çµæžœã€‚*/\n // ä»»æ„é …ç›®ã§ã‚ã‚‹ãŸã‚ã€æ–‡å—列ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿å€¤ã‚’検証ã™ã‚‹ã€‚\n const resultIsInvalidOperatorMailaddress = (operatorMailaddress !== \"\" && !isEmail(operatorMailaddress));\n\n // å¿…é ˆé …ç›®ã®ç©ºç™½ãƒã‚§ãƒƒã‚¯ã®æ¤œè¨¼çµæžœã‚’Stateã«ã‚»ãƒƒãƒˆã™ã‚‹ã€‚\n setIsEmptyLastName(resultIsEmptyLastName);\n setIsEmptyFirstName(resultIsEmptyFirstName);\n setIsEmptyLastNameKana(resultIsEmptyLastNameKana);\n setIsEmptyFirstNameKana(resultIsEmptyFirstNameKana);\n setIsEmptyPhoneNumber(resultIsEmptyPhoneNumber);\n\n // 代表者æ°åã®æ¤œè¨¼çµæžœã‚’Stateã«ã‚»ãƒƒãƒˆã™ã‚‹ã€‚\n setIsInvalidLastName(resultIsInvalidLastName);\n setIsInvalidFirstName(resultIsInvalidFirstName);\n\n // 代表者æ°å(全角カナ)ã§ã®æ°åã®æ¤œè¨¼çµæžœã‚’Stateã«ã‚»ãƒƒãƒˆã™ã‚‹ã€‚\n setIsInvalidLastNameKana(resultIsInvalidLastNameKana);\n setIsInvalidFirstNameKana(resultIsInvalidFirstNameKana);\n\n // 電話番å·ã®æ¤œè¨¼ã€‚\n setIsInvalidPhoneNumber(resultIsInvalidPhoneNumber);\n\n // ACM番å·ã®æ¤œè¨¼\n setIsInvalidACMNumber(resultIsInvalidACMNumber);\n\n // プラカードã®é …ç›®ã®æ–‡å—æ•°ã®æ¤œè¨¼ã€‚\n setIsTooLongPlacard(resultIsTooLongPlacard);\n\n // 備考ã®æ–‡å—æ•°ã®æ¤œè¨¼\n setInTooLongRemarks(resultIsTooLongRemarks)\n\n // é ˜åŽæ›¸å®›åã®æ¤œè¨¼ã€‚(ç¾åœ¨ã¯ãƒã‚§ãƒƒã‚¯ãªã—)\n // setIsInvalidReceiptAddress(resultIsInvalidReceiptAddress);\n // タクシー会社ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æ¤œè¨¼ã€‚\n setIsInvalidOperatorMailaddress(resultIsInvalidOperatorMailaddress);\n\n // 上記ã®å„é …ç›®ã‚’æ¤œè¨¼ã—ãŸçµæžœã®ã†ã¡ã€1件以上true(検証を通らãªã‹ã£ãŸé …目)ãŒã‚ã‚‹å ´åˆã€false(入力ã«ä¸å‚™ãŒã‚ã‚‹ã“ã¨ï¼‰ã‚’è¿”ã™ã€‚\n if (resultIsEmptyLastName || resultIsEmptyFirstName || resultIsEmptyLastNameKana ||\n resultIsEmptyFirstNameKana || resultIsEmptyPhoneNumber ||\n resultIsInvalidLastName || resultIsInvalidFirstName ||\n resultIsInvalidLastNameKana || resultIsInvalidFirstNameKana ||\n resultIsInvalidPhoneNumber || resultIsTooLongPlacard ||\n resultIsInvalidOperatorMailaddress || resultIsTooLongRemarks ) {\n return false;\n // 上記ã®å„é …ç›®ã®æ¤œè¨¼ãŒã„ãšã‚Œã‚‚false(検証を通ã£ãŸçŠ¶æ…‹ï¼‰ã§ã‚ã‚Œã°ã€true(入力ã«ä¸å‚™ãŒãªã„ã“ã¨ï¼‰ã‚’è¿”ã™ã€‚\n } else {\n return true;\n }\n }\n\n /** 予約ボタンを押ã—ãŸæ™‚ã®å‡¦ç†ã€‚ */\n const onSubmit = () => {\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オンã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(true));\n\n // ダミータクシーã®å ´åˆã«ã¯SCクリックを実行ã—ãªã„\n if(props.taxiCompany !== TaxiCompanyList.dummyVal) {\n // SCクリックã®å®Ÿè¡Œã€‚(Adobe Analytics上ã§ã®ã‚¯ãƒªãƒƒã‚¯æ•°ã®é›†è¨ˆã€‚)\n scClick(clickName);\n }\n\n // å„フラグをリセットã™ã‚‹ï¼ˆã‚ªãƒ•ã«ã™ã‚‹ï¼‰ã€‚\n // 予約処ç†ã«å¤±æ•—ã—ãŸãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n setIsFailed(false);\n // 予約処ç†ã®å†å®Ÿè¡Œã‚’促ã™ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n setIsRequiredRetry(false);\n // è¨å®šã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒåˆ©ç”¨ä¸å¯ã§ã‚るフラグをオフã«ã™ã‚‹ã€‚\n setIsUnavalableEmail(false);\n // 入力内容ã«ä¸å‚™ãŒã‚るフラグをオフã«ã™ã‚‹ã€‚\n setIsInvalidInput(false);\n\n // リクエスト回数ãŒ4回以上ã®å ´åˆã€äºˆç´„処ç†ã‚’実行ã—ãªã„。\n if (requestCount > 3) {\n // 利用ã§ããªã„メールアドレスã§ã‚るフラグをオンã«ã™ã‚‹ã€‚\n setIsUnavalableEmail(true);\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n return;\n }\n\n // ç„¡å関数内ã§å„éžåŒæœŸå‡¦ç†ã‚’呼ã³å‡ºã™ã€‚\n (async() => {\n // コード・トークンãŒæœªè¨å®šã®å ´åˆã¯APIã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ãªã„。\n if (!code || !token || code === null || token === null) {\n // èªè¾¼ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n return;\n }\n\n /** フォームã§å…¥åŠ›ã•ã‚ŒãŸã™ã¹ã¦ã®å€¤ã®æ¤œè¨¼çµæžœã€‚ */\n // ã™ã¹ã¦ã®é …ç›®ã§æ¤œè¨¼ãŒé€šã‚Œã°true(1件以上検証ãŒé€šã‚‰ãªã‹ã£ãŸå ´åˆã¯false)ã¨ãªã‚‹ã€‚\n const validatedResult = await validate();\n\n // 本番環境ã§ã¯operatorMailaddressã‚’ç„¡æ¡ä»¶ã§ç©ºæ–‡å—ã«ã—ã¾ã™\n const sendOperatorMailaddress: string = (Environment.getEnvironmentType() !== Environment.PRODUCTION && operatorMailaddress !== undefined)? operatorMailaddress: '';\n // 本番環境ã§ã¯ mailUndeliveredProblemReproduction ã‚’ç„¡æ¡ä»¶ã§undefinedã«ã—ã¾ã™\n const sendMailUndeliveredProblemReproduction: string | undefined = (Environment.getEnvironmentType() !== Environment.PRODUCTION && mailUndeliveredProblemReproduction !== '')? mailUndeliveredProblemReproduction: undefined;\n\n // フォームã®å…¥åŠ›å€¤ã®ã™ã¹ã¦ã®é …ç›®ã®æ¤œè¨¼ãŒé€šã£ã¦ã„ã‚‹å ´åˆã®ã¿ã€æœ¬äºˆç´„APIã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n if (validatedResult) {\n /** 本予約APIã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹éš›ã®ãƒ‘ラメーター。 */\n // é ˜åŽæ›¸å®›åãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€é ˜åŽæ›¸å®›åã‚’å«ã‚ãŸã‚ªãƒ–ジェクトã€\n // é ˜åŽæ›¸å®›åãŒæœªè¨å®šã®å ´åˆã¯ã€é ˜åŽæ›¸å®›åを除ã„ãŸã‚ªãƒ–ジェクトをリクエストパラメーターã¨ã™ã‚‹ã€‚\n let params: ReservationParams = {\n code: code,\n token: token,\n lastName: lastName,\n firstName: firstName,\n phoneNumber: phoneNumber,\n passengers: {\n adult: adultNum,\n child: childNum,\n },\n numOfCars: carNum,\n carType: carType,\n paymentMethod: payment,\n bags: {\n suitcase: suitcase,\n golfBag: golfBag,\n other: otherBag,\n },\n placard: placard,\n count: requestCount,\n receiptAddress: receiptAddress,\n remarks: remarks,\n operatorMailaddress: sendOperatorMailaddress,\n amc: acmMileageNumber,\n useTestAddress: sendMailUndeliveredProblemReproduction,\n // メールé€ä¿¡ã•ã‚Œãªã„よã†ã«ã™ã‚‹ãŸã‚ã«ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã‚’外ã™\n // noSendMails: true,\n // 言語パラメーター\n language: i18n.language\n }\n if(lastNameKana && firstNameKana) {\n params = {\n ...params,\n lastNameKana: lastNameKana,\n firstNameKana: firstNameKana,\n }\n }\n /** 整形後ã®ãƒ‘ラメーター。(é€ä¿¡ä¸è¦ãªé …ç›®ãŒå˜åœ¨ã™ã‚‹å ´åˆã¯å‰Šé™¤ã—ãŸçŠ¶æ…‹ã®ãƒ‘ラメーター。) */\n const modifiedParams = await modifyParams(params);\n // 本予約APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n submitReservation(modifiedParams).then((response) => {\n /** ステータスコード。 */\n const statusCode = response?.status;\n /** 予約æˆåŠŸæ™‚ã«å®Œäº†ãƒšãƒ¼ã‚¸ã«é€ã‚‹ãƒ‘ラメーター。 */\n const successParams = new URLSearchParams({\n company: props.taxiCompany,\n lang: i18n.language,\n referrer: props.reservation?.referrer ? props.reservation.referrer : '',\n });\n // ステータスコードã«å¿œã˜ã¦è¨å®šã™ã‚‹ã€‚\n switch(statusCode) {\n case 200:\n // 予約処ç†ãŒæˆåŠŸã—ãŸå ´åˆã€äºˆç´„完了ページã«é·ç§»ã™ã‚‹ã€‚\n history.push(`/booking-taxi/success?${successParams.toString()}`);\n break;\n case 400:\n // フォームã®å…¥åŠ›å†…容ã«ä¸å‚™ãŒã‚るフラグをtrueã«ã™ã‚‹ã€‚\n setIsInvalidInput(true);\n break;\n case 499:\n // 別ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¨å®šã™ã‚‹ã‚ˆã†ä¿ƒã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n setIsUnavalableEmail(true);\n break;\n case 599:\n // 予約処ç†ã®å†å®Ÿè¡Œã‚’促ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n setIsRequiredRetry(true);\n // リクエスト回数をインクリメントã™ã‚‹ã€‚\n setRequestCount(requestCount + 1);\n break;\n default:\n // 予約失敗フラグをè¨å®šã™ã‚‹ã€‚\n setIsFailed(true);\n break;\n }\n }).catch(() => {\n // 何らã‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆå‡¦ç†ã«å¤±æ•—ã—ãŸå ´åˆã¯ã€äºˆç´„失敗フラグをè¨å®šã™ã‚‹ã€‚\n setIsFailed(true);\n }).finally(() => {\n // 最後ã«ã‹ãªã‚‰ãšå‡¦ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n });\n } else {\n // フォームã®å…¥åŠ›å€¤ã®ã„ãšã‚Œã‹ã®é …ç›®ã®æ¤œè¨¼ãŒé€šã‚‰ãªã‹ã£ãŸå ´åˆã€‚\n // 処ç†ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n dispatch(switchisLoading(false));\n // 入力値ã«ä¸å‚™ãŒã‚るフラグをオンã«ã™ã‚‹ã€‚\n setIsInvalidInput(true);\n return;\n }\n })();\n }\n\n /** 本予約APIã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメーターを整形ã™ã‚‹ã€‚ */\n const modifyParams = async(params: ReservationParams) => {\n // プラカードã®å€¤ãŒæœªè¨å®šã®å ´åˆã¯ã€ãƒ‘ラメーターã®ã‚ªãƒ–ジェクトã«ã€Œå§“ã€ãƒ»ã€Œåã€ã®å€¤ã‚’è¨å®šã™ã‚‹ã€‚\n if (params.placard === \"\") { params.placard = `${lastName} ${firstName}`; }\n /** é ˜åŽæ›¸å®›åãŒæœªè¨å®šã®å ´åˆã¯ã€ãƒ‘ラメーターã®ã‚ªãƒ–ジェクトã‹ã‚‰å‰Šé™¤ã™ã‚‹ã€‚ */\n if (params.receiptAddress === \"\") { delete params.receiptAddress; }\n /** タクシー会社ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæœªè¨å®šã®å ´åˆã¯ã€ãƒ‘ラメーターã®ã‚ªãƒ–ジェクトã‹ã‚‰å‰Šé™¤ã™ã‚‹ã€‚ */\n if (params.operatorMailaddress === \"\") { delete params.operatorMailaddress; }\n /** マイレージクラブ番å·ãŒç©ºã®å ´åˆã«ã¯ã€ãƒ‘ラメーターã®ã‚ªãƒ–ジェクトã‹ã‚‰å‰Šé™¤ã™ã‚‹ */\n if (!params.amc || params.amc === \"\" ) { delete params.amc; }\n /** 備考欄ãŒç©ºã®å ´åˆã«ã¯ã€ãƒ‘ラメーターã®ã‚ªãƒ–ジェクトã‹ã‚‰å‰Šé™¤ã™ã‚‹ */\n if (!params.remarks || params.remarks === \"\" ) { delete params.remarks; }\n /** 本番環境ã§ã¯é–‹ç™ºç”¨ãƒ‘ラメーターを削除ã™ã‚‹ */\n if(process.env['REACT_APP_STAGE_ENV'] === 'master') {\n /** ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã€äºˆç´„æƒ…å ±ãªã©ã®ãƒ¡ãƒ¼ãƒ«ãŒã“ã¡ã‚‰ã«é€ä¿¡ã•ã‚Œã‚‹ã‚ˆã†ã«ãªã‚‹ã€‚*/\n delete params.operatorMailaddress;\n /** メールé€ä¿¡ãŒè¡Œã‚ãªã„よã†ã«ã™ã‚‹ãŸã‚ã®è¨å®š */\n delete params.noSendMails;\n }\n return params;\n }\n\n /** フライト時間ã®é …ç›®åã®ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const getFlightTimeLabel = () => {\n let label = t('taxi:dep_time');\n // äºˆç´„æƒ…å ±ã®é€è¿Žãƒ‘ターンãŒã€Œç©ºæ¸¯ç™ºã€ã®å ´åˆã¯ã€ã€Œåˆ°ç€æ™‚é–“ã€ã‚’è¨å®šã™ã‚‹ã€‚\n if (reservation && reservation.operation === 'dropOff') {\n label = t('taxi:arr_time');\n }\n return label;\n }\n\n /** コスト(所è¦æ™‚間・è·é›¢ï¼‰ã®ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const costLabel = () => {\n if (!reservation) { return ''; }\n return `${reservationLabels?.distanceLabel} ${reservationLabels?.durationLabel}`;\n }\n\n /** 金é¡ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const PriceLabel: React.FC = () => {\n if (!reservation || !reservationLabels.fareLabel) {\n return null;\n }\n // ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‹ã‚‰è¿”ã£ã¦ããŸæ–™é‡‘ラベルをãã®ã¾ã¾è¡¨ç¤ºã™ã‚‹\n return (\n <div>{reservationLabels.fareLabel}</div>\n )\n }\n\n /** 備考ラベルを表示ã™ã‚‹ */\n const NotesLabel: React.FC = () => {\n if (!reservation || !reservationFare.notesLabel ) {\n return null;\n }\n return (\n <span data-cy=\"booking_taxi_notes_area\">\n {reservationFare.notesLabel.map((noteLabel: string, index: number) => {\n return (\n <div key={index}>{noteLabel}</div>\n )\n })}\n </span>\n );\n }\n\n /** フォーム上ã«è¡¨ç¤ºã™ã‚‹ãŠè¿Žãˆæ—¥æ™‚。 */\n const rideDatetime = () => {\n const date = reservation ? parseFromyyyyMMddHHmm(reservation.rideDatetime) : undefined;\n const showDateFormat = date ? date.toFormat(t('taxi:yyyyMMdd')) : \"\";\n return `${showDateFormat} ${t('taxi:jst')}`;\n }\n\n const rideDate = () => {\n const date = reservation ? parseFromyyyyMMddHHmm(reservation.rideDatetime) : undefined;\n const showDateFormat = date ? date.toFormat('yyyyå¹´MM月ddæ—¥') : \"\";\n return `${showDateFormat}`;\n }\n\n /** フォーム上ã«è¡¨ç¤ºã™ã‚‹æ乗便ã®ä¾¿ç•ªå·ã€‚ */\n const flightNumber = () => {\n const flight = reservation ? reservation.flight : undefined;\n return flight ? flight.number : \"\";\n }\n\n /** フォーム上ã«è¡¨ç¤ºã™ã‚‹æ乗便ã®ç™ºç€æ™‚刻。 */\n const flightDate = () => {\n const flightDate = reservation ? parseFromyyyyMMddHHmm(reservation.flight.datetime) : undefined;\n const showDateFormat = flightDate ? flightDate.toFormat(t('taxi:yyyyMMdd')) : \"\"\n return `${showDateFormat} ${t('taxi:jst')}`;\n }\n\n /** å°æ•°ã‚’表示ã™ã‚‹äº‹æ¥è€…ã‹åˆ¤å®š */\n const isDisplayNumberOfCars = (taxiCompany: TaxiCompanyList): boolean => {\n /** éžè¡¨ç¤ºã«ã™ã‚‹äº‹æ¥è€…一覧 */\n return ![\n TaxiCompanyList.kingTaxi,\n TaxiCompanyList.sakataNo1Taxi,\n TaxiCompanyList.shokoHire,\n TaxiCompanyList.nikaho_go,\n TaxiCompanyList.airport_liner\n ].includes(taxiCompany);\n }\n\n /** 車種é¸æŠžæ¬„を表示ã™ã‚‹äº‹æ¥è€…ã‹ */\n const isDisplayCarModel = (taxiCompany: TaxiCompanyList): boolean => {\n /** éžè¡¨ç¤ºã«ã™ã‚‹äº‹æ¥è€…一覧 */\n return ![\n TaxiCompanyList.sakataNo1Taxi,\n TaxiCompanyList.shokoHire,\n TaxiCompanyList.nikaho_go,\n TaxiCompanyList.airport_liner\n ].includes(taxiCompany);\n }\n\n /** ã‚¿ã‚¯ã‚·ãƒ¼ãƒ¡ã‚¿æƒ…å ±ã‚’å…ƒã«ã—ã¦ACM(ãƒžã‚¤ãƒ¬ãƒ¼ã‚¸æƒ…å ±)入力欄を表示ã™ã‚‹ã‹ */\n const isDisplayAMCInputTable = (): boolean => {\n if(!props.taxiCompanyConf) {\n return false;\n }\n if(!props.taxiCompanyConf.supportAMC.includes(props.reservation?.airportInfo.letter || '')) {\n return false;\n }\n // ãƒ¡ã‚¿æƒ…å ±ã®ä¸ã«AMC番å·ã®ã‚µãƒãƒ¼ãƒˆæœŸé–“è¦ç´ ãŒã‚ã‚‹ã‹\n if(props.taxiCompanyConf.supportAMCPeriod && reservation){\n const rideDate = parseFromyyyyMMddHHmm(reservation.rideDatetime);\n const supportPeriod = {\n start: toLuxonDateTime(props.taxiCompanyConf.supportAMCPeriod.start),\n end: toLuxonDateTime(props.taxiCompanyConf.supportAMCPeriod.end)\n }\n return rideDate >= supportPeriod.start && rideDate <= supportPeriod.end;\n }\n // サãƒãƒ¼ãƒˆæœŸé–“è¦ç´ ãŒãªã„å ´åˆã«ã¯å¸¸ã«è¡¨ç¤ºã™ã‚‹\n // サãƒãƒ¼ãƒˆæœŸé–“è¦ç´ ãŒã‚ã‚‹å ´åˆã«ã¯ã€ä¹—車日ãŒã‚µãƒãƒ¼ãƒˆæœŸé–“内ã«ã‚ã‚‹å ´åˆã®ã¿è¡¨ç¤ºã™ã‚‹\n return true;\n }\n\n useEffect(() => {\n // åˆå›žèªã¿è¾¼ã¿æ™‚ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è»Šç¨®ã‚’è¨å®šã™ã‚‹\n const defaltCarType = ui?.carTypes?.[0]?.id;\n if(ui) {\n if(defaltCarType) {\n setCarType(defaltCarType);\n }\n // デフォルトã®æ±ºæ¸ˆæ‰‹æ®µã‚’é…ç½®ã™ã‚‹\n const defaultPayMethod = ui.paymentMethod?.[0]?.id;\n if(defaultPayMethod) {\n paymentChange(defaultPayMethod);\n }\n }\n if(props.reservation?.transferInfo) {\n const transferInfo = props.reservation.transferInfo;\n if(transferInfo.tariffConfirmed) {\n if(transferInfo.fare) {\n setReservationFare(transferInfo.fare);\n }\n if(transferInfo.labels) {\n setReservationLabels(transferInfo.labels);\n }\n }\n else {\n // ç¾åœ¨ã¯è»Šç¨®ã—ã‹æƒ³å®šã—ã¦ã„ãªã„\n if(transferInfo.tariffTypes === 'carTypes') {\n setFareAndLabelsByCarType(defaltCarType);\n }\n }\n }\n }, []);\n\n /** 庄内エリアã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ï¼Ÿ */\n const isShonaiAreaTaxi = [TaxiCompanyList.sakataNo1Taxi, TaxiCompanyList.shokoHire].includes(props.taxiCompany);\n\n /** 象潟åˆåŒã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ï¼Ÿ */\n const isKisakataTaxi = [TaxiCompanyList.airport_liner, TaxiCompanyList.nikaho_go].includes(props.taxiCompany);\n\n /**\n * å±±å£çœŒã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ï¼Ÿ\n * 対象:宇部山電タクシーã€å®‡éƒ¨æ§‹å†…タクシーã€é€šæ´¥ã‚¿ã‚¯ã‚·ãƒ¼\n */\n const isYamaguchiTaxi = [\n TaxiCompanyList.ubeSanden,\n TaxiCompanyList.ubeKounai,\n TaxiCompanyList.tsuzutaxi\n ].includes(props.taxiCompany);\n\n /**\n * ç¦å³¶çœŒã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ï¼Ÿ\n * 対象:大和自動車交通ã€åŒ—ç¦å³¶ã‚¿ã‚¯ã‚·ãƒ¼ã€ç£åŸŽã‚¿ã‚¯ã‚·ãƒ¼\n */\n const isFukushimaTaxi = [\n TaxiCompanyList.daiwaj,\n TaxiCompanyList.kitafukushima,\n TaxiCompanyList.iwakiTaxi\n ].includes(props.taxiCompany);\n\n /**\n * マイルã‚ャンペーンver1ã®ã‚¿ã‚¯ã‚·ãƒ¼ã‹ï¼Ÿ\n * 対象:ã‚ングタクシー(kingtaxi2)ã€çŸ³å·äº¤é€šã€é‚£è¦‡ãƒã‚¤ãƒ¤ãƒ¼ã€åˆ¥åºœå¤§åˆ†åˆåŒã‚¿ã‚¯ã‚·ãƒ¼ã€å®®äº¤ã‚¿ã‚¯ã‚·ãƒ¼\n */\n const isMileCampaignPhase1Taxi = [\n TaxiCompanyList.kingTaxi2,\n TaxiCompanyList.ishikawakotsu,\n TaxiCompanyList.nahahire,\n TaxiCompanyList.gotaku,\n TaxiCompanyList.miyakou\n ].includes(props.taxiCompany);\n\n /**\n * マイルã‚ャンペーンver2ã®ã‚¿ã‚¯ã‚·ãƒ¼ã‹ï¼Ÿ\n * 対象:æ—å·ä¸å¤®äº¤é€šã€å‡½é¤¨ã‚¿ã‚¯ã‚·ãƒ¼ã€ã‚¤ãƒ¼ã‚¹ã‚¿ãƒ³ï¼ˆç¾½ç”°/æˆç”°ï¼‰ã€ä¼Šäºˆé‰„タクシー(タクシー)ã€ä¼Šäºˆé‰„タクシー(ãƒã‚¤ãƒ¤ãƒ¼ï¼‰ã€åœŸé›»ãƒã‚¤ãƒ¤ãƒ¼\n */\n const isMileCampaignPhase2Taxi = [\n TaxiCompanyList.Asahikawachuuo,\n TaxiCompanyList.hakodateTaxi,\n TaxiCompanyList.limoTaxi,\n TaxiCompanyList.eastern,\n TaxiCompanyList.iyotetsutaxi,\n TaxiCompanyList.iyotetsuTaxi2,\n TaxiCompanyList.toden\n ].includes(props.taxiCompany);\n\n /** 乗車日時ãŒ12/19~03/31ã®é–“ã‹ï¼Ÿ */\n const isRideDateInMileCampaignPeriod = (): boolean => {\n if(!reservation) {\n return false;\n }\n const rideDate = parseFromyyyyMMddHHmm(reservation.rideDatetime);\n const startDate = toLuxonDateTime('2024-12-19T00:00:00.000+09:00');\n const endDate = toLuxonDateTime('2025-03-31T23:59:59.999+09:00');\n return rideDate >= startDate && rideDate <= endDate;\n }\n\n return (\n <>\n <Container maxWidth=\"md\" style={{ marginTop: '20px' }}>\n {/* 本予約ã®å‡¦ç†å®Ÿè¡Œä¸ã«è¡¨ç¤ºã™ã‚‹èªè¾¼ä¸ã‚¢ã‚¤ã‚³ãƒ³ã€‚ */}\n <LoadingModal/>\n {/* タクシーãƒã‚´è¡¨ç¤ºéƒ¨åˆ†ã€‚ */}\n <Grid container justify=\"center\">\n <Grid item className={classes.imgContainer}>\n <ShowTaxiComapnyLogo\n company={props.taxiCompany}\n lang={changeLang(i18n.language)}\n />\n </Grid>\n </Grid>\n <Typography style={{ marginTop: \"10px\" }}>\n {t('taxi:input_reserved_info')}\n </Typography>\n <Grid container justify=\"center\">\n <Grid item xs={3} className={classes.tableLeft}>\n <Typography className={classes.itemName}>\n { isToAirport ? t('taxi:pickup_location') : t('taxi:pickup_airport') }\n </Typography>\n </Grid>\n <Grid\n item\n xs={9}\n className={`${classes.tableRight} ${classes.tableFlex}`}\n data-cy={isToAirport? 'booking_taxi_pickup_location': 'booking_taxi_pickup_airport'}\n >\n <div>\n {/** To空港ã®å ´åˆã«ã¯ãŠè¿Žãˆå…ˆã®æƒ…å ±ã‚’ãƒªãƒ³ã‚¯ã§è¡¨ç¤ºã™ã‚‹ */}\n {isToAirport &&\n <div className={classes.link}>\n <Link href={setGoogleMapURL(reservation?.originLatLng, changeLang(i18n.language))} target=\"_blank\">\n {/* 出発地ã®å称。 */}\n { reservation?.originLabel }\n </Link>\n </div>\n }\n {/* From空港ã®å ´åˆæ³¨é‡ˆã‚’表示ã™ã‚‹ */}\n { !isToAirport &&\n <>\n <div>\n {/* 出発地ã®å称。 */}\n { reservation?.originLabel }\n </div>\n <div className={classes.notes}>\n {airportNoteLabel}\n </div>\n </>\n }\n </div>\n </Grid>\n <Grid item xs={3} className={classes.tableLeft}>\n { isToAirport ? t('taxi:sending_airport') : t('taxi:sending_location') }\n </Grid>\n <Grid item xs={9} className={`${classes.tableRight} ${classes.tableFlex}`}>\n <Grid className={classes.date} data-cy={isToAirport? 'booking_taxi_sending_airport': 'booking_taxi_sending_location'}>\n {/** To空港ã®å ´åˆã«ã¯ç©ºæ¸¯åã ã‘表示ã™ã‚‹ */}\n { isToAirport &&\n <div>\n {/* 出発地ã®å称。 */}\n { reservation?.destLabel }\n </div>\n }\n {/** From空港ã®å ´åˆã«ã¯ãŠé€ã‚Šå…ˆã®æƒ…å ±ã‚’ãƒªãƒ³ã‚¯ã§è¡¨ç¤ºã™ã‚‹ */}\n { !isToAirport &&\n <div className={classes.link}>\n <Link href={setGoogleMapURL(reservation?.destLatLng, changeLang(i18n.language))} target=\"_blank\">\n {/* 到ç€åœ°ã®å称。 */}\n { reservation?.destLabel }\n </Link>\n </div>\n }\n </Grid>\n </Grid>\n {/* ã”乗車日時。 */}\n {props.taxiCompany === TaxiCompanyList.sakataNo1Taxi || props.taxiCompany === TaxiCompanyList.shokoHire ? (\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n {isShonaiAreaTaxi &&\n <>\n <div>ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼</div>\n <div>ã”乗車日/接続ã™ã‚‹èˆªç©ºä¾¿</div>\n </>\n }\n {!isShonaiAreaTaxi &&\n <>\n ã”乗車日\n </>\n }\n </Grid>\n <Grid item xs={9} className={`${classes.tableRight} ${classes.tableFlex}`}>\n <Grid className={classes.date}>\n <div data-cy={\"booking_taxi_ride_date\"}>\n {rideDate()}\n {isShonaiAreaTaxi &&\n <>\n {reservation &&\n <>\n {reservation.taxiConnectFlightNumber}\n </>\n }\n {t('taxi:flight_after')+t('taxi:connect_taxi')}\n </>\n }\n </div>\n </Grid>\n </Grid>\n </>\n ) : (\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:boarding_date')}\n </Grid>\n <Grid item xs={9} className={`${classes.tableRight} ${classes.tableFlex}`}>\n <Grid className={classes.date}>\n <div data-cy={\"booking_taxi_ride_date\"}>\n {/* 仮予約時ã«è¨å®šã—ãŸä¹—車日時。 */}\n {rideDatetime()}\n {isKisakataTaxi &&\n <>\n {t('taxi:dep_taxi')}\n </>\n }\n </div>\n </Grid>\n </Grid>\n </>\n )}\n {/* ã”利用便。 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {isShonaiAreaTaxi &&\n <>\n {t('taxi:flight_number_shonai_taxi')} { getFlightTimeLabel() }\n </>\n }\n {!isShonaiAreaTaxi &&\n <>\n {t('taxi:flight_number')} { getFlightTimeLabel() }\n </>\n }\n </Grid>\n {/* æ乗便 */}\n <Grid item xs={9} className={classes.tableRight} data-cy={\"booking_taxi_flight_label\"}>\n { `${flightNumber()} ${flightDate()} ` }\n </Grid>\n {/* 代表者ã®æ°å。 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:representative_name')}\n </Grid>\n <Grid item xs={9} className={`${classes.tableRight}`}>\n <Grid container>\n <FormControl variant=\"outlined\" className={`${classes.mailForm} ${classes.tableFlex}`}>\n {t('taxi:family_name')}\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={lastName}\n onChange={(e: any) => {lastNameChange(e.target.value)}}\n error={ (isEmptyLastName || isInvalidLastName) }\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 0',\n }\n }}\n />\n { (isEmptyLastName || isInvalidLastName) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextLastName()}</Alert> }\n </FormControl>\n <FormControl variant=\"outlined\" className={`${classes.mailForm} ${classes.tableFlex}`}>\n {t('taxi:first_name')}\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={firstName}\n onChange={(e: any) => {firstNameChange(e.target.value)}}\n error={ (isEmptyFirstName || isInvalidFirstName) }\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 0',\n }\n }}\n />\n { (isEmptyFirstName || isInvalidFirstName) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextFirstName()}</Alert> }\n </FormControl>\n </Grid>\n {/** 日本語版ã®ã¿æ°åã®ã‚«ãƒŠã‚’å…¥ã‚Œã‚‹æ¬„ã‚’è¿½åŠ ã™ã‚‹ */}\n { changeLang(i18n.language) === Lang.ja &&\n <Grid container data-cy={\"booking_taxi_kana_input\"}>\n <FormControl variant=\"outlined\" className={`${classes.mailForm} ${classes.tableFlex}`}>\n セイ(全角カナ)\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={lastNameKana}\n onChange={(e: any) => {onChangedLastNameKana(e.target.value)}}\n error={ (isEmptyLastNameKana || isInvalidLastNameKana) }\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 0',\n }\n }}\n />\n { (isEmptyLastNameKana || isInvalidLastNameKana) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextLastNameKana()}</Alert> }\n </FormControl>\n <FormControl variant=\"outlined\" className={`${classes.mailForm} ${classes.tableFlex}`}>\n メイ(全角カナ)\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={firstNameKana}\n onChange={(e: any) => {onChangedFirstNameKana(e.target.value)}}\n error={ (isEmptyFirstNameKana ||isInvalidFirstNameKana) }\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 0',\n }\n }}\n />\n { (isEmptyFirstNameKana ||isInvalidFirstNameKana) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextFirstNameKana()}</Alert> }\n </FormControl>\n </Grid>\n }\n </Grid>\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:placard_name')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n {/** supportPlacardName 属性ãŒã‚ã‚‹å ´åˆã®ã¿ãƒ—ラカード欄を入力ã§ãるよã†ã«ã™ã‚‹ã€‚ */}\n {props.taxiCompanyConf && props.taxiCompanyConf.supportPlacardName &&\n <FormControl variant=\"outlined\" className={classes.mailForm}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={placard}\n onChange={(e: any) => {onChangedPlacard(e.target.value)}}\n error={ (isTooLongPlacard) }\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n { (isTooLongPlacard) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextPlacard()}</Alert> }\n <span className={classes.notes}>{t('taxi:placard_name_notice')}</span>\n </FormControl>\n }\n {/** プラカード欄(入力ä¸å¯ï¼‰ */}\n {props.taxiCompanyConf && !props.taxiCompanyConf.supportPlacardName &&\n <FormControl variant=\"outlined\" disabled={true} className={classes.mailForm}>\n <TextField\n className={classes.disableMaileTaxt}\n variant=\"outlined\"\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n disabled={true}\n />\n <span className={classes.notes}>{t('taxi:not_surrport_placard')}</span>\n </FormControl>\n }\n </Grid>\n {/* 連絡先。 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:phone_number')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\" className={classes.mailForm}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={phoneNumber}\n onChange={(e: any) => {phoneNumberChange(e.target.value)}}\n error={ (isEmptyPhoneNumber || isInvalidPhoneNumber) }\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n { (isEmptyPhoneNumber || isInvalidPhoneNumber) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextPhoneNumber()}</Alert> }\n <Typography className={classes.notes}>{t('taxi:phone_number_notice')}</Typography>\n </FormControl>\n </Grid>\n {/* 車種。 */}\n { isDisplayCarModel(props.taxiCompany) &&\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:desired_car_model')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <div data-cy={\"booking_taxi_desired_car_model\"}>\n {/** 宮交ã®å ´åˆã«ã¯ã‚¹ãƒšã‚·ãƒ£ãƒ«ãªæ³¨æ„äº‹é …ã‚’å‡ºã™ */}\n { props.taxiCompany === TaxiCompanyList.miyakou &&\n <div className={classes.notes}>\n 本フォームã§ã”予約ã„ãŸã ã‘る車種ã¯å°åž‹ã®ã¿ã¨ãªã‚Šã¾ã™ã€‚<br/>\n å°åž‹ä»¥å¤–ã‚’ã”希望ã®å ´åˆã¯ã€<br/>\n ãŠæ‰‹æ•°ã§ã™ãŒå®®äº¤ã‚¿ã‚¯ã‚·ãƒ¼ã¸ç›´æŽ¥ãŠå•ã„åˆã‚ã›ãã ã•ã„。\n </div>\n }\n <FormControl component=\"fieldset\">\n <RadioGroup aria-label=\"car-type\" name=\"car-type\" value={carType}>\n {/** é¸æŠžå¯èƒ½è»Šç¨®ã‚’ãƒ¡ã‚¿æƒ…å ±ã‚’å…ƒã«è¡¨ç¤º */}\n { ui.carTypes.map((getCarType, index)=>{\n return (\n <FormControlLabel\n value={getCarType.id}\n label={\n <Typography className={classes.text}>{getCarType.label}</Typography>\n }\n control={\n <Radio size='small' onClick={\n () => {\n setCarType(getCarType.id);\n setFareAndLabelsByCarType(getCarType.id);\n }\n }/>\n }\n key={index}\n />\n )\n }) }\n </RadioGroup>\n </FormControl>\n {/** 車種ãŒå¾©æ•°ã‹ã¤è»Šç¨®ã«ã‚ˆã£ã¦é‡‘é¡ãŒç•°ãªã‚‹å ´åˆã®æ³¨é‡ˆã‚’表示ã™ã‚‹ */}\n { isShowNotesByDifferenceOfTariffs &&\n <div className={classes.notes}>\n {t('taxi:desired_car_model_notice')}\n </div>\n }\n </div>\n </Grid>\n </>\n }\n {/* 利用人数。 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:user_num')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <div className={classes.tableFlex}>\n <div>\n {t('taxi:adult')}<br/>\n <FormControl variant=\"outlined\" className={classes.formControl} style={{marginTop: '0.3rem'}}>\n <SelectAdultNum value={adultNum} onChange={onChangeAdultNum} />\n <Typography className={classes.text}>\n {t('taxi:num')}\n </Typography>\n </FormControl>\n </div>\n <div style={{ marginLeft: '1rem' }}>\n {t('taxi:child')}<br/>\n <FormControl variant=\"outlined\" className={classes.formControl} style={{marginTop: '0.3rem'}}>\n <SelectChildrenNum value={childNum} onChange={onChangeChildNum} />\n <Typography className={classes.text}>\n {t('taxi:num')}\n </Typography>\n </FormControl>\n </div>\n </div>\n { props.taxiCompany === TaxiCompanyList.nikaho_go &&\n <div className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※幼å…ã‹ã‚‰å¤§å¦ç”Ÿã¯å¦å‰²æ–™é‡‘(1,000円)但ã—é©ç”¨æ—¥é™å®šãƒ»å…¬çš„証明書ã®æç¤ºå¿…é ˆ<br/>\n 詳ã—ãã¯ã€ã«ã‹ã»GOウェブサイト(https://www.nikaho-kanko.jp/nikahogo.html)ã«ã¦ã”確èªãã ã•ã„\n </div>\n }\n { props.taxiCompany === TaxiCompanyList.airport_liner &&\n <div className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※ç¾åœ°ã§ã®ãŠæ”¯æ‰•ã„時ã€åä¾›ã¯åŠé¡ã¨ãªã‚Šã¾ã™ã€‚\n </div>\n }\n { isShonaiAreaTaxi &&\n <div className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※ç¾åœ°ã§ã®ãŠæ”¯æ‰•ã„時ã€å°å¦ç”Ÿã¯åŠé¡ã¨ãªã‚Šã¾ã™ã€‚\n </div>\n }\n </Grid>\n {/** å°æ•°: 特定ã®äº‹æ¥è€…ã®å ´åˆã¯è¡¨ç¤ºã—ãªã„ */}\n { isDisplayNumberOfCars(props.taxiCompany) &&\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:number_of_cars')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\" className={classes.formControl}>\n <SelectCarNum value={carNum} onChange={onChangeCarNum} />\n <Typography className={classes.text}>\n {carNum > 1? t('taxi:numbers_car'): t('taxi:number_car')}\n </Typography>\n </FormControl>\n </Grid>\n </>\n }\n {/** 大ããªãŠè·ç‰© */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:big_baggage')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n {/** é¸æŠžå¯èƒ½è·ç‰©ã‚’ãƒ¡ã‚¿æƒ…å ±ã‚’å…ƒã«è¡¨ç¤º */}\n { ui.bags.map((bag, index)=>{\n const SetSelectArea: React.FC = () => {\n switch(bag.id) {\n case 'suitcase':\n return (\n <SelectSuitcase\n value={suitcase}\n onChange={onChangeSuitcase}\n maxNum={maxSuitcase}\n />\n );\n case 'golfBag':\n return (\n <SelectGolfBag\n value={golfBag}\n onChange={onChangedGolfBag}\n maxNum={maxGolfBag}\n />\n );\n default:\n return (\n <SelectOtherBag\n value={otherBag}\n maxOtherBag={bag.maxQuantity || 9}\n onChange={onChangeOtherBag}\n />\n )\n }\n }\n return (\n <FormControl variant=\"outlined\" className={classes.formControl} key={index}>\n <Typography className={classes.text} style={{marginRight: '0.3rem'}}>\n {bag.label}\n </Typography>\n <SetSelectArea/>\n <Typography className={classes.text} style={{marginRight: '0.3rem'}}>\n {t('taxi:number_bag')}\n </Typography>\n </FormControl>\n )\n }) }\n <div className={classes.notes}>\n {/** é¸ã¹ã‚‹è»Šç¨®ãŒ1種類ã®ã¨ãã ã‘ã“ã¡ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ */}\n { props.taxiCompanyConf?.ui?.carTypes && Object.keys(props.taxiCompanyConf.ui.carTypes).length === 1 &&\n <>\n {t('taxi:bigbag_notice_1')}<br/>\n </>\n }\n {t('taxi:bigbag_notice_2')}\n </div>\n </Grid>\n {/** ãŠæ”¯æ‰•ã„方法 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:pay_method')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight} data-cy={\"booking_taxi_payment\"}>\n <FormControl component=\"fieldset\">\n <RadioGroup\n aria-label=\"payment\"\n name=\"payment\"\n value={payment}\n onChange={(e: any) => {paymentChange(e.target.value)}}\n >\n {/** é¸æŠžå¯èƒ½æ±ºæ¸ˆæ‰‹æ®µã‚’ãƒ¡ã‚¿æƒ…å ±ã‚’å…ƒã«è¡¨ç¤º */}\n { ui.paymentMethod.map((pay, index) => {\n return (\n <FormControlLabel\n value={pay.id}\n control={<Radio />}\n label={\n <Typography className={classes.text}>{pay.label}</Typography>\n }\n key={index}\n />\n )\n })}\n </RadioGroup>\n </FormControl>\n <Typography className={classes.notes}>\n {t('taxi:pay_notice')}\n </Typography>\n </Grid>\n {/* ã‚¿ã‚¯ã‚·ãƒ¼ãƒ¡ã‚¿æƒ…å ±ã‚’å…ƒã«ã—ã¦ã€ACM(ãƒžã‚¤ãƒ¬ãƒ¼ã‚¸æƒ…å ±)ãŒtrueã®æ™‚ã«ã¯å…¥åŠ›æ¬„ã‚’è¨ã‘ã‚‹ */}\n { isDisplayAMCInputTable() &&\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:ana_mileage_club_number')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight} data-cy={\"booking_taxi_mileage_club_area\"}>\n <FormControl variant=\"outlined\" className={classes.mailForm}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={acmMileageNumber}\n onChange={(e: any) => {setAcmMileageNumber(e.target.value)}}\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n error={isInvalidACMNumber}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n { isYamaguchiTaxi &&\n <Typography className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※2024å¹´8月1日~2025å¹´1月31ã¾ã§ã®ã”利用ã§ã„ã¾ã ã‘マイルã‚ャンペーン実施ä¸ï¼è©³ç´°ã¯\n <Link\n href={`${PDF_HOST}/AM-991/mileage-campaign-1.pdf`}\n target=\"_blank\"\n className={classes.link}\n >\n ã“ã¡ã‚‰\n </Link>\n ã«ã¦ã”確èªãã ã•ã„\n </Typography>\n }\n { props.taxiCompany === TaxiCompanyList.hinomaru&&\n <Typography className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※2024å¹´11月1日~2025å¹´3月31ã¾ã§ã®ã”利用ã§ã„ã¾ã ã‘マイルã‚ャンペーン実施ä¸ï¼è©³ç´°ã¯\n <Link\n href={`${PDF_HOST}/AM-991/mileage-campaign-2.pdf`}\n target=\"_blank\"\n className={classes.link}\n >\n ã“ã¡ã‚‰\n </Link>\n ã«ã¦ã”確èªãã ã•ã„\n </Typography>\n }\n { isFukushimaTaxi &&\n <Typography className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※2024å¹´12月1日~2025å¹´3月31ã¾ã§ã®ã”利用ã§ã„ã¾ã ã‘マイルã‚ャンペーン実施ä¸ï¼è©³ç´°ã¯\n <Link\n href={`${PDF_HOST}/AM-991/mileage-campaign-3.pdf`}\n target=\"_blank\"\n className={classes.link}\n >\n ã“ã¡ã‚‰\n </Link>\n ã«ã¦ã”確èªãã ã•ã„\n </Typography>\n }\n { isMileCampaignPhase1Taxi &&\n <Typography className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※2024å¹´12月19日~2025å¹´3月31ã¾ã§ã®ã”利用ã§ã„ã¾ã ã‘マイルã‚ャンペーン実施ä¸ï¼è©³ç´°ã¯\n <Link\n href={`${PDF_HOST}/AM-991/mileage-campaign-4.pdf`}\n target=\"_blank\"\n className={classes.link}\n >\n ã“ã¡ã‚‰\n </Link>\n ã«ã¦ã”確èªãã ã•ã„\n </Typography>\n }\n { (isMileCampaignPhase2Taxi && isRideDateInMileCampaignPeriod()) &&\n <Typography className={classes.notes} style={{ marginTop: '0.3rem'}}>\n ※2024å¹´12月19日~2025å¹´3月31ã¾ã§ã®ã”利用ã§ãƒ€ãƒ–ルマイルã‚ャンペーン実施ä¸ï¼è©³ç´°ã¯\n <Link\n href={`${PDF_HOST}/AM-991/mileage-campaign-4.pdf`}\n target=\"_blank\"\n className={classes.link}\n >\n ã“ã¡ã‚‰\n </Link>\n ã«ã¦ã”確èªãã ã•ã„\n </Typography>\n }\n {/* ANAマイレージクラブ会員番å·ã«æ•°å—以外ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã®è¦å‘Šã€‚ */}\n { isInvalidACMNumber &&\n <Alert severity=\"error\" className={classes.validationAlert}>{t('taxi:ana_mileage_club_notice')}</Alert>\n }\n </FormControl>\n </Grid>\n </>\n }\n {/** é ˜åŽæ›¸å®›å */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:receipt_name')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\" className={classes.mailForm}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={receiptAddress}\n onChange={(e: any) => {receiptAddressChange(e.target.value)}}\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n </FormControl>\n </Grid>\n {/** 備考 */}\n <Grid item xs={3} className={classes.tableLeft}>\n {t('taxi:remarks')}<br/>\n {t('taxi:remarks_notice')}\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\" className={classes.mailForm} style={{ width: '70%' }}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={remarks}\n error={isTooLongRemarks}\n onChange={(e: any) => {remarksChange(e.target.value)}}\n fullWidth\n multiline\n rows={2}\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n {/* エアãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒŠãƒ¼ã®å ´åˆ*/}\n { props.taxiCompany === TaxiCompanyList.airport_liner &&\n <Typography className={classes.notes}>\n ※車ã„ã™ã”利用ã®å ´åˆã¯ã€ãã®æ—¨ã”記入ãã ã•ã„\n </Typography>\n }\n\n { (isTooLongRemarks) &&\n <Alert severity=\"error\" className={classes.validationAlert}>{getHelperTextRemarks()}</Alert>\n }\n </FormControl>\n </Grid>\n {/* dev, staging環境ã§ã®ã¿ã€ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¨å®šã§ãる欄を表示ã™ã‚‹ã€‚ */}\n { (Environment.isDev(env) || Environment.isStaging(env)) &&\n <>\n <Grid item xs={3} className={classes.tableLeft}>\n タクシー会社ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\" className={classes.mailForm} style={{ width: '70%' }}>\n <TextField\n className={classes.mailText}\n variant=\"outlined\"\n value={operatorMailaddress}\n onChange={(e: any) => {onChangedOperatorMailaddress(e.target.value)}}\n error={ isInvalidOperatorMailaddress }\n helperText={ isInvalidOperatorMailaddress && \"ä¸æ£ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚\"}\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '0.75rem'\n }\n }}\n FormHelperTextProps={{\n style: {\n margin: '8px 0 8px',\n }\n }}\n />\n <Typography variant=\"caption\">\n ※開発・ステージング環境ã®ã¿è¡¨ç¤º<br/>\n äºˆç´„æƒ…å ±ãªã©ã®ãƒ¡ãƒ¼ãƒ«ãŒæŒ‡å®šã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«é€ä¿¡ã•ã‚Œã‚‹ã€‚\n </Typography>\n </FormControl>\n </Grid>\n <Grid item xs={3} className={classes.tableLeft}>\n タクシーメール未é€ä¿¡ã¸ã®å¯¾å¿œ\n </Grid>\n <Grid item xs={9} className={classes.tableRight}>\n <FormControl variant=\"outlined\">\n <Select\n onChange={(e: any) => {\n setMailUndeliveredProblemReproduction(e.target.value)\n }}\n value={mailUndeliveredProblemReproduction}\n >\n <MenuItem value={\"\"}>ãªã—</MenuItem>\n <MenuItem value={\"bounce\"}>ãƒã‚¦ãƒ³ã‚¹(Bounce)</MenuItem>\n <MenuItem value={\"complaint\"}>苦情(Complaint)</MenuItem>\n <MenuItem value={\"suppressionlist\"}>suppressionlist</MenuItem>\n </Select>\n <Typography variant=\"caption\">\n bounce: メールãŒãƒã‚¦ãƒ³ã‚¹ã•ã‚ŒãŸçŠ¶æ…‹ã‚’å†ç¾<br/>\n complaint: メールå—信者ãŒã€Œè¿·æƒ‘メールã€ã¨ã—ã¦ãƒ—ãƒãƒã‚¤ãƒ€ã«å ±å‘Šã—ãŸçŠ¶æ…‹ã§ã€ãƒ—ãƒãƒã‚¤ãƒ€ãŒå—ä¿¡ã‚’æ‹’å¦ã—ãŸçŠ¶æ…‹ã‚’å†ç¾<br/>\n suppressionlist: 当該アドレスã«ä¸ç€ãŒé »ç™ºã—ã¦ã€SESãŒé€ä¿¡ã—ãªã„リストã«ç™»éŒ²ã•ã‚ŒãŸçŠ¶æ…‹ã‚’å†ç¾ï¼ˆæŒ™å‹•çš„ã«ã¯bounceã¨åŒã˜ï¼‰<br/><br/>\n ※開発・ステージング環境ã®ã¿è¡¨ç¤º<br/>\n äºˆç´„æƒ…å ±ãªã©ã®ãƒ¡ãƒ¼ãƒ«ãŒæŒ‡å®šã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«é€ä¿¡ã•ã‚Œã‚‹ã€‚\n </Typography>\n </FormControl>\n </Grid>\n </>\n }\n </Grid>\n {/* 縦並ã³ã§æ–™é‡‘表示部分・予約ボタンを表示ã™ã‚‹ã€‚ */}\n <Grid container direction=\"column\">\n {/* è·é›¢ãƒ»æ™‚間・金é¡éƒ¨åˆ†ã€‚ */}\n {/* è¦ãŠå•ã„åˆã‚ã›ã®å ´åˆã€‚ */}\n { reservationFare.priceType === 'ask' && <Cost label={t('taxi:notice_amount_details')} />}\n {/* 定é¡ãƒ»ãƒ¡ãƒ¼ã‚¿ãƒ¼æ–™é‡‘ã®å ´åˆã€‚ */}\n { (reservationFare.priceType === 'fixed' || reservationFare.priceType === 'PAYG') && (\n <Cost label={\n <span data-cy=\"booking_taxi_cost_area\">\n { costLabel() }\n {/* モãƒã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼ˆç”»é¢å¹…960px未満)ã®å ´åˆã¯æ”¹è¡Œã‚’入れる。 */}\n { isMobileSize && <br /> }\n {/* デスクトップサイズ(画é¢å¹…960px以上)ã®å ´åˆã¯ç©ºç™½ã‚’入れる。 */}\n { !isMobileSize && <> </> }\n {/* 料金ラベルを表示ã™ã‚‹ */}\n <PriceLabel/>\n {/* 備考を表示ã™ã‚‹ */}\n <NotesLabel/>\n </span>\n }\n />\n )}\n {/** アラート表示ãŒã‚ã‚‹å ´åˆã«ã¯æŽ²è¼‰ã™ã‚‹ */}\n { (reservation && reservation.transferInfo?.labels?.alertLabel) && reservation.transferInfo.labels.alertLabel.map((alert: AlertLabel, index: number)=>{\n if(alert.type === 'alert') {\n const severity = \"warning\";\n return (\n <Alert severity={severity} key={index}>\n { alert.message }\n </Alert>\n )\n }\n else {\n return (\n <Grid className={classes.costNotice}>\n {alert.message}\n </Grid>\n )\n }\n })}\n\n <Grid item>\n {/* 予約ã«å¤±æ•—ã—ãŸå ´åˆã¯ãã®æ—¨ã®è¦å‘Šã‚’表示ã™ã‚‹ã€‚ */}\n { isFailed && <AlertInReservation type=\"fail\"/> }\n {/* 入力内容ã«ä¸å‚™ãŒã‚ã‚‹å ´åˆã¯ãã®æ—¨ã®è¦å‘Šã‚’表示ã™ã‚‹ã€‚ */}\n { isInvalidInput && <AlertInReservation type=\"input\"/> }\n {/* å†è©¦è¡ŒãŒå¿…è¦ãªå ´åˆã¯ãã®æ—¨ã®è¦å‘Šã‚’表示ã™ã‚‹ã€‚ */}\n { isRequiredRetry && <AlertInReservation type=\"retry\"/> }\n {/* 利用ã§ããªã„メールアドレスãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãã®æ—¨ã®è¦å‘Šã‚’表示ã™ã‚‹ã€‚ */}\n { isUnavalableEmail && <AlertInReservation type=\"email\"/> }\n </Grid>\n <Grid item>\n {/* 予約・料金確èªãªã©ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ç”¨ã®ãƒœã‚¿ãƒ³ã€‚ */}\n <YellowButton\n size=\"large\"\n variant=\"contained\"\n className={classes.button}\n endIcon={<ArrowForwardIosIcon/>}\n onClick={onSubmit}\n >\n {t('taxi:process_reservation_button')}\n </YellowButton>\n </Grid>\n {/* 注æ„äº‹é …ã€‚ */}\n <Grid item>\n <Cautions\n isMeterFare={reservationFare.fareType === 'PAYG'}\n companyDisplayName={props.taxiCompanyConf?.temporaryDisplayName || ''}\n isSupportAMC={isDisplayAMCInputTable()}\n company={props.taxiCompany}\n isReservationPage\n />\n </Grid>\n {/* å•ã„åˆã‚ã›å…ˆã€‚ */}\n <Grid item>\n <Contact\n company={props.taxiCompany}\n />\n </Grid>\n </Grid>\n </Container>\n </>\n );\n}\n\nexport default AirportTransferTaxi;\n","/* eslint react-hooks/exhaustive-deps: 0 */\n\nimport React from 'react';\nimport Cookies from 'js-cookie';\nimport Environment from '../../../../../../utils/environment';\nimport { defaultReservationFare, defaultReservationLabels, ReservationFare, ReservationLabels } from '../../../../../../services/taxi/Reservation/ReservationResponse';\n\n/**\n * 空港é€è¿Žã‚¿ã‚¯ã‚·ãƒ¼ã®æœ¬äºˆç´„ç”»é¢ã®æƒ…å ±ã«é–¢ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ フック。\n */\nexport function useForm() {\n /** リクエスト回数。 */\n const [requestCount, setRequestCount] = React.useState(1);\n /** 本予約ã«å¤±æ•—ã—ãŸã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isFailed, setIsFailed] = React.useState(false);\n /** 予約処ç†ã®å†å®Ÿè¡Œã‚’促ã™ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isRequiredRetry, setIsRequiredRetry] = React.useState(false);\n /** 利用ã§ããªã„メールアドレスãŒè¨å®šã•ã‚Œã¦ã„ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isUnavalableEmail, setIsUnavalableEmail] = React.useState(false);\n /** 入力内容ã«ä¸å‚™ãŒã‚ã‚‹ã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isInvalidInput, setIsInvalidInput] = React.useState(false);\n\n // フォームã§è¨å®šã™ã‚‹å„é …ç›®ã®å€¤ã‚’管ç†ã™ã‚‹State。\n /** 代表者æ°åã®å§“。 */\n const [lastName, setLastName] = React.useState('');\n /** 代表者æ°åã®å。 */\n const [firstName, setFirstName] = React.useState('');\n /** 代表者æ°å(全角カナ)ã®å§“。 */\n const [lastNameKana, setLastNameKana] = React.useState('');\n /** 代表者æ°å(全角カナ)ã®å。 */\n const [firstNameKana, setFirstNameKana] = React.useState('');\n /** プラカードã®é …ç›®ã§è¨å®šã™ã‚‹åå‰ã€‚(自由入力) */\n const [placard, setPlacard] = React.useState('');\n /** é¸æŠžè»Šç¨®ã€‚ */\n const [carType, setCarType] = React.useState('');\n /** 大人ã®äººæ•°ã€‚ */\n const [adultNum, setAdultNum] = React.useState(1);\n /** åä¾›ã®äººæ•°ã€‚ */\n const [childNum, setChildNum] = React.useState(0);\n /** å°æ•°ã€‚ */\n const [carNum, setCarNum] = React.useState(1);\n /** 電話番å·ã€‚ */\n const [phoneNumber, setPhoneNumber] = React.useState('');\n /** スーツケースã®å€‹æ•°ã€‚ */\n const [suitcase, setSuitcase] = React.useState(0);\n /** スーツケースã®æœ€å¤§å€‹æ•°ã€‚ */\n const [maxSuitcase, setmaxSuitcase] = React.useState(4);\n /** 車1å°ã‚ãŸã‚Šã®ã‚¹ãƒ¼ãƒ„ケースã®æœ€å¤§æ•° */\n const [maxSuitcasePerUnit, setMaxSuitcasePerUnit] = React.useState(4);\n /** ゴルフãƒãƒƒã‚°ã®å€‹æ•°ã€‚ */\n const [golfBag, setGolfBag] = React.useState(0);\n /** ゴルフãƒãƒƒã‚°ã®å€‹æ•°ã€‚ */\n const [maxGolfBag, setMaxGolfBag] = React.useState(3);\n /** 車1å°ã‚ãŸã‚Šã®ã‚´ãƒ«ãƒ•ãƒãƒƒã‚°ã®æœ€å¤§æ•° */\n const [maxGolfBagPerUnit, setMaxGolfBagPerUnit] = React.useState(3);\n /** ãã®ä»–(※車椅åãªã©)è·ç‰©ã®å€‹æ•°ã€‚ */\n const [otherBag, setOtherBag] = React.useState(0);\n /** 支払ã„方法。 */\n const [payment, setPayment] = React.useState('');\n /** é ˜åŽæ›¸å®›å。 */\n const [receiptAddress, setReceiptAddress] = React.useState('');\n /** 備考 */\n const [remarks, setRemarks] = React.useState('');\n /** æ–™é‡‘æƒ…å ± */\n const [ reservationFare, setReservationFare ] = React.useState<ReservationFare>(defaultReservationFare);\n /** å„種ラベル */\n const [ reservationLabels, setReservationLabels ] = React.useState<ReservationLabels>(defaultReservationLabels);\n /** 誤ã£ã¦å…ˆæ–¹ã«äºˆç´„完了メールãŒå±Šãã®ã‚’防æ¢ã™ã‚‹ç›®çš„ã§ã€ä»®äºˆç´„ç”»é¢ã§ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒå…¥åŠ›ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¨å®šã™ã‚‹ */\n const mailAddressCookieName = 'ana_airport_access_navi_email_address';\n // 本番以外ã§ã¯Cookieã«ä¿å˜ã•ã‚Œã¦ã„ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’呼ã³å‡ºã™\n const defaultOperatorMailaddress: string = (()=>{\n if (Environment.getEnvironmentType() !== Environment.PRODUCTION) {\n return Cookies.get(mailAddressCookieName) || '';\n }\n return '';\n })()\n /** 開発・ステージング環境ã§ã®ã¿è¨å®šå¯èƒ½ã¨ã™ã‚‹ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã—ã¦æ‰±ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã€‚ */\n const [operatorMailaddress, setOperatorMailaddress] = React.useState<string>(defaultOperatorMailaddress);\n /** 開発・ステージング環境ã§ã®ã¿è¨å®šå¯èƒ½: 事æ¥è€…用メールé…信失敗å†ç¾ */\n const [ mailUndeliveredProblemReproduction, setMailUndeliveredProblemReproduction ] = React.useState<string>('');\n /** ANAマイレージクラブ(ACM番å·ï¼‰ */\n const [acmMileageNumber, setAcmMileageNumber] = React.useState('');\n\n /** 予約処ç†ã®å®Ÿè¡Œä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [isSubmitting, switchSubmitting] = React.useState(false);\n\n /** 大人ã®äººæ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangeAdultNum = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setAdultNum(value);\n }\n\n /** åä¾›ã®äººæ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangeChildNum = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setChildNum(value);\n }\n\n /** タクシーã®å°æ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangeCarNum = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setCarNum(value);\n // å°æ•°ãŒå¤‰ã‚ã‚‹ã¨è·ç‰©ã®æœ€å¤§æ•°ãŒå¤‰ã‚ã‚‹ãŸã‚リセットã™ã‚‹ï¼ˆ0個ã«ã™ã‚‹ï¼‰ã€‚\n setSuitcase(0);\n setGolfBag(0);\n }\n\n /** スーツケースã®å€‹æ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangeSuitcase = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setSuitcase(value);\n }\n\n /** ゴルフãƒãƒƒã‚°ã®å€‹æ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangedGolfBag = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setGolfBag(value);\n }\n\n /** ãã®ä»–è·ç‰©(※車椅åãªã©)ã®å€‹æ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onChangeOtherBag = (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => {\n const value = e.target.value as number;\n setOtherBag(value);\n }\n\n // タクシーå°æ•°ãŒå¤‰æ›´ã•ã‚ŒãŸã¨ãã«å®Ÿè¡Œã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n /** スーツケースã®å€‹æ•°ã®æœ€å¤§å€¤ã€‚(X個 * タクシーå°æ•°ã€‚) */\n const maxSuitcase = carNum * maxSuitcasePerUnit;\n /** ゴルフãƒãƒƒã‚°ã®å€‹æ•°ã®æœ€å¤§å€¤ï¼ˆX個 * タクシーå°æ•°ã€‚) */\n const maxGolfBag = carNum * maxGolfBagPerUnit;\n // スーツケースã®å€‹æ•°ã®æœ€å¤§å€¤ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setmaxSuitcase(maxSuitcase);\n // ゴルフãƒãƒƒã‚°ã®å€‹æ•°ã®æœ€å¤§å€¤ã‚’æ›´æ–°ã™ã‚‹ã€‚\n setMaxGolfBag(maxGolfBag);\n }, [carNum]);\n\n return {\n requestCount, setRequestCount,\n isFailed, setIsFailed,\n isRequiredRetry, setIsRequiredRetry,\n isUnavalableEmail, setIsUnavalableEmail,\n isInvalidInput, setIsInvalidInput,\n lastName, setLastName,\n firstName, setFirstName,\n lastNameKana, setLastNameKana,\n firstNameKana, setFirstNameKana,\n placard, setPlacard,\n carType, setCarType,\n adultNum, setAdultNum,onChangeAdultNum,\n childNum, setChildNum, onChangeChildNum,\n carNum, setCarNum, onChangeCarNum,\n phoneNumber, setPhoneNumber,\n suitcase, setSuitcase, onChangeSuitcase,\n maxSuitcase,\n golfBag, setGolfBag, onChangedGolfBag,\n maxGolfBag,\n otherBag, setOtherBag, onChangeOtherBag,\n payment, setPayment,\n receiptAddress, setReceiptAddress,\n remarks, setRemarks,\n operatorMailaddress, setOperatorMailaddress,\n isSubmitting, switchSubmitting,\n acmMileageNumber, setAcmMileageNumber,\n reservationFare, setReservationFare,\n reservationLabels, setReservationLabels,\n setMaxSuitcasePerUnit, setMaxGolfBagPerUnit,\n setmaxSuitcase, setMaxGolfBag,\n mailUndeliveredProblemReproduction, setMailUndeliveredProblemReproduction\n }\n}\n","/**\n * æ—…CUBE版ã®è¡¨ç¤ºã‚’ã™ã‚‹ã‹åˆ¤å®šã™ã‚‹ã€‚\n * @param referrer referrerパラメーターã®å€¤ã€‚\n * @returns æ—…CUBE版ã®è¡¨ç¤ºã‚’ã™ã‚‹ã‹åˆ¤å®šã—ãŸçµæžœã€‚\n */\nexport function isTabiCube(referrer: string | null) {\n return referrer !== 'airport_access';\n}\n","import React from 'react';\nimport { createStyles, makeStyles, Grid, Divider } from '@material-ui/core';\nimport LogoJp from './images/tabicube_ja.jpg';\nimport LogoEn from './images/tabicube_en.jpg';\nimport { useTranslation } from 'react-i18next';\nimport { changeLang } from '../../../../../../states/query';\nimport { isJapanese } from '../../../../../../utils/lang';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n flexGrow: 1,\n padding: 0,\n },\n }),\n);\n\n/** æ—…CUBE用ã®ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ç”¨ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã€‚ */\nconst TabiCube: React.FC = () => {\n const classes = useStyles({});\n const { i18n } = useTranslation();\n const lang = changeLang(i18n.language);\n const alt = isJapanese(lang) ? 'æ—…CUBE ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ ãƒã‚´': 'Travel CUBE Hire/taxi Reservation Logo';\n const logo = isJapanese(lang) ? LogoJp : LogoEn;\n\n return (\n <div className={classes.root}>\n <Grid container direction='column' alignItems='center'>\n <Grid item>\n <img\n src={logo}\n alt={alt}\n style={{ maxHeight: \"80px\" }}\n />\n </Grid>\n </Grid>\n <Divider />\n </div>\n )\n}\n\nexport default TabiCube;\n","import React from 'react';\nimport { AppBar, createStyles, makeStyles, Grid } from '@material-ui/core';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport TaxiLogoJP from './../../images/logo.png';\nimport TaxiLogoEN from './../../images/logoEN.png';\nimport { useTranslation } from 'react-i18next';\nimport { changeLang, Lang } from '../../../../../../states/query';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n flexGrow: 1,\n padding: 0,\n },\n }),\n);\n\n/** ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ç”¨ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã€‚ */\nconst TaxiAndHireHeader: React.FC = () => {\n const classes = useStyles({});\n const { i18n } = useTranslation();\n const lang = changeLang(i18n.language);\n const alt = lang === Lang.ja? '空港アクセスナビ ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ ãƒã‚´': 'Airport Access Navi Hire/taxi Reservation Logo';\n const TaxiLogo = lang === Lang.ja? TaxiLogoJP: TaxiLogoEN;\n\n return (\n <div className={classes.root}>\n <AppBar position=\"static\">\n <Toolbar>\n <Grid container direction='column' alignItems='center'>\n <Grid item>\n {/* タクシー予約用ã®ãƒã‚´ã‚’表示。ç¾çŠ¶æ—¥æœ¬èªžç‰ˆã®ã¿ã€‚(2021/07/15ç¾åœ¨ï¼‰ */}\n <img\n src={TaxiLogo}\n alt={alt}\n style={{ maxHeight: \"60px\" }}\n />\n </Grid>\n </Grid>\n </Toolbar>\n </AppBar>\n </div>\n )\n}\n\nexport default TaxiAndHireHeader;\n","import * as React from 'react';\nimport TabiCube from './TabiCube';\nimport TaxiAndHireHeader from './TaxiAndHireHeader';\n\ninterface Props {\n /** æ—…CUBE版ã®å†…容ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n tabiCube?: boolean\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„サービスã®ãƒ˜ãƒƒãƒ€ãƒ¼ã€‚ */\nconst AirportTransferTaxiHeader: React.FC<Props> = (props: Props) => {\n return (\n <>\n {/* æ—…CUBE版ã®å ´åˆã€‚ */}\n { props.tabiCube && <TabiCube /> }\n {/* 通常(空港アクセスナビ版)ã®å ´åˆã€‚ */}\n { !props.tabiCube && <TaxiAndHireHeader /> }\n </>\n );\n};\n\nexport default AirportTransferTaxiHeader;\n","import * as React from 'react';\nimport Link from '@material-ui/core/Link';\nimport LaunchIcon from '@material-ui/icons/Launch';\n\ninterface Props {\n url: string,\n label: string\n}\n\n/** フッターã®å¤–部リンクã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst ExternalLink: React.FC<Props> = (props: Props) => {\n return (\n <Link\n target='_blank'\n href={props.url}\n color='inherit'\n >\n {props.label}\n <LaunchIcon style={{ fontSize: '14px', marginLeft: 1, verticalAlign: 'middle' }}/>\n </Link>\n )\n};\n\nexport default ExternalLink;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isJapanese } from '../../../utils/lang';\nimport ExternalLink from './ExternalLink';\n\n/**\n * 外部é€ä¿¡è¦å¾‹ã«é–¢ã™ã‚‹ANAå…¬å¼ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚\n */\nconst ExternalTransmissionDiscipline: React.FC = () => {\n const { t, i18n } = useTranslation();\n /** 日本語版ã®URL。 */\n const urlJa = 'https://www.ana.co.jp/ja/jp/guide/terms/cookiepolicy/external_transmission/';\n /** 英語版ã®URL。 */\n const urlEn = 'https://www.ana.co.jp/en/jp/guide/terms/cookiepolicy/external_transmission/';\n /** リンクã¨ã—ã¦è¨å®šã™ã‚‹URL。 */\n // 言語è¨å®šã«å¿œã˜ã¦ãƒªãƒ³ã‚¯å…ˆã‚’切り替ãˆã‚‹ã€‚\n const url = isJapanese(i18n.language) ? urlJa : urlEn;\n return (<ExternalLink url={url} label={t('external_transmission_discipline')}/>);\n};\n\nexport default ExternalTransmissionDiscipline;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isJapanese } from '../../../utils/lang';\nimport ExternalLink from './ExternalLink';\n\n/**\n * プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ã«é–¢ã™ã‚‹ANAå…¬å¼ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚\n */\nconst PrivacyPolicy: React.FC = () => {\n const { t, i18n } = useTranslation();\n /** 日本語版ã®URL。 */\n const urlJa = 'https://www.ana.co.jp/ja/jp/share/privacy/';\n /** 英語版ã®URL。 */\n const urlEn = 'https://www.ana.co.jp/en/jp/common/aboutana/legal/';\n /** リンクã¨ã—ã¦è¨å®šã™ã‚‹URL。 */\n // 言語è¨å®šã«å¿œã˜ã¦ãƒªãƒ³ã‚¯å…ˆã‚’切り替ãˆã‚‹ã€‚\n const url = isJapanese(i18n.language) ? urlJa : urlEn;\n return (<ExternalLink url={url} label={t('privacy_policy')} />);\n};\n\nexport default PrivacyPolicy;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isJapanese } from '../../../../../../utils/lang';\nimport ExternalLink from '../../../../../common/Footer/ExternalLink';\n\n/**\n * æ—…CUBEã®åˆ©ç”¨è¦ç´„ページã¸ã®ãƒªãƒ³ã‚¯ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚\n */\nconst Terms: React.FC = () => {\n const { t, i18n } = useTranslation();\n /** 日本語版ã®URL。 */\n const urlJa = 'https://tabicube.com/web/ja/terms';\n /** 英語版ã®URL。 */\n const urlEn = 'https://tabicube.com/web/en/terms';\n /** リンクã¨ã—ã¦è¨å®šã™ã‚‹URL。 */\n // 言語è¨å®šã«å¿œã˜ã¦ãƒªãƒ³ã‚¯å…ˆã‚’切り替ãˆã‚‹ã€‚\n const url = isJapanese(i18n.language) ? urlJa : urlEn;\n return (<ExternalLink url={url} label={t('terms')} />);\n};\n\nexport default Terms;\n","import React from 'react';\nimport { makeStyles, createStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n subtitle: {\n textDecoration: 'underline'\n },\n annotation: {\n fontSize: '0.75rem',\n marginBottom: '5px',\n },\n bold: {\n fontWeight: 'bold',\n },\n }),\n);\n\n/** サービス概è¦ã®æ—¥æœ¬èªžç‰ˆæœ¬æ–‡ã€‚ */\nconst JP: React.FC = () => {\n const classes = useStyles();\n return (\n <div>\n <h3 className={classes.subtitle}>ã“ã®ã‚µãƒ¼ãƒ“スã«ã¤ã„ã¦</h3>\n <p>メールã«ã‚ˆã‚‹ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼é…車予約サービスã§ã™ã€‚ã”利用空港ãŠã‚ˆã³ã”利用航空便ã«ã‚ã‚ã›ã¦ã€åœ°å›³ä¸Šã§é¸æŠžã„ãŸã ã„ãŸã€ŒæŒ‡å®šåœ°ç‚¹ã‹ã‚‰ç©ºæ¸¯ã¾ã§ã€ã€Œç©ºæ¸¯ã‹ã‚‰æŒ‡å®šåœ°ç‚¹ã¾ã§ã€ã®ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ã®é…車予約ãŒå¯èƒ½ã§ã™ã€‚</p>\n <p className={classes.annotation}>※ææºã®ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã¯é †æ¬¡æ‹¡å¤§ã—ã¦ã¾ã„ã‚Šã¾ã™ã€‚</p>\n <h3 className={classes.subtitle}>推奨環境</h3>\n {/* PC環境 */}\n <Typography className={classes.bold}>・PC</Typography>\n <Typography className={classes.bold}>Windows</Typography>\n <Typography>Google Chrome 最新版ã€Microsoft Edge 最新版</Typography>\n <Typography className={classes.bold}>Macintosh</Typography>\n <Typography gutterBottom>Google Chrome 最新版</Typography>\n {/* スマートフォン・タブレット環境 */}\n <Typography className={classes.bold}>・スマートフォン・タブレット</Typography>\n <Typography className={classes.bold}>iOS</Typography>\n <Typography>Safari 最新版</Typography>\n <Typography className={classes.bold}>Android</Typography>\n <Typography gutterBottom>Google Chrome 最新版</Typography>\n {/* 注釈 */}\n <Typography className={classes.annotation}>\n *推奨環境範囲内ã§ã‚ã£ã¦ã‚‚ã€ãƒ–ラウザã¨OSã®çµ„ã¿åˆã‚ã›ç‰ã®ç†ç”±ã«ã‚ˆã‚Šã€ä¸€éƒ¨è¡¨ç¤ºä¸å…·åˆã‚„å„種機能ãŒã”利用ã«ãªã‚Œãªã„å ´åˆãŒã”ã–ã„ã¾ã™ï¼ˆå„種ブラウザã®ãƒ™ãƒ¼ã‚¿ç‰ˆã€ãƒ—レビュー版ç‰ã§ã®ã”利用ã€ä¸€éƒ¨ã‚¢ãƒ‰ã‚ªãƒ³ã®ã”利用もå«ã¿ã¾ã™ï¼‰ã€‚\n </Typography>\n <Typography className={classes.annotation}>\n *æ–°ã—ã„ブラウザã¸ã®å¯¾å¿œã¯éšæ™‚検討を進ã‚ã¦ã¾ã„ã‚Šã¾ã™ãŒã€å…¬è¡¨ã•ã‚Œã¦ã„ãªã„ブラウザ固有ã®ä¸å…·åˆã«ã‚ˆã‚Šã€è¡¨ç¤ºã‚„動作ã®å®‰å®šæ€§ãŒç¢ºä¿ã§ãã¦ã„ãªã„å ´åˆãŒã”ã–ã„ã¾ã™ã€‚\n </Typography>\n <h3 className={classes.subtitle}>所è¦è·é›¢ãŠã‚ˆã³æ‰€è¦æ™‚é–“ã®æ¦‚算表示ã«ã¤ã„ã¦</h3>\n <p>地図ã§é¸æŠžã„ãŸã ã„ãŸåº§æ¨™ã‚’ã‚‚ã¨ã«æƒ³å®šèµ°è¡Œè·é›¢ãŠã‚ˆã³æƒ³å®šæ‰€è¦æ™‚間を算出ã—ã¦ãŠã‚Šã¾ã™ã€‚所è¦æ™‚é–“ã®å–å¾—ã«ã¯ã€ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ã®ã”乗車予定時刻を起点ã¨ã—ãŸæ··é›‘äºˆæƒ³ã‚’åŠ å‘³ã—ã¦æ‰€è¦æ™‚間を表示ã—ã¦ãŠã‚Šã¾ã™ãŒã€é“路事情ç‰ã«ã‚ˆã‚Šå®Ÿéš›ã¨ç•°ãªã‚‹å ´åˆãŒã”ã–ã„ã¾ã™ã®ã§ã”注æ„ãã ã•ã„。</p>\n <p>â€»åœ°å›³æƒ…å ±æ供元:Google</p>\n </div>\n );\n}\n\nexport default JP;\n","import React from 'react';\nimport { makeStyles, createStyles, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n subtitle: {\n textDecoration: 'underline'\n },\n annotation: {\n fontSize: '0.75rem',\n marginBottom: '5px',\n },\n bold: {\n fontWeight: 'bold',\n },\n }),\n);\n\n/** サービス概è¦ã®è‹±èªžç‰ˆæœ¬æ–‡ã€‚ */\nconst EN: React.FC = () => {\n const classes = useStyles();\n return (\n <div>\n <h3 className={classes.subtitle}>About this service</h3>\n <p>This is a limousine and taxi dispatch booking service based on email. You can book a limousine or taxi dispatch “to the airport from your specified location†or “from the airport to your specified location†as selected on a map, based on the airport and airline you are using. </p>\n <p className={classes.annotation}>* Partnerships with limousine and taxi dispatch service companies will be expanded successively.</p>\n <h3 className={classes.subtitle}>Recommended environment</h3>\n {/* PC環境 */}\n <Typography className={classes.bold}>・PC</Typography>\n <Typography className={classes.bold}>Windows (excluding Windows RT)</Typography>\n <Typography>Latest version of Google Chrome</Typography>\n <Typography>Latest version of Microsoft Edge</Typography>\n <Typography className={classes.bold}>Macintosh</Typography>\n <Typography gutterBottom>Latest version of Google Chrome</Typography>\n {/* スマートフォン・タブレット環境 */}\n <Typography className={classes.bold}>・Smartphone/Tablet</Typography>\n <Typography className={classes.bold}>iOS</Typography>\n <Typography>Latest version of Safari</Typography>\n <Typography className={classes.bold}>Android browsers</Typography>\n <Typography gutterBottom>Latest version of Google Chrome</Typography>\n {/* 注釈 */}\n <Typography className={classes.annotation}>\n *Even if your device fulfils the relevant system requirements, some pages may be displayed incorrectly and certain functions may be unavailable for reasons such as your combination of browser and OS. (This also includes the use of some add-ons and beta, preview, or other such browser versions.)\n </Typography>\n <Typography className={classes.annotation}>\n *Although we are always looking into how we can make our website compatible with new browsers, there may be occasions when pages will not display or function correctly due to unique issues with browsers that are yet to be officially released.\n </Typography>\n <h3 className={classes.subtitle}>About shown estimate of travel distance and time</h3>\n <p>The system calculates the estimated driving distance and travel time based on the coordinates you select on the map. To obtain and show the travel time, the system factors in predicted congestion based on the time the limousine taxi is booked for. However, please keep in mind that it may differ from the actual travel time due to the road situation, etc.</p>\n <p>* Source of map information: Google</p>\n </div>\n );\n}\n\nexport default EN;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { isJapanese } from '../../../../../../../utils/lang';\nimport JP from './JP';\nimport EN from './EN';\n\n/** サービス概è¦ã®æœ¬æ–‡éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst ServiceBody: React.FC = () => {\n const { i18n } = useTranslation();\n return isJapanese(i18n.language) ? <JP/> : <EN/> ;\n}\n\nexport default ServiceBody;\n","export enum TabIndexList {\n 'ARROW_BACK_BUTTON' = 0, // ヘッダー: 戻るボタン\n 'VIA_BUTTON' = 0, // 検索画é¢: 経由ボタン\n 'SWITCH_GUIDE_AREA' = 0, // 検索画é¢: 発ç€åˆ‡ã‚Šæ›¿ãˆãƒœã‚¿ãƒ³\n 'OPTION_AIRPOT_BUS' = 0, // 検索画é¢: 空港ãƒã‚¹å„ªå…ˆã‚ªãƒ—ション\n 'OPTION_CAR' = 0, // 検索画é¢: 自動車オプション\n 'OPTION_SHINKANSEN' = 0, // 検索画é¢: 新幹線オプション\n 'OPTION_LIMITED_EXPRESS' = 0, // 検索画é¢: 特急オプション\n 'OPTION_IC' = 0, // 検索画é¢: ICオプション\n 'OPTION_BARRIERFREE' = 0, // 検索画é¢: 車椅åオプション\n 'COVID19_TIMETEBLE_NOTICE' = 0, // 注æ„äº‹é …: コãƒãƒŠã®ãŠçŸ¥ã‚‰ã›ãƒœã‚¿ãƒ³\n 'TERMS_DIALOG' = 0, // フッター: 利用è¦ç´„ボタン\n 'SERVICE_ABOUT_DIALOG' = 0, // フッター: サービス概è¦ãƒœã‚¿ãƒ³\n 'GUIDANCE' = 0, // çµæžœç”»é¢: 回é¿ã™ã‚‹ãƒœã‚¿ãƒ³\n 'CHANGE_PUBLIC_MODE' = 0, // メニュー: Publicモードã«é·ç§»ã•ã›ã‚‹ãƒœã‚¿ãƒ³\n 'LINKTIVITY_BUTTON' = 0, // メニュー: リンクティビティã«é·ç§»ã™ã‚‹ãƒœã‚¿ãƒ³\n 'ANA_STORE_LINK' = 0, // ãã®ä»–: ANAストアリンクボタン\n 'TAXI_ROUTE_CHECK' = 0, // çµæžœç”»é¢: 自動車経路を確èªã™ã‚‹ãƒœã‚¿ãƒ³\n 'MK_TAXI_MODAL_BUTTON' = 0, // ãã®ä»–: MKタクシーモーダルを表示ã™ã‚‹ãŸã‚ã®ãƒœã‚¿ãƒ³\n 'NEARME_MODAL_BUTTON' = 0, // ãã®ä»–: NearMeモーダルを表示ã™ã‚‹ãŸã‚ã®ãƒœã‚¿ãƒ³\n 'VISA_TOUCH_BANNER' = 0, // ãã®ä»–: Visaタッãƒé€£æºãƒ¢ãƒ¼ãƒ€ãƒ«ãƒãƒŠãƒ¼\n 'SHONAI_CAR_SHARE_BANNER' = 0, // ãã®ä»–: 庄内空港カーシェア連æºãƒ¢ãƒ¼ãƒ€ãƒ«\n 'JR_EAST_PASS_BANNER' = 0, // ãã®ä»–: JR EAST PASS連æºãƒãƒŠãƒ¼\n 'MK_TAXI_MILE_NOTILE' = 0, // ãã®ä»–: MKタクシーã®ãƒžã‚¤ãƒ«ã«é–¢ã™ã‚‹ã”注æ„ã®è©³ç´°äº‹é …を出ã™\n 'OPEN_DETAIL_BUTTON' = 0, // ãã®ä»–: 詳細開閉ボタン\n 'AIRPORTER_OKINAWA' = 0 // ãã®ä»–: AirporterOkinawaã®ãƒžã‚¤ãƒ«ã«é–¢ã™ã‚‹ã”注æ„ã®è©³ç´°äº‹é …を出ã™\n}\n\nexport const isKeyDownEnter = (e: React.KeyboardEvent, method: (e?: any) => void) => {\n const EnterKeyCode = 13;\n // EnterãŒæŠ¼ã•ã‚ŒãŸå ´åˆã«ã¯å¼•æ•°ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実行ã™ã‚‹\n if(e.keyCode === EnterKeyCode) {\n method(e);\n }\n}\n","import React from 'react';\nimport { Theme, makeStyles, createStyles, AppBar, IconButton, Toolbar, Typography, Button, ThemeProvider, createMuiTheme } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\n\ninterface Props {\n handleClose: () => void,\n title: string | React.ReactNode,\n titleLabel?: string,\n isSmall?: boolean\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n minHeight: '60px',\n },\n appBarSmall: {\n position: 'relative',\n minHeight: '30px',\n display: 'flex',\n alignItems: 'flex-end',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n fontSize: '1.5rem',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n }\n }),\n);\n\nconst theme = createMuiTheme({\n overrides: {\n MuiAppBar: {\n colorPrimary: {\n color: '#fff',\n backgroundColor: '#002596',\n boxShadow: 'none'\n }\n },\n MuiToolbar: {\n regular: {\n minHeight: '30px !important',\n },\n },\n }\n});\n\nconst ModalHeader: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const titleLabel: string = props.titleLabel ? props.titleLabel : 'title';\n return (\n props.isSmall?\n <ThemeProvider theme={theme}>\n <AppBar className={classes.appBarSmall}>\n <Toolbar>\n <Button color=\"inherit\" onClick={props.handleClose} aria-label=\"close\">\n <Typography component=\"span\">é–‰ã˜ã‚‹</Typography>\n </Button>\n </Toolbar>\n </AppBar>\n </ThemeProvider>\n :\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton edge=\"start\" color=\"inherit\" onClick={props.handleClose} aria-label=\"close\">\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h1\" className={classes.title} aria-label={titleLabel}>\n {props.title}\n </Typography>\n </Toolbar>\n </AppBar>\n )\n}\n\nexport default ModalHeader;\n","import React, { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Dialog, Slide, Theme, makeStyles, createStyles, Button, List, ListItem } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions/transition';\nimport { TabIndexList, isKeyDownEnter } from '../../../../../../../utils/tabIndexList';\nimport ModalHeader from '../../../../../../common/ModalHeader';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n }\n }),\n);\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\ninterface Props {\n /** åコンãƒãƒ¼ãƒãƒ³ãƒˆï¼ˆæœ¬æ–‡éƒ¨åˆ†ï¼‰ã€‚ */\n children: ReactNode\n}\n\n/** æ—…CUBE版ã®ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ページã®ã‚µãƒ¼ãƒ“ス概è¦ã®ãƒ€ã‚¤ã‚¢ãƒã‚°éƒ¨åˆ†ã€‚ */\nconst ServiceDialog: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const [openDialog, setOpenDialog] = React.useState(false);\n const { t } = useTranslation();\n\n // ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ\n const handleClose = () => {\n setOpenDialog(false);\n };\n const handleOpen = () => {\n setOpenDialog(true);\n }\n return (\n <div>\n <div\n onClick={handleOpen}\n tabIndex={TabIndexList.SERVICE_ABOUT_DIALOG}\n onKeyDown={ (e) => { isKeyDownEnter(e, handleOpen ) } }\n >\n {t('about_service')}\n </div>\n <Dialog fullScreen open={openDialog} onClose={handleClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={handleClose}\n title={t('about_service')}\n />\n <List>\n <ListItem>\n { props.children }\n </ListItem>\n <ListItem>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.button}\n onClick={handleClose}\n >\n {t('close')}\n </Button>\n </ListItem>\n </List>\n </Dialog>\n </div>\n )\n}\n\nexport default ServiceDialog;\n","import React from 'react';\nimport ServiceBody from './ServiceBody';\nimport ServiceDialog from './ServiceDialog';\n\n/** æ—…CUBE版ã®ã‚µãƒ¼ãƒ“ス概è¦ã€‚ */\nconst ServiceOverview: React.FC = () => {\n return (\n <ServiceDialog>\n <ServiceBody/>\n </ServiceDialog>\n );\n}\n\nexport default ServiceOverview;\n","import React from 'react';\nimport { AppBar, createStyles, makeStyles, Grid, Typography } from '@material-ui/core';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport { useTranslation } from 'react-i18next';\nimport ExternalTransmissionDiscipline from '../../../../../common/Footer/ExternalTransmissionDiscipline';\nimport PrivacyPolicy from '../../../../../common/Footer/PrivacyPolicy';\nimport Terms from './Terms';\nimport ServiceOverview from './ServiceOverview';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root_search: {\n flexGrow: 1,\n marginTop: '150px',\n bottom: 0,\n width: '100%'\n },\n root_result: {\n flexGrow: 1,\n bottom: 0,\n width: '100%',\n },\n powered_by_text: {\n fontSize: '14px',\n padding: '5px',\n },\n link: {\n fontSize: '14px',\n padding: '5px',\n color: '#ffffff',\n textDecoration: 'underline'\n }\n }),\n);\n\n/** æ—…CUBE版ã®ãƒ•ãƒƒã‚¿ãƒ¼ã€‚ */\nconst TabiCubeFooter: React.FC = () => {\n const classes = useStyles({});\n const setClass = classes.root_search;\n\n const { t } = useTranslation();\n\n return (\n <div className={setClass}>\n <AppBar position=\"static\">\n <Toolbar>\n </Toolbar>\n {/* 「Powered By 駅ã™ã±ã‚ã¨ã€ã‚’表示ã™ã‚‹ã€‚ */}\n <Grid container justify='space-between'>\n {/* 利用è¦ç´„。 */}\n <Grid item className={classes.link} >\n <Terms/>\n </Grid>\n {/* プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ã«ã¤ã„ã¦ã®ãƒªãƒ³ã‚¯ã€‚ */}\n <Grid item className={classes.link} >\n <PrivacyPolicy/>\n </Grid>\n {/* 外部通信è¦å¾‹ã«ã¤ã„ã¦ã®ãƒªãƒ³ã‚¯ã€‚ */}\n <Grid item className={classes.link}>\n <ExternalTransmissionDiscipline/>\n </Grid>\n {/* サービス概è¦ã€‚ */}\n <Grid item className={classes.link} >\n <ServiceOverview />\n </Grid>\n <Grid item>\n <Typography className={classes.powered_by_text}>\n { t('powered_by_ekispert') }\n </Typography>\n </Grid>\n </Grid>\n </AppBar>\n </div>\n )\n}\n\nexport default TabiCubeFooter;\n","import React from 'react';\nimport { makeStyles, createStyles, Link } from '@material-ui/core';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n right: {\n textAlign: 'right'\n }\n }),\n);\n\nconst TermsBodyJP: React.FC = () => {\n const classes = useStyles();\n return (\n <div>\n <h3>利用è¦ç´„</h3>\n <p className={classes.right}>制定日2021å¹´4月21æ—¥</p>\n <h4>ç¬¬ï¼‘æ¡ æœ¬ã‚µãƒ¼ãƒ“ã‚¹ã®ã”利用</h4>\n <p>本è¦ç´„ã«ãŠã„ã¦ã€Œæœ¬ã‚µãƒ¼ãƒ“スã€ã¨ã¯ã€å…¨æ—¥æœ¬ç©ºè¼¸æ ªå¼ä¼šç¤¾ï¼ˆä»¥ä¸‹ã€Œå½“社ã€ã¨ã„ã†ï¼‰ãŒå½“社ã¾ãŸã¯ææºç¤¾ãƒ›ãƒ¼ãƒ ページåŠã³å½“社モãƒã‚¤ãƒ«ã‚¢ãƒ—リã‹ã‚‰ã®é€£æºã«ã‚ˆã‚Šæä¾›ã™ã‚‹ã€Œç©ºæ¸¯ã‚¢ã‚¯ã‚»ã‚¹ãƒŠãƒ“ã€ä¸Šã§æä¾›ã™ã‚‹ä¸€é€£ã‚µãƒ¼ãƒ“スを指ã—ã¾ã™ã€‚ã”利用ã«ã‚ãŸã£ã¦ã¯ã€æœ¬è¦ç´„内容をã”確èªé ‚ãã€ã”åŒæ„é ‚ã‘ã‚‹å ´åˆã®ã¿æœ¬ã‚µãƒ¼ãƒ“スをã”利用ãã ã•ã„。ãªãŠã€æœ¬ã‚µãƒ¼ãƒ“スをã”åˆ©ç”¨é ‚ã„ãŸå ´åˆã¯ã€æœ¬è¦ç´„を本サービスã®åˆ©ç”¨ã«é–¢ã™ã‚‹ãŠå®¢æ§˜ã¨å½“社ã¨ã®é–“ã®å¥‘ç´„ã®å†…容ã¨ã™ã‚‹ã“ã¨ã«ã”åŒæ„é ‚ã„ãŸã‚‚ã®ã¨ã¿ãªã—ã¾ã™ã€‚</p>\n\n <h4>ç¬¬ï¼’æ¡ æœ¬ã‚µãƒ¼ãƒ“ã‚¹ã®æ§‹æˆã¨ã”利用æ¡ä»¶</h4>\n <p>本サービスã¯ç„¡å„Ÿã«ã¦ã”åˆ©ç”¨é ‚ã‘ã¾ã™ã€‚ãŸã ã—ã€ãŠå®¢æ§˜ãŒæœ¬ã‚µãƒ¼ãƒ“スをã”利用ã„ãŸã ãã«ã‚ãŸã£ã¦ç™ºç”Ÿã™ã‚‹é€šä¿¡è²»ã‚„インターãƒãƒƒãƒˆãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã«ã‚ˆã‚‹èª²é‡‘ã€ã‚¦ã‚§ãƒ–サイトã«æŽ¥ç¶šã™ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒ”ューターã€ãƒ¢ãƒ‡ãƒ ã€æºå¸¯ç«¯æœ«ç‰ã®å‘¨è¾ºæ©Ÿå™¨åŠã³ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ç‰ã¯ã€ãŠå®¢æ§˜ã®è²¬ä»»ã¨è² æ‹…ã«ã¦ã”準備ãã ã•ã„。</p>\n\n <h4>ç¬¬ï¼“æ¡ ãŠå®¢æ§˜ã®è²¬ä»»ã¨ç¾©å‹™</h4>\n <ol>\n <li>本è¦ç´„åŠã³å½“社ãŒæœ¬ã‚µãƒ¼ãƒ“スã«é–¢ã—ã¦æœ¬ã‚µãƒ¼ãƒ“スã®ã‚¦ã‚§ãƒ–サイト上ã«æŽ²ç¤ºã€ã¾ãŸã¯ãŠå®¢æ§˜ã«é€£çµ¡ã™ã‚‹å‘ŠçŸ¥ç‰ã®ä¸€åˆ‡ã¯ã€æœ¬è¦ç´„ã¨ä¸€ä½“ã®ã‚‚ã®ã¨ã—ã¦ã€ãŠå®¢æ§˜ã¯ã“れら全ã¦ã‚’éµå®ˆã™ã‚‹ç¾©å‹™ã‚’è² ã„ã¾ã™ã€‚ãªãŠã€ã‹ã‹ã‚‹å‘ŠçŸ¥ç‰ã«æœ¬è¦ç´„ã«ç›¸åã€ã¾ãŸã¯çŸ›ç›¾ã™ã‚‹å†…容ãŒè¨˜è¼‰ã•ã‚Œã‚‹å ´åˆã€æœ¬è¦ç´„ã®è¦å®šã‚’優先ã—ã¦é©ç”¨ã—ã¾ã™ã€‚</li>\n <li>本サービスã®æ£ç¢ºæ€§ã€ä¿¡é ¼æ€§ã€å®‰å…¨æ€§ã€å®Œæˆåº¦ã€æœ‰ç”¨æ€§ã€æ™‚宜ã«é©ã—ãŸã‚‚ã®ã§ã‚ã‚‹ã‹å¦ã‹ã€åŠã³æœ¬ã‚µãƒ¼ãƒ“スãŒãŠå®¢æ§˜ã®ç‰¹å®šç›®çš„ã«åˆè‡´ã™ã‚‹ã‹å¦ã‹ã«ã¤ã„ã¦ã¯ã€ãŠå®¢æ§˜ãŒè‡ªã‚‰ã®è²¬ä»»ã§ã”判æ–ãã ã•ã„。</li>\n <li>ãŠå®¢æ§˜ãŒã€æœ¬ã‚µãƒ¼ãƒ“スã®åˆ©ç”¨ã«é–¢ã—ã¦å›½å†…外ã®ç¬¬ä¸‰è€…ã‹ã‚‰ã€å•ã„åˆã‚ã›ã€æŠ—è°ã€ã‚¯ãƒ¬ãƒ¼ãƒ ã‚’å—ã‘ãŸå ´åˆã‚„ã€æ訴ã•ã‚ŒãŸå ´åˆã¯ã€ãŠå®¢æ§˜ã¯è‡ªã‚‰ã®è²»ç”¨ã¨è²¬ä»»ã‚’ã‚‚ã£ã¦ã‹ã‹ã‚‹å•ã„åˆã‚ã›ã€æŠ—è°ã€ã‚¯ãƒ¬ãƒ¼ãƒ ã€è¨´è¨Ÿã«å¯¾å¿œã™ã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</li>\n </ol>\n\n <h4>ç¬¬ï¼”æ¡ çŸ¥çš„è²¡ç”£æ¨©</h4>\n <ol>\n <li>本サービスã«è¡¨ç¤ºã•ã‚Œã‚‹æ–½è¨æƒ…å ±ãƒ‡ãƒ¼ã‚¿ã®è‘—作権ã¯ã€Google©åŠã³æ ªå¼ä¼šç¤¾ã‚¼ãƒ³ãƒªãƒ³ã¾ãŸã¯å½“該二社ã«æ¨©åˆ©ã‚’許諾ã™ã‚‹ç¬¬ä¸‰è€…ã«å¸°å±žã—ã¾ã™ã€‚</li>\n <li>本サービスã«è¡¨ç¤ºã•ã‚Œã‚‹é‰„é“é‹è¡Œæƒ…å ±ãƒ‡ãƒ¼ã‚¿ã®è‘—作権ã¯ã€æ ªå¼ä¼šç¤¾ãƒ¬ã‚¹ã‚ューナウã¾ãŸã¯å½“該社ã«æ¨©åˆ©ã‚’許諾ã™ã‚‹ç¬¬ä¸‰è€…ã«å¸°å±žã—ã¾ã™ã€‚</li>\n <li>本サービスã«è¡¨ç¤ºã•ã‚Œã‚‹èˆªç©ºãƒ»é‰„é“・ãƒã‚¹ãƒ»èˆ¹ã§ã®çµŒè·¯æ¤œç´¢ãƒ‡ãƒ¼ã‚¿ï¼ˆçµŒè·¯æ¤œç´¢ç”»é¢åŠã³æ¤œç´¢çµæžœå‡ºåŠ›ãƒ‡ãƒ¼ã‚¿ï¼‰ã®è‘—作権ã¯ã€æ ªå¼ä¼šç¤¾ãƒ´ã‚¡ãƒ«ç ”究所ã¾ãŸã¯å½“該社ã«æ¨©åˆ©ã‚’許諾ã™ã‚‹ç¬¬ä¸‰è€…ã«å¸°å±žã—ã¾ã™ã€‚</li>\n <li>本サービスã«è¡¨ç¤ºã•ã‚Œã‚‹ä¸Šè¨˜ä»¥å¤–ã®ãƒ‡ãƒ¼ã‚¿ã®è‘—作権ã¯ã€å½“社ã¾ãŸã¯å½“該社ã«æ¨©åˆ©ã‚’許諾ã™ã‚‹ç¬¬ä¸‰è€…ã«å¸°å±žã—ã¾ã™ã€‚</li>\n <li>ãŠå®¢æ§˜ã¯ã€æœ¬ã‚µãƒ¼ãƒ“スã§ã®ã¿ã€é‰„é“é‹è¡Œæƒ…å ±ãƒ‡ãƒ¼ã‚¿ã€è·¯ç·šå›³ãƒ‡ãƒ¼ã‚¿ã€ç©ºæ¸¯æƒ…å ±ã€çµŒè·¯æ¤œç´¢ãƒ‡ãƒ¼ã‚¿ã€é§…åã‚’å«ã‚€ãƒ‡ãƒ¼ã‚¿ï¼ˆä»¥ä¸‹ã€ã€Œä¹—æ›æ¡ˆå†…データç‰ã€ã¨ã„ã†ï¼‰ã‚’閲覧ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãŠå®¢æ§˜ã¯ã€ä¹—æ›æ¡ˆå†…データç‰ã«ã¤ã„ã¦ã€ã“れ以外ã®ã„ã‹ãªã‚‹æ¨©åˆ©ã‚‚å–å¾—ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。</li>\n <li>本サービスã§æä¾›ã™ã‚‹å†…容(時刻データをå«ã¿ã¾ã™ï¼‰ã‚’ç„¡æ–ã§è»¢è¼‰ãƒ»è¤‡å†™ã—ã€ã¾ãŸã¯ç´™åª’体ã€é›»ç£åª’体ãã®ä»–ã„ã‹ãªã‚‹åª’体ã«åŠ å·¥ã™ã‚‹ã“ã¨ã‚‚ç¦ã˜ã¾ã™ã€‚</li>\n </ol>\n\n <h4>ç¬¬ï¼•æ¡ ç¦æ¢äº‹é …</h4>\n <p>ãŠå®¢æ§˜ã¯ä»¥ä¸‹ã®è¡Œç‚ºã‚’ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。</p>\n <ol>\n <li>本サービスを個人的ãªåˆ©ç”¨ã‚’超ãˆã¦ã€å–¶åˆ©ç›®çš„ã«ãŠã„ã¦åˆ©ç”¨ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスをé•æ³•ãªç›®çš„ã§åˆ©ç”¨ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスã®è¤‡è£½ã€åˆ†è§£ã€è¿½åŠ ã€ç·¨é›†ã€å‰Šé™¤ã€æ”¹å¤‰ã€æ”¹é€ åŠã³ãã®ä»–方法ã€æ…‹æ§˜ã®å¦‚何をå•ã‚ãšæœ¬ã‚µãƒ¼ãƒ“スを変更ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスã«é–¢ã—ã¦ã€ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã€é€†ã‚³ãƒ³ãƒ‘イルã€é€†ã‚¢ã‚»ãƒ³ãƒ–ルåŠã³ãã®ä»–方法ã€æ…‹æ§˜ã®å¦‚何をå•ã‚ãšã€æœ¬ã‚µãƒ¼ãƒ“スを解æžã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスを利用ã™ã‚‹æ¨©åˆ©ã«ã¤ãã€æœ‰å„Ÿç„¡å„Ÿã‚’å•ã‚ãšã€è²æ¸¡ã€å†è²©å£²ã€æ‹…ä¿è¨å®šåŠã³ãã®ä»–処分ã€ä½¿ç”¨æ¨©è¨±è«¾ç‰ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスã«é–¢ã—ã¦ã€æ„図的ã«èª¤æƒ…å ±ã‚„æœ‰å®³ãªã‚³ãƒ³ãƒ”ュータープãƒã‚°ãƒ©ãƒ ç‰ã‚’é€ä¿¡ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスåŠã³ãã®ä»–当社ã®äº‹æ¥é‹å–¶ã«æ”¯éšœã‚’ããŸã™æã‚Œã®ã‚る行為。</li>\n <li>当社ã¾ãŸã¯ç¬¬ä¸‰è€…ãŒæœ‰ã™ã‚‹è‘—作権ã€ç‰¹è¨±æ¨©ã€å•†æ¨™æ¨©ç‰ã®çŸ¥çš„財産権を侵害ã™ã‚‹è¡Œç‚ºã€ã¾ãŸã¯ãã®æã‚Œã®ã‚る行為。</li>\n <li>当社ã¾ãŸã¯ç¬¬ä¸‰è€…ã®ãƒ—ライãƒã‚·ãƒ¼ã‚’侵害ã™ã‚‹è¡Œç‚ºã€å誉もã—ãã¯ä¿¡ç”¨ã‚’毀æã™ã‚‹è¡Œç‚ºã€ã¾ãŸã¯ãã®æã‚Œã®ã‚る行為。</li>\n <li>法令ã€æœ¬è¦ç´„ã¾ãŸã¯å…¬åºè‰¯ä¿—ã«åã™ã‚‹è¡Œç‚ºã€åŠã³å½“社ã¾ãŸã¯ç¬¬ä¸‰è€…ã«ä¸åˆ©ç›Šã‚’与ãˆã‚‹è¡Œç‚ºã€‚</li>\n <li>本サービスã®åˆ©ç”¨ã«é–¢ã—ã¦ã€å社会的勢力ã«ç›´æŽ¥ã¾ãŸã¯é–“接ã«åˆ©ç›Šã‚’æä¾›ã™ã‚‹è¡Œç‚ºã€‚</li>\n <li>ãã®ä»–å‰å„å·ã«è©²å½“ã™ã‚‹æã‚ŒãŒã‚る行為ã€ã“ã‚Œã«é¡žã™ã‚‹è¡Œç‚ºã€ã¾ãŸã¯ãã®ä»–当社ãŒä¸é©åˆ‡ã¨åˆ¤æ–ã—ãŸè¡Œç‚ºã€‚</li>\n </ol>\n <p>ãŠå®¢æ§˜ã®è¡Œç‚ºã¾ãŸã¯ä¸ä½œç‚ºãŒæœ¬æ¡ã«ãŠã‘ã‚‹ç¦æ¢äº‹é …ã«è©²å½“ã™ã‚‹ã‹å¦ã‹ã¯ã€å½“社ã®åˆ¤æ–ã«ã‚ˆã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</p>\n\n <h4>ç¬¬ï¼–æ¡ å…è²¬äº‹é …</h4>\n <ol>\n <li>本サービスã«è¨˜è¼‰ã•ã‚ŒãŸä¹—æ›æ¡ˆå†…データç‰ã«ã¤ã„ã¦ã€å分注æ„ã€ç¢ºèªã—ãŸä¸Šã§æŽ²è¼‰ã—ã¦ãŠã‚Šã¾ã™ãŒã€å¿…ãšã—も最é©ãªçµŒè·¯ã®æ¤œç´¢ã€å¿…ãšã—も最新ã€æ£ç¢ºã¾ãŸã¯å®Œå…¨ã§ãªã„å ´åˆãŒã‚ã‚Šã€ã¾ãŸãŠå®¢æ§˜ã®ä½¿ç”¨ç›®çš„ã¾ãŸã¯è¦æ±‚を満ãŸã™ã‚‚ã®ã§ã¯ãªã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã”利用ã«ã‚ãŸã£ã¦ã¯ã€ãŠå®¢æ§˜ã”自身ã®è²¬ä»»ã«ãŠã„ã¦ã”利用ãã ã•ã„。</li>\n <li>本サービスã§æä¾›ã™ã‚‹æƒ…å ±ã¯æ™‚刻表をもã¨ã«æ¤œç´¢ã—ã¦ã„ã¾ã™ã€‚ãŸã ã—ã€äº¤é€šçŠ¶æ³ç‰ã«ã‚ˆã‚Šç•°ãªã‚‹é‹è¡ŒãŒã•ã‚Œã¦ã„ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã®ã§ã”了承ãã ã•ã„。</li>\n <li>迂回ルート表示ã«ãŠãã¾ã—ã¦ã€é‹è¡ŒçŠ¶æ³ã®ä¹±ã‚ŒãŒã‚ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã“ã®æ¤œç´¢çµæžœã¯ã€æ¨™æº–çš„ãªãƒ€ã‚¤ãƒ¤æƒ…å ±ã‚’ç”¨ã„ã¦ã„ã‚‹ãŸã‚ã€å®Ÿéš›ã®é‹è¡Œã¨ç•°ãªã‚‹ã“ã¨ãŒã‚ã‚‹ã“ã¨ã‚’ã”了承ãã ã•ã„。ãªãŠã€é‹è¡ŒçŠ¶æ³ã€ç™ºè»Šæ™‚刻ç‰ã¯å„交通機関ã«ãŠå°‹ããã ã•ã„。</li>\n <li>本サービスã«è¨˜è¼‰ã•ã‚ŒãŸä¹—æ›æ¡ˆå†…データç‰ã«ã¤ãã€ãŠå®¢æ§˜ã¯ã€ãŠå®¢æ§˜ã®ä½¿ç”¨ç›®çš„ã¾ãŸã¯è¦æ±‚を満ãŸã™ã‚‚ã®ã§ã¯ãªãã€ã¾ãŸå…¨ã¦æ£ç¢ºã‹ã¤å®Œå…¨ã§ã¯ãªã„å ´åˆã§ã‚‚ã€å½“社ã¾ãŸã¯ã€æ ªå¼ä¼šç¤¾ãƒ´ã‚¡ãƒ«ç ”究所ãŒãƒ‡ãƒ¼ã‚¿ã®äº¤æ›ãƒ»ä¿®è£œãã®ä»–ã®è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。</li>\n <li>ãŠå®¢æ§˜ã¨ã€æœ¬ã‚µãƒ¼ãƒ“スä¸ã«åºƒå‘Šã‚’è¡Œã£ã¦ã„る広告主ã¾ãŸã¯æœ¬ã‚µãƒ¼ãƒ“スãŒãƒªãƒ³ã‚¯ã—ã¦ã„ã‚‹ä»–ã®ã‚¦ã‚§ãƒ–サイトã«ã¦è¡Œã‚れる事æ¥ã®äº‹æ¥ä¸»ã¨ã®é–“ã®å–引ã«ã¤ã„ã¦ã¯ã€å…¨ã¦ãŠå®¢æ§˜ã¨ã‹ã‹ã‚‹åºƒå‘Šä¸»ã¾ãŸã¯äº‹æ¥ä¸»ã¨ã®è²¬ä»»ã«ãŠã„ã¦è¡Œã‚れるã“ã¨ã¨ã—ã€å½“社ã¯ã‹ã‹ã‚‹å–引ã«é–¢ã—ã¦ãŠå®¢æ§˜ãŒè¢«ã‚‹æ害・æ失ã«ã¤ã„ã¦å¦‚何ãªã‚‹ä¿è¨¼ã‚‚ã›ãšã€ã¾ãŸè²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。</li>\n <li>本サービスをã”利用ã„ãŸã ããŸã‚ã®ç’°å¢ƒãŒä¸å®Œå…¨ã§ã‚ã‚‹ã“ã¨ã«èµ·å› ã™ã‚‹å‹•ä½œä¸è‰¯ã‚„ãã®ä»–ã®è«¸å½±éŸ¿ã«é–¢ã—ã¦ã€å½“社ã¯è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。ã¾ãŸã€ãŠå®¢æ§˜ã®OSã‚„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ç’°å¢ƒã€ã”利用機器やソフトウェアã®æ§‹æˆç‰ã«èµ·å› ã™ã‚‹å‹•ä½œä¸è‰¯ã‚„ãã®ä»–ã®è«¸å½±éŸ¿ã«é–¢ã—ã¦ã‚‚当社ã¯è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。</li>\n <li>本サービスã®åˆ©ç”¨ã«èµ·å› ã—ã¦ãŠå®¢æ§˜ãŒæ害を被ã£ãŸå ´åˆã§ã‚‚ã€å½“社ã€æ ªå¼ä¼šç¤¾ãƒ´ã‚¡ãƒ«ç ”究所ã¯ã€ãã®æ害ãŒè‡ªã‚‰ã®æ•…æ„ã¾ãŸã¯é‡å¤§ãªéŽå¤±ã«èµ·å› ã—ã¦ç”Ÿã˜ãŸã‚‚ã®ã§ãªã„é™ã‚Šã€è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。</li>\n </ol>\n\n <h4>ç¬¬ï¼—æ¡ ã‚µãƒ¼ãƒ“ã‚¹ã®åœæ¢ãƒ»å¤‰æ›´</h4>\n <p>当社ã¯ã€æœ¬ã‚µãƒ¼ãƒ“スã®å…¨éƒ¨ã¾ãŸã¯ä¸€éƒ¨ã«ã¤ã„ã¦ã€äºˆå‘Šãªã変更ã€ä¸æ–ã¾ãŸã¯çµ‚了ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ãŒã€å½“社ã¯ã€ã‹ã‹ã‚‹å¤‰æ›´ã€ä¸æ–ã¾ãŸã¯çµ‚了ã«ã‚ˆã‚ŠãŠå®¢æ§˜ã«ç”Ÿã˜ã‚‹æ害ã«ã¤ã„ã¦ã€è³ 償責任ãã®ä»–ã®è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。</p>\n\n <h4>第8æ¡ å€‹äººæƒ…å ±åŠã³ãã®ä»–ã®æƒ…å ±ã®å–扱ã„</h4>\n <ol>\n <li>当社ã¯ã€æœ¬ã‚µãƒ¼ãƒ“スã®æ供を通ã˜ã¦å½“社ãŒå–å¾—ã™ã‚‹ãŠå®¢æ§˜ã®å€‹äººæƒ…å ±ã«ã¤ã„ã¦ã€å½“社所定ã®ã€Œ<Link href=\"https://www.ana.co.jp/ja/jp/share/privacy/\" color='secondary' rel=\"noopener\" target=\"_blank\" >プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼</Link>ã€ã‚’éµå®ˆã—ã€é©åˆ‡ã«ç®¡ç†ã™ã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</li>\n <li>当社ã¯ã€ãŠå®¢æ§˜ã«ã‚ˆã‚‹æœ¬ã‚µãƒ¼ãƒ“スã®åˆ©ç”¨ã«ã‚ˆã£ã¦å–å¾—ã™ã‚‹æƒ…å ±ï¼ˆç›®çš„åœ°ç‰ã®ãƒ‡ãƒ¼ã‚¿ã€GPS機能ã«ã‚ˆã‚Šå–å¾—ã•ã‚Œã‚‹ä½ç½®æƒ…å ±ã€ç§»å‹•çµŒè·¯æƒ…å ±ã‚’å«ã¿ã¾ã™ãŒã€ã“れらã«é™ã‚‰ã‚Œã¾ã›ã‚“)ã«ã¤ã„ã¦ã€æœ¬ã‚µãƒ¼ãƒ“ス若ã—ãã¯ã“ã‚Œã«é–¢é€£ã™ã‚‹ã‚µãƒ¼ãƒ“スã¾ãŸã¯å½“社ã®ãã®ä»–ã®äº‹æ¥ã®ãŸã‚ã«åˆ©ç”¨ï¼ˆçµ±è¨ˆè³‡æ–™ã®ä½œæˆã€åŠã³å½“該事æ¥ã«å¿…è¦ãªç¯„囲ã«ãŠã„ã¦ç¬¬ä¸‰è€…ã«æä¾›ã™ã‚‹ã“ã¨ã‚’å«ã¿ã¾ã™ï¼‰ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚</li>\n <li>当社ã¯ã€å‰é …ã®æƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æä¾›ã™ã‚‹å ´åˆã€é©åˆ‡ãªåŒ¿å化処置を施ã—ã€åŒ¿å化ã—ãŸæƒ…å ±ã‚’å†è˜åˆ¥åŒ–ã—ãªã„ã‚‚ã®ã¨ã—ã¾ã™ã€‚ã¾ãŸã€ã“れらã®æƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æä¾›ã™ã‚‹å ´åˆã«ã¯ã€æ供先ãŒå†è˜åˆ¥åŒ–ã‚’ã™ã‚‹ã“ã¨ã‚’契約ã§ç¦æ¢ã—ã¾ã™ã€‚ãã®ä»–ã€ç¬¬1é …ã«å®šã‚る「<Link href=\"https://www.ana.co.jp/ja/jp/share/privacy/\" color='secondary' rel=\"noopener\" target=\"_blank\" >プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼</Link>ã€ã®è¦å®šã«ã‚ˆã‚‰ãšã«ã€ãŠå®¢æ§˜ã®å€‹äººæƒ…å ±ã‚’ç¬¬ä¸‰è€…ã«æä¾›ã™ã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。</li>\n <li>当社ã¯ã€ãŠå®¢æ§˜ã®å€‹äººæƒ…å ±ã‚’åŸºã«ã¾ãŸã¯ç¬¬2é …ã®æƒ…å ±ã‚’åŸºã«ä½œæˆã—ãŸçµ±è¨ˆè³‡æ–™ã«ã¤ã„ã¦ã€å€‹äººã‚’è˜åˆ¥ã§ãã‚‹ã‚‚ã®ã§ã¯ãªã„ã“ã¨ã‚’å‰æã«ã€å–り扱ã†ã“ã¨ãŒã§ãã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</li>\n </ol>\n\n <h4>ç¬¬ï¼™æ¡ æå®³è³ å„Ÿ</h4>\n <p>ãŠå®¢æ§˜ãŒã€æœ¬è¦ç´„ã«å¯¾ã™ã‚‹é•å行為ã€ã¾ãŸã¯ä¸æ£è¡Œç‚ºè‹¥ã—ãã¯é•æ³•è¡Œç‚ºã«ã‚ˆã‚Šã€å½“社ã«æ害を与ãˆãŸå ´åˆã€å½“社ã¯ãã®ãŠå®¢æ§˜ã«å¯¾ã—ã€ã‹ã‹ã‚‹é•å行為ã€ä¸æ£è¡Œç‚ºã¾ãŸã¯é•æ³•è¡Œç‚ºã«åŸºã¥ã生ã˜ãŸæ害ã«ã¤ã„ã¦ã€ãã®è³ 償を請求ã§ãã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</p>\n\n <h4>第1ï¼æ¡ 一般æ¡é …</h4>\n <ol>\n <li>当社ã¯ã€æœ¬è¦ç´„を変更ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚</li>\n <li>当社ãŒæœ¬è¦ç´„ã®æ”¹è¨‚・修æ£ã‚’è¡Œã†å ´åˆã¯ã€æ”¹è¨‚・修æ£å†…容ã¨åŠ¹åŠ›ç™ºç”Ÿæ™‚期を本サービスã®ã‚¦ã‚§ãƒ–サイトç‰ã®å½“社ã®é¸æŠžã™ã‚‹æ–¹æ³•ã§äº‹å‰ã«å‘ŠçŸ¥ã—ã¾ã™ã€‚本è¦ç´„ã®å¤‰æ›´ãŒåŠ¹åŠ›ã‚’生ã˜ãŸå¾Œã«ãŠå®¢æ§˜ãŒæœ¬ã‚µãƒ¼ãƒ“スを利用ã•ã‚ŒãŸå ´åˆã€ãŠå®¢æ§˜ã¯å¤‰æ›´å¾Œã®æœ¬è¦ç´„ã®å…¨ã¦ã®è¨˜è¼‰å†…容ã«åŒæ„ã—ãŸã‚‚ã®ã¨ã¿ãªã—ã¾ã™ã€‚</li>\n <li>本è¦ç´„ã®åŠ¹åŠ›ã€è§£é‡ˆåŠã³å±¥è¡Œã«ã¤ã„ã¦ã¯æ—¥æœ¬å›½æ³•ã«æº–æ‹ ã™ã‚‹ã‚‚ã®ã¨ã—ã¾ã™ã€‚</li>\n <li>本è¦ç´„ã«é–¢ã—ã¦ç´›äº‰ãŒç”Ÿã˜ãŸå ´åˆã€æ±äº¬åœ°æ–¹è£åˆ¤æ‰€ã‚’第一審ã®å°‚属的åˆæ„管轄è£åˆ¤æ‰€ã¨ã—ã¾ã™ã€‚</li>\n </ol>\n\n <p className={classes.right}>以 上</p>\n </div>\n )\n}\n\nexport default TermsBodyJP;\n","import React from 'react';\nimport { makeStyles, createStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n right: {\n textAlign: 'right'\n }\n }),\n);\n\nconst TermsBodyEN: React.FC = () => {\n const classes = useStyles();\n return (\n <div>\n <h3>Terms of Service</h3>\n <p className={classes.right}>Enacted on March 26, 2020</p>\n <h4>Article 1. Use of Service</h4>\n <p>In these Terms of Service (the “Termsâ€), the “Service†refers to a series of services provided by All Nippon Airways Co., Ltd. (the “Companyâ€) through the “Airport Access†service offered on its website and the websites of its affiliates as well as through its mobile application. Please read these Terms before using the Service. You may use the Service only if you read and agree to the following terms and conditions. By using the Service, you are deemed to have agreed that the Terms form a contract made between you and the Company regarding use of the Service.</p>\n\n <h4>Article 2. Composition of the Service and the Terms of Use</h4>\n <p>The Service is available free of charge. Please note, however, that you will be responsible for communication expenses and fees charged by Internet providers, as well as peripheral devices such as personal computers, modems, mobile devices, and software necessary to connect to the website and use the Service. </p>\n\n <h4>Article 3. Responsibilities and Obligations of Customer</h4>\n <ol>\n <li>These Terms and all notices regarding the Service posted on the website of the Service or given to you by the Company should be made an integral part of the Terms, and you are obliged to comply with all of them. Should any conflict or contradiction against the Terms be found in such notices, the provisions of these Terms shall supersede.</li>\n <li>It is your responsibility to make your own decisions about the accuracy, reliability, security, completeness, usefulness, and timeliness of the Service, and whether the Service meets your specific purposes.</li>\n <li>You should resolve any inquiry, grievance, complaint, and claim made against you by a third party from home and abroad in connection with using the Service at your own expense and responsibility.</li>\n </ol>\n\n <h4>Article 4. Intellectual Property Rights</h4>\n <ol>\n <li>Copyrights of information and data on facilities featured on the Service belong to Google© and ZENRIN CO., LTD, or any third party which grants such rights to these two companies.</li>\n <li>Copyrights of information and data on train services featured on the Service belong to Rescuenow Inc. or any third party which grants such rights to said company.</li>\n <li>Copyrights of route-finding data using train, bus, and ship, featured on the Service (route-finding screen and search result output data) belong to Val Laboratory Corporation or any third party which grants such rights to said company.</li>\n <li>Copyrights of any data other than those mentioned above and featured on the Service belong to the Company or any third party which grants such rights to the Company.</li>\n <li>You can browse information and data on train services, route map data, airport information, route-finding data, and data containing the names of stations (“transfer guide dataâ€) only through this Service. You do not acquire any other rights regarding transfer guide data.</li>\n <li>Copying or reproducing information (including time data) provided by the Service or processing of such information on paper, electromagnetic, or any other media format is not allowed without permission.</li>\n </ol>\n\n <h4>Article 5. Prohibitions</h4>\n <p>You are not allowed to do the following:</p>\n <ol>\n <li>Use the Service for commercial purposes beyond personal use. </li>\n <li>Use the Service for illegal purposes.</li>\n <li>Copy, disassemble, add, edit, delete, modify, remodel the Service, or change the Service in any way or manner.</li>\n <li>Analyze the Service using reverse engineering, decompilation, disassembly tools, or any other means or manner.</li>\n <li>Transfer, resell, pledge as collateral, dispose of, or license the right to use the Service to others whether with or without compensation.</li>\n <li>Send misinformation or harmful computer programs regarding the Service by intent.</li>\n <li>Engage in acts that may affect the Service and other business operations of the Company.</li>\n <li>Engage in acts that will or may infringe on the intellectual property rights, including copyrights, patents, and trademarks owned by the Company or third parties.</li>\n <li>Engage in acts that will or may violate the privacy of the Company or third parties, or acts that will or may harm the reputation or credibility thereof.</li>\n <li>Engage in acts that violate laws, regulations, these Terms or the public policy, and acts that disadvantage the Company or third parties.</li>\n <li>Directly or indirectly provide benefits to anti-social forces in connection with the use of the Service.</li>\n <li>Engage in other acts that may fall under any of the preceding items or acts similar thereto.It is the Company, at its discretion, that shall determine whether your acts or omissions fall under any of the prohibitions under this section.</li>\n </ol>\n\n <h4>Article 6. Disclaimer</h4>\n <ol>\n <li>Although the information provided via the Service, including transfer guide data, have been verified with great care, it may not lead to the optimal route search result or may not always be current, accurate, or complete, and may not meet your purpose of use or demand. Therefore, please use the Service at your own risk.</li>\n <li>The search results provided by the Service are based on timetables. Please be reminded that actual services may differ depending on traffic conditions.</li>\n <li>There may be irregularities in train operations regarding detour routes shown on the Service. Please note that these search results use standard timetable information and may differ from actual operations. Please enquire with each transportation company regarding its services and departure times.</li>\n <li>Neither the Company nor Val Laboratory Corporation shall in any way be responsible or liable to replace or repair data, including transfer guide data shown on the Service, even if they do not meet your purpose of use or demand, and if not all data are accurate and complete.</li>\n <li>All transactions between you and an advertiser posting an advertisement on the Service or a business owner conducting business using another website to which the Service is linked will be made based on the responsibility of you and the advertiser or the business owner. The Company assumes no guarantee or liability for any damages or losses you may incur in such transactions.</li>\n <li>The Company shall not be liable for failures or any other effects caused by an incomplete environment for using the Service. In addition, the Company does not accept any liability for malfunctions or other effects attributable to your operating system, network environment, devices used, or software configurations.</li>\n <li>The Company and Val Laboratory Corporation will not be liable for any damages incurred by you arising from using the Service, except in case of willful intent or gross negligence on their part.</li>\n </ol>\n\n <h4>Article 7. Termination or Change of Service</h4>\n <p>The Company may change, suspend, or terminate all or part of the Service without notice. However, the Company shall not be liable or responsible in any way for any damages that may occur to you due to such change, suspension, or termination. </p>\n\n <h4>Article 8. Protection of Personal and Other Information</h4>\n <ol>\n <li>The Company shall comply with the Privacy Policy set forth by the Company and appropriately manage your personal information obtained through the provision of the Service.</li>\n <li>The Company may use information collected from your use of the Service (including, but not limited to, data on destinations, position information from GPS, and travel route information) for the good of the Service and/or the related services, or for other business of the Company (including creating statistical data and providing it to third parties to the extent necessary to conduct such business).</li>\n <li>When submitting the information outlined in the preceding paragraph to a third party, the Company shall ensure proper anonymization and not re-identify the anonymized information. Also, when providing such information to a third party, the Company contractually prohibits the receiving party from re-identifying it. In addition, the Company will not provide your personal information to third parties without following the provisions of the Privacy Policy mentioned in Paragraph 1.</li>\n <li>The Company shall be able to use statistical data prepared based on your personal information or the information outlined in Paragraph 2 without any restrictions, provided it does not identify any personal details.</li>\n </ol>\n\n <h4>Article 9. Indemnity</h4>\n <p>If you cause any damages to the Company due to any breach of these Terms or fraudulent or illegal acts, you will indemnify and hold the Company harmless against damages arising out of such acts. </p>\n\n <h4>Article 10. General Provisions</h4>\n <ol>\n <li>The Company may alter these Terms.</li>\n <li>In the event that the Company revises or modifies these Terms, the details of the revision/modification and the effective date will be notified in advance through means selected by the Company, including the website of the Service. If you use the Service after a change to the Terms takes effect, you will be deemed to have agreed to all terms and conditions of the revised Terms.</li>\n <li>The validity, construction, and performance of these Terms shall be governed by the laws of Japan.</li>\n <li>The Tokyo District Court shall have exclusive jurisdiction for the first instance concerning all disputes arising under these Terms.</li>\n </ol>\n\n </div>\n )\n}\n\nexport default TermsBodyEN;\n","import React from 'react';\nimport { changeLang, Lang } from '../../../states/query';\nimport { useTranslation } from 'react-i18next';\nimport TermsBodyJP from './TermsBodyJP';\nimport TermsBodyEN from './TermsBodyEN';\n\nconst TermsBody: React.FC = () => {\n const { i18n } = useTranslation();\n const lang = changeLang(i18n.language);\n switch(lang) {\n case Lang.ja: return <TermsBodyJP/>\n case Lang.en: return <TermsBodyEN/>\n }\n}\n\nexport default TermsBody;\n","import React from 'react';\nimport { Dialog, Slide, Theme, makeStyles, createStyles, Button, List, ListItem } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions/transition';\nimport TermsBody from './TermsBody';\nimport ModalHeader from '../ModalHeader';\nimport { isKeyDownEnter, TabIndexList } from '../../../utils/tabIndexList';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n }\n }),\n);\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst TermsDialog: React.FC = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const [openDialog, setOpenDialog] = React.useState(false);\n // ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ\n const handleClose = () => {\n setOpenDialog(false);\n };\n const handleOpen = () => {\n setOpenDialog(true);\n }\n return (\n <div>\n <div\n onClick={handleOpen}\n tabIndex={TabIndexList.TERMS_DIALOG}\n onKeyDown={ (e) => { isKeyDownEnter(e, handleOpen ) } }\n >\n {t('terms')}\n </div>\n <Dialog fullScreen open={openDialog} onClose={handleClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={handleClose}\n title={t('terms')}\n />\n <List>\n <ListItem>\n <TermsBody/>\n </ListItem>\n <ListItem>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.button}\n onClick={handleClose}\n >\n {t('close')}\n </Button>\n </ListItem>\n </List>\n </Dialog>\n </div>\n )\n}\n\nexport default TermsDialog;","// To parse this data:\n//\n// import { Convert, Extreme } from \"./file\";\n//\n// const extreme = Convert.toExtreme(json);\nexport interface Extreme {\n ResultSet: ResultSet;\n}\n\nexport interface ResultSet {\n apiVersion: string;\n engineVersion: string;\n Course: Course[];\n}\n\nexport interface Course {\n searchType: string;\n dataType: string;\n SerializeData: string;\n Price: Price[];\n Route: Route;\n fares: { [key: string]: Fare; };\n charges: { [key: string]: Charge; };\n}\n\nexport interface Price {\n kind: string;\n Oneway: string;\n Round: string;\n fareRevisionStatus?: string;\n toLineIndex?: string;\n fromLineIndex?: string;\n index: string;\n selected?: string;\n Name?: string;\n Type?: string;\n RevisionStatus?: string;\n Rate?: Rate;\n}\n\nexport interface Rate {\n text: string;\n area: string;\n}\n\nexport interface Route {\n timeOther: string;\n timeOnBoard: string;\n exhaustCO2: string;\n exhaustCO2atPassengerCar: string;\n distance: string;\n timeWalk: string;\n transferCount: string;\n Line: Line[];\n Point: Point[];\n}\n\nexport interface Line {\n stopStationCount: string;\n chargeIndex?: string;\n timeOnBoard: string;\n track: string;\n exhaustCO2: string;\n fareIndex: string;\n exhaustCO2atPassengerCar: string;\n distance: string;\n trainID?: string;\n Name: string;\n Type: string;\n ArrivalState: State;\n Destination: string;\n Number?: string;\n TimeReliability: string;\n DepartureState: State;\n Color: string;\n LineSymbol?: LineSymbol;\n InsideInformation?: InsideInformation;\n}\n\nexport interface InsideInformation {\n navigatorTransportation: string;\n Section?: Section;\n Stop?: Stop[];\n}\n\nexport interface Section {\n Name: string;\n NickName: string;\n Previous: Next;\n Next?: Next;\n}\n\nexport interface Next {\n Station: LineSymbol;\n}\n\nexport interface Stop {\n ArrivalState?: StopArrivalState;\n Point: StopPoint;\n DepartureState?: StopArrivalState;\n}\n\nexport interface StopArrivalState {\n Datetime: Datetime;\n}\n\nexport interface StopPoint {\n getOff: string;\n getOn: string;\n Station: LineSymbol;\n Prefecture: LineSymbol;\n}\n\nexport interface State {\n no: string;\n Type: string;\n Datetime: Datetime;\n}\n\nexport interface Datetime {\n text: string;\n operation: string;\n}\n\n\nexport interface LineSymbol {\n code: string;\n Name: string;\n}\n\nexport interface TypeClass {\n text: string;\n detail: string;\n}\n\nexport interface Point {\n Station: Station;\n Prefecture: LineSymbol;\n GeoPoint: GeoPoint;\n}\n\nexport interface GeoPoint {\n longi: string;\n lati: string;\n longi_d: string;\n gcs: Gcs;\n lati_d: string;\n}\n\nexport enum Gcs {\n Tokyo = \"tokyo\",\n Wgs = \"wgs84\"\n}\n\nexport interface Station {\n code: string;\n Name: string;\n Type: string;\n Yomi: string;\n}\n\n// Converts JSON strings to/from your types\nexport class Convert {\n public static toExtreme(json: string): Extreme {\n return JSON.parse(json);\n }\n\n /**\n * 駅ã™ã±ã‚ã¨Webサービスã®æŽ¢ç´¢çµæžœã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’Courseåž‹ã®é…列ã«æ•´å½¢ã™ã‚‹ã€‚\n * @param json 駅ã™ã±ã‚ã¨Webサービスã‹ã‚‰è¿”å´ã•ã‚ŒãŸæŽ¢ç´¢çµæžœã®JSON\n */\n public static toCourses(json: string): Course[] {\n const extreme: Extreme = JSON.parse(json);\n let courses: Course[] = [];\n\n // ResultSetè¦ç´ ・Courseè¦ç´ ãŒå˜åœ¨ã™ã‚‹å ´åˆã®ã¿ä»¥ä¸‹ã®å‡¦ç†ã‚’ã™ã‚‹ã€‚\n if (extreme.ResultSet && extreme.ResultSet.Course) {\n // Courseè¦ç´ ãŒé…列ã®å ´åˆã¯ãã®ã¾ã¾æ ¼ç´ã™ã‚‹ã€‚\n if (Array.isArray(extreme.ResultSet.Course)) {\n courses = extreme.ResultSet.Course;\n // Courseè¦ç´ ãŒé…列以外(オブジェクト)ã®å ´åˆã¯ã€é…列ã«è¿½åŠ ã™ã‚‹ã€‚\n } else {\n courses.push(extreme.ResultSet.Course);\n }\n\n // å„経路をループã•ã›ã‚‹ã€‚\n courses.forEach(course => {\n let fares: { [key: string]: Fare; } = {};\n let charges: { [key: string]: Charge; } = {};\n // é‹è³ƒãƒ»æ–™é‡‘æƒ…å ±ã®æ•´å½¢ã‚’ã™ã‚‹ã€‚\n course.Price.forEach(p => {\n switch (p.kind) {\n // 種別ãŒFare(é‹è³ƒï¼‰ã®å ´åˆã€‚\n case 'Fare':\n fares[p.index] = new Fare(p);\n break;\n // 種別ãŒCharge(料金)ã®å ´åˆã€‚\n case 'Charge':\n charges[p.index] = new Charge(p);\n break;\n default:\n break;\n }\n });\n\n // è·¯ç·šæƒ…å ±ã®æ•´å½¢ã‚’ã™ã‚‹ã€‚\n // (路線ãŒ1ã¤ã®å ´åˆã€é…列ã§ã¯ãªãオブジェクトã§è¿”ã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚。)\n let lines: Line[] = [];\n if (Array.isArray(course.Route.Line)) {\n lines = course.Route.Line;\n } else {\n lines.push(course.Route.Line);\n }\n\n course.fares = fares;\n course.charges = charges;\n course.Route.Line = lines;\n })\n }\n return courses;\n }\n\n public static extremeToJson(value: Extreme): string {\n return JSON.stringify(value);\n }\n}\n\nexport class Fare {\n fareRevisionStatus?: string;\n toLineIndex?: string;\n fromLineIndex?: string;\n index?: string;\n selected?: string;\n oneway?: string;\n revisionStatus?: string;\n round?: string;\n\n constructor(price: Price) {\n this.fareRevisionStatus = price.fareRevisionStatus;\n this.toLineIndex = price.toLineIndex;\n this.fromLineIndex = price.fromLineIndex;\n this.index = price.index;\n this.oneway = price.index;\n this.revisionStatus = price.RevisionStatus;\n this.round = price.Round;\n this.selected = price.selected;\n }\n}\n\nexport class Charge extends Fare{\n // eslint-disable-next-line\n constructor(price: Price) {\n super(price);\n };\n}\n\nexport enum APIPath {\n Extreme = '/closed/search/course/extreme',\n GeoStation = '/geo/station',\n AddressStation = '/address/station',\n PassStation = '/course/passStation',\n Condition = '/toolbox/course/condition',\n TrainInfo = '/operationLine/service/rescuenow/information',\n LightStation = '/station/light'\n}\n","import * as colorConvert from 'color-convert';\nimport { TypeClass } from \"../ekispert/extreme\";\nimport { Lang } from \"../states/query\";\nimport { Course, Point } from \"../services/ekispert/models\";\nimport { OperationLinePattern } from \"../services/ekispert/models/operationLinePattern\";\n\n/**\n * 駅ã™ã±ã‚ã¨ï¼ˆWebサービス)ã«é–¢ã™ã‚‹ç‹¬è‡ªã®å‡¦ç†ã‚’ã¾ã¨ã‚ãŸã‚¯ãƒ©ã‚¹ã€‚\n */\nclass Ekispert {\n /**\n * 路線åã¨å·è»Šç•ªå·ã‚’表ã™æ–‡å—列を考慮ã—ã¦è·¯ç·šå称を作æˆã™ã‚‹ã€‚\n * @param lineName 駅ã™ã±ã‚ã¨ä¸Šã®çµŒè·¯ã®åŒºé–“ã®è·¯ç·šå。\n */\n static setLineName(lineName: string, lineType: string | TypeClass, lineNumber = '', lang: Lang) {\n const toHankaku = (str: string) => {\n return str.replace(/[A-Zï½-zï¼-ï¼™]/g, function(s) {\n return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);\n });\n }\n // å·è»Šç•ªå·ã®è¦ç´ ãŒå˜åœ¨ã™ã‚‹å ´åˆã€‚\n if (lineNumber) {\n const type = typeof lineType === 'string' ? lineType : lineType.text;\n // 日本語版ã®å ´åˆã€‚\n if (lang === Lang.ja) {\n switch (type) {\n // 船ã®å ´åˆã¯æœ«å°¾ã«ã€Œè·¯ç·šå + (空白) + xx便ã€ã¨ã„ã†å½¢å¼ã«ã™ã‚‹ã€‚\n case 'ship':\n return lineName + ' ' + lineNumber + '便';\n // (一般開放用):空路ã®å ´åˆã«ã¯ã€ŒANAXXX + (空白) + 便ã€ã¨ã„ã†å½¢å¼ã«ã™ã‚‹\n case 'plane':\n return toHankaku(lineName) + lineNumber + '便';\n // ãã®ã»ã‹ï¼ˆé‰„é“・ãƒã‚¹ï¼‰ã®å ´åˆã¯ã€Œè·¯ç·šå + (空白) + xxå·ã€ã¨ã„ã†å½¢å¼ã«ã™ã‚‹ã€‚\n default:\n return lineName + ' ' + lineNumber + 'å·';\n }\n // 英語版ã®å ´åˆã€‚\n } else {\n switch (type) {\n // 船・ãƒã‚¹ã®å ´åˆã¯ã€Œè·¯ç·šå + (空白) +No.xxã€ã¨ã„ã†å½¢å¼ã«ã™ã‚‹ã€‚\n case 'ship':\n case 'bus':\n return lineName + ' No.' + lineNumber;\n default:\n // ãã®ã»ã‹ï¼ˆé‰„é“)ã®å ´åˆã¯ã€Œè·¯ç·šå + (空白) + xxã€ã¨ã„ã†å½¢å¼ã«ã™ã‚‹ã€‚\n return lineName + ' ' + lineNumber;\n }\n }\n // å·è»Šç•ªå·ã®è¦ç´ ãŒå˜åœ¨ã—ãªã„å ´åˆã€‚\n } else {\n return lineName;\n }\n }\n\n /**\n * å–å¾—ã—ãŸçµŒè·¯ã‹ã‚‰ç‰¹å®šã®çµŒè·¯ã‚’経由ã™ã‚‹çµŒè·¯ã®ã¿ã‚’絞り込む。\n * è·é›¢ã‹ã‚‰å¾’æ©ã§ã®æ‰€è¦æ™‚間を求ã‚る。\n * @param distance è·é›¢(m)\n */\n static getWalkTime(distance: string) {\n // 1分間ã«é€²ã‚€è·é›¢(m)を空港アクセスナビ内ã§ã¯53m(=80mã‚’1.5分ã§é€²ã‚€é€Ÿåº¦)ã¨å®šç¾©ã™ã‚‹ã€‚\n const sppedPerMinute = 53;\n // æ–‡å—列型ã§å—ã‘å–ã£ãŸè·é›¢ï¼ˆm)を数値型ã«å¤‰æ›ã™ã‚‹ã€‚\n const distanceNumber = Number.parseInt(distance);\n // 20m以下ã§ã‚ã‚‹å ´åˆã¯0分ã€æ‰€è¦åˆ†æ•°ã‚’1分間ã§é€²ã‚€è·é›¢ã§å‰²ã£ãŸå€¤ã‚’切り上ã’ãŸåˆ†æ•°ã‚’è¿”ã™ã€‚\n return (distanceNumber <= 20) ? '0' : Math.ceil(distanceNumber / sppedPerMinute).toString();\n }\n\n}\n\n/**\n * ä¹—æ›å›žé¿ã®é§…ã¨ã—ã¦å‰²å½“å¯èƒ½ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param points 1経路内ã®é§…・ãƒã‚¹åœï¼ˆãƒã‚¤ãƒ³ãƒˆï¼‰ã®é…列。\n * @param index 経路上ã§ä½•ç•ªç›®ã®é§…ã‹ã‚’表ã™ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã€‚\n * @param isDepartureGuide 出発案内ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @param pointLength Pointsã®é…列ã®é•·ã•\n * @param isPublic ãらãŸã³æ¤œç´¢ã‹\n */\nexport function assignableAsInterruptTransferStation(point: Point, index: number, isDepartureGuide: boolean, pointLength: number, isPublic?: boolean) {\n // 以é™ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã¯ã€ä¹—æ›å›žé¿ã®å¯¾è±¡é§…ã¨ã—ã¦è¨å®šã—ãªã„。\n // 経路ã®1駅目ã§ã‚ã‚‹å ´åˆã€‚\n if ( index === 0 ) { return false; }\n // 経路上ã®æœ€å¾Œã®é§…(ï¼åˆ°ç€æ¡ˆå†…ã®å ´åˆã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸç›®çš„地ã€å‡ºç™ºæ¡ˆå†…ã®å ´åˆã¯ä»®æƒ³ã®ç©ºæ¸¯ã®ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ï¼‰ã®å ´åˆã€‚\n if (index === pointLength - 1) { return false; }\n // é§…æƒ…å ±ãŒè¨å®šã•ã‚Œã¦ã„ãªã„å ´åˆã€‚(地点ãªã©ã®å ´åˆã€‚)\n if ( !point.Station ) { return false; }\n // é§…æƒ…å ±ã«ç¨®åˆ¥ãŒè¨å®šã•ã‚Œã¦ã„ãªã„å ´åˆã€‚\n if ( !point.Station.Type ) { return false; }\n // ãらãŸã³æ¤œç´¢ã®æ™‚ã«ã¯ã“ã¡ã‚‰ã‚’スã‚ップã™ã‚‹\n if(!isPublic) {\n // 出発案内ã§çµŒè·¯ã®æœ€å¾Œã‹ã‚‰2番目ã®é§…(=空港最寄りã®äº¤é€šæ©Ÿé–¢ï¼‰ã®å ´åˆã€‚\n if ( isDepartureGuide && index === pointLength - 2 ) { return false; }\n // 到ç€æ¡ˆå†…ã§çµŒè·¯ä¸Šã®2番目ã®é§…(=空港最寄りã®äº¤é€šæ©Ÿé–¢ï¼‰ã®å ´åˆã€‚\n if (!isDepartureGuide && index === 1 ) { return false; }\n }\n // 除外ã™ã‚‹é§…ã®ç¨®åˆ¥ä¸€è¦§\n const rejectStationTypeList = ['plane', 'walk', 'strange'];\n // 駅ã®ç¨®åˆ¥ãŒã€Œç©ºæ¸¯ã€ã€Œå¾’æ©ã€ã€Œç‰¹æ®Šã€ã®å ´åˆã«ã¯ä¹—ã‚Šæ›ãˆå›žé¿ã®å¯¾è±¡é§…ã«ã—ãªã„\n if(rejectStationTypeList.includes(point.Station.Type)) {\n return false;\n }\n // 上記ã®æ¡ä»¶ã‚’ã„ãšã‚Œã‚‚満ãŸã•ãªã„å ´åˆã®ã¿ã€trueã‚’è¿”ã™ã€‚\n return true;\n}\n\n/**\n * é¸æŠžã—ã¦ã„る経路ã®é‹è¡Œè·¯ç·šãƒ‘ターンをå–å¾—ã™ã‚‹ã€‚\n * @param 1経路ã«ç´ã¥ãé‹è¡Œè·¯ç·šãƒ‘ターン。\n */\nexport function getOperationLinePatterns(operationLinePatterns: any): OperationLinePattern[] {\n // 未定義ã®å ´åˆã¯ç©ºé…列を返ã™ã€‚\n if (!operationLinePatterns) { return []; }\n // é…列ã®å ´åˆã¯ãã®ã¾ã¾è¿”ã™ã€‚\n if (Array.isArray(operationLinePatterns)) {\n return operationLinePatterns;\n // é…列ã§ã¯ãªã„å ´åˆã¯é…列化ã—ã¦è¿”ã™ã€‚\n } else {\n return [operationLinePatterns];\n }\n}\n\n/** \n * 区間インデックス(0始ã¾ã‚Šï¼‰ã«å¯¾å¿œã™ã‚‹é‹è¡Œè·¯ç·šãƒ‘ターンをå–å¾—ã™ã‚‹ã€‚\n * @param operationLinePatterns 経路全体ã®é‹è¡Œè·¯ç·šãƒ‘ターンã®é…列。\n * @param 区間インデックス(0始ã¾ã‚Šã®å€¤ï¼‰ã€‚\n * */\nexport function getOperationLinePatternInSection(operationLinePatterns: OperationLinePattern[], sectionIndex: number) {\n return operationLinePatterns.find((pattern) => pattern.routeLineIndex === (sectionIndex + 1).toString());\n}\n\n/** \n * é‹è¡Œè·¯ç·šãƒ‘ターンã‹ã‚‰é‹è¡Œè·¯ç·šã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param operationLinePattern é‹è¡Œè·¯ç·šãƒ‘ターン。(é‹è¡Œè·¯ç·šãƒ‘ターン1件分ã®ã‚ªãƒ–ジェクト。)\n * */\nexport function getOperationLineCodes(operationLinePattern: OperationLinePattern) {\n // é‹è¡Œè·¯ç·šãƒ‘ターンã®è·¯ç·šæƒ…å ±ãŒé…列ã§ã‚ã£ãŸå ´åˆã€‚\n if (Array.isArray(operationLinePattern.Line)) {\n // é‹è¡Œè·¯ç·šãƒ‘ターンコードã®ã¿ã®é…列をå–å¾—ã™ã‚‹ã€‚\n return operationLinePattern.Line.map((l) => l.code);\n } else {\n // é‹è¡Œè·¯ç·šãƒ‘ターンã®è·¯ç·šæƒ…å ±ãŒé…列ã§ã¯ãªã„(オブジェクトã§ã‚ã‚‹ï¼‰å ´åˆã€‚\n return [operationLinePattern.Line.code];\n }\n}\n\n/**\n * 経路全体ã§ã®å‡ºç™ºæ—¥æ™‚(最åˆã®åŒºé–“ã®å‡ºç™ºæ—¥æ™‚)をå–å¾—ã™ã‚‹ã€‚\n * @param course 1経路分ã®Courseオブジェクト。\n */\nexport function getDepartureDateTimeInCourse(course: Course) {\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n /** 経路ã®æœ€åˆï¼ˆ1番目)ã®Lineオブジェクト。 */\n const firstLine = lines[0];\n // 経路全体ã§ã®å‡ºç™ºæ—¥æ™‚(最åˆã®åŒºé–“ã®å‡ºç™ºæ—¥æ™‚)を返ã™ã€‚\n return firstLine.DepartureState.Datetime.text;\n}\n\n/**\n * 経路全体ã§ã®åˆ°ç€æ—¥æ™‚(最後ã®åŒºé–“ã®åˆ°ç€æ—¥æ™‚)をå–å¾—ã™ã‚‹ã€‚\n * @param course 1経路分ã®Courseオブジェクト。\n */\nexport function getArrivalDateTimeInCourse(course: Course) {\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n /** 経路ã®æœ€å¾Œï¼ˆ1番目)ã®Lineオブジェクト。 */\n const lastLine = lines.slice(-1)[0];\n // 経路全体ã§ã®åˆ°ç€æ—¥æ™‚(最後ã®åŒºé–“ã®åˆ°ç€æ—¥æ™‚)を返ã™ã€‚\n return lastLine.ArrivalState.Datetime.text;\n}\n\n/**\n* 10進数ã®RGBã®å€¤ã‚’CSSã§åˆ©ç”¨ã§ãるカラーコードã«å¤‰æ›ã™ã‚‹ã€‚\n* @param {string} rgbCode パラメーターã§æ¸¡ã£ã¦ããŸ10進数ã®RGBを表ã™9ケタã®å€¤ï¼ˆä¾‹:076160206)\n* @return {string} CSSã§åˆ©ç”¨ã§ãã‚‹16進数ã®ã‚«ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ï¼ˆä¾‹:#4CA0CE)\n*/\nexport function convertToHexColorCode(rgbCode: string): string {\n // 9ケタã®æ•°å€¤ã®ã†ã¡ã€R部分(1æ–‡å—ç›®ã‹ã‚‰3æ–‡å—目)を切り出ã™ã€‚\n const r = Number.parseInt(rgbCode.slice(0, 3));\n // 9ケタã®æ•°å€¤ã®ã†ã¡ã€G部分(4æ–‡å—ç›®ã‹ã‚‰6æ–‡å—目)を切り出ã™ã€‚\n const g = Number.parseInt(rgbCode.slice(3, 6));\n // 9ケタã®æ•°å€¤ã®ã†ã¡ã€B部分(7æ–‡å—ç›®ã‹ã‚‰9æ–‡å—目)を切り出ã™ã€‚\n const b = Number.parseInt(rgbCode.slice(6, 9));\n\n // 10進数ã®RGBã®å€¤ã‚’16進数ã®æ•°å€¤ã«å¤‰æ›ã—ã€1æ–‡å—ç›®ã«ã€Œ#ã€ã‚’åŠ ãˆã¦CSSã§åˆ©ç”¨ã§ãるカラーコードã«ã™ã‚‹ã€‚\n return '#' + colorConvert.rgb.hex([r, g, b]);\n}\n\nexport default Ekispert;\n","import axios from 'axios';\nimport { subDays, format, addDays } from 'date-fns'\nimport { ConditionDetail, Extreme, Line } from './models';\nimport { Point } from './models/stationLight';\nimport { Candidate } from './../../components/search/Candidate';\nimport { APIPath } from '../../ekispert/extreme';\n\nimport Ekispert from '../../utils/ekispert';\nimport { Lang } from '../../states/query';\nimport DateTime from '../../utils/dateTime';\n\n/**\n * インクリメンタルサーãƒã‚’ã™ã‚‹éš›ã«ç‰¹å®šã®æ–‡å—列をエスケープã™ã‚‹\n * @param input 入力文å—列\n */\nexport function escapeString(input: string) {\n return input.replace(/[&=$?]/g, '');\n}\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: `${process.env['REACT_APP_API_ENDPOINT']}/ekispert/` || '',\n timeout: 7000,\n};\n\nexport const getEkispertAPIFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n const getEkispertAPI = async (conditions: object, path: APIPath) => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n // リクエストパラメーター。\n const params = {\n ...conditions,\n };\n try {\n const response = await instance.get(path, { params });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n // å„APIã«å¿œã˜ã¦Responseã‚’æˆå½¢ã—ã¦è¿”ã™\n switch(path){\n case APIPath.Extreme:\n // レスãƒãƒ³ã‚¹å†…ã«Courseè¦ç´ ãŒå˜åœ¨ã—ãªã„å ´åˆã€‚\n if (!response.data.ResultSet.Course) {\n throw new Error('Not Found Course');\n }\n let extreme: Extreme = response.data;\n // APIレスãƒãƒ³ã‚¹ã®çµŒè·¯ã‚’è¿”ã™ã€‚\n return extreme.ResultSet.Course;\n case APIPath.PassStation:\n return response.data.ResultSet.Point;\n case APIPath.Condition:\n let condition: ConditionDetail = response.data;\n return condition.ResultSet.Condition;\n case APIPath.GeoStation:\n case APIPath.AddressStation:\n return response.data.ResultSet.Point;\n case APIPath.TrainInfo:\n return response.data.ResultSet;\n case APIPath.LightStation:\n return response.data.ResultSet.Point.Station;\n default:\n return response.data.ResultSet;\n }\n } catch(err) {\n throw err;\n }\n }\n return getEkispertAPI;\n};\n\n\nconst getRail = async (conditions: object) => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(DEFAULT_API_CONFIG);\n // リクエストパラメーター。\n const params = {\n ...conditions,\n };\n try {\n const response = await instance.get(`rail`, { params });\n return response;\n } catch(err) {\n throw err;\n }\n}\n\n// 発ç€æ™‚é–“ã‚’è¿½åŠ ã—ãŸLine\nexport interface AddTimeLine extends Line {\n depTime: Date,\n arrTime: Date\n}\n\n/**\n * 駅ã™ã±ã‚ã¨ã®å‰å¾Œã®ãƒ€ã‚¤ãƒ¤ä¸€è¦§ã‹ã‚‰å–å¾—ã—ら時刻文å—列よりDateåž‹ã«å¾©å…ƒã•ã›ã‚‹\n * @param baseDate 基準ã¨ãªã‚‹æ—¥ä»˜\n * @param dateString 駅ã™ã±ã‚ã¨ã®å‰å¾Œã®ãƒ€ã‚¤ãƒ¤ä¸€è¦§ã‹ã‚‰å–å¾—ã—ãŸæ™‚刻文å—列( 例: 08:55:00+09:00 )\n */\nexport const getRestoreTime = (baseDate: Date, dateString: string) => {\n const baseFormat: string = DateTime.JSTFormat(baseDate, 'yyyy/MM/dd');\n const getTimeRegExp = /(\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2})/;\n const match = dateString.match(getTimeRegExp);\n if(match && match[1]) {\n return new Date(`${baseFormat} ${match[1]}`);\n }\n return null;\n}\n\nexport const filterTrainList = (lines: Line[], selectedLine: Line, lang: Lang) => {\n const range = 5;\n // é…列ã§ã‚ã‚Œã°ãã®ã¾ã¾ã€é…列ã§ã¯ãªã„å ´åˆã¯é…列化ã—ã¦æ ¼ç´ã™ã‚‹ã€‚\n lines = (lines instanceof Array) ? lines: [lines];\n let matchIdx: number = -1;\n const depTime = selectedLine.DepartureState.Datetime.text.split('T')[1];\n const arrTime = selectedLine.ArrivalState.Datetime.text.split('T')[1];\n // 基準ã¨ãªã‚‹æ—¥ä»˜ã‚’é¸æŠžã—ãŸè·¯ç·šæƒ…å ±ã‹ã‚‰æ±‚ã‚ã‚‹\n let baseDate = new Date(selectedLine.ArrivalState.Datetime.text);\n // é¸æŠžã—ãŸè·¯ç·šãŒ 00:00 ã‚’éŽãŽã‚‹åˆ—車ã ã£ãŸå ´åˆã€å‰æ—¥ã‚’基準日ã¨ã™ã‚‹\n if(selectedLine.ArrivalState.Datetime.operation === 'yesterday' ){\n baseDate = subDays(baseDate, 1);\n }\n let setLines: AddTimeLine[] = lines.map((line:Line, idx:number) => {\n const setLine: AddTimeLine = {\n ...line,\n depTime: new Date(),\n arrTime: new Date()\n };\n const baseDepDate = (line.DepartureState.Datetime.operation === 'yesterday')? addDays(baseDate, 1): baseDate;\n const getDepDate: Date | null = getRestoreTime(baseDepDate, line.DepartureState.Datetime.text);\n if(getDepDate !== null) {\n setLine.depTime = getDepDate;\n }\n const baseArrDate = (line.ArrivalState.Datetime.operation === 'yesterday')? addDays(baseDate, 1): baseDate;\n const getArrDate: Date | null = getRestoreTime(baseArrDate, line.ArrivalState.Datetime.text);\n if(getArrDate !== null) {\n setLine.arrTime = getArrDate;\n }\n // 出発時刻・到ç€æ™‚刻ãŒä¸€è‡´ã™ã‚‹ã‹åˆ¤å®š\n if(matchIdx < 0 && line.DepartureState.Datetime.text === depTime && line.ArrivalState.Datetime.text === arrTime ){\n matchIdx = idx;\n }\n return setLine;\n });\n\n // 路線åã‚’å·è»Šç•ªå·ï¼ˆNumber)è¦ç´ を考慮ã—ã¦è¨å®šã™ã‚‹ã€‚\n setLines = setLines.map((line: AddTimeLine) => {\n const lineType = (typeof line.Type === 'string') ? line.Type : line.Type.text;\n // 日本語版ã¨è‹±èªžç‰ˆã®é‰„é“ã®å ´åˆã¯å·è»Šç•ªå·ãŒã‚ã‚Œã°ä»˜ä¸Žã™ã‚‹ã€‚\n if (lang === Lang.ja || lineType === 'train') {\n line.Name = Ekispert.setLineName(line.Name, line.Type, line.Number, lang);\n }\n return line;\n })\n\n // å‰å¾Œã®åˆ—車ã«åˆ†å‰²\n if(matchIdx >= 0){\n return {\n before: setLines.slice((matchIdx - range < 0? 0: matchIdx - range), matchIdx),\n current: setLines[matchIdx],\n after: setLines.slice(matchIdx + 1, matchIdx + range + 1)\n }\n }\n return null;\n}\n\n/**\n * å‰å¾Œ5本ã¨è©²å½“ã®åˆ—車ã«åˆ†é›¢ã—ã¾ã™\n * @param conditions /rail ã«æ¸¡ã™ãŸã‚ã®ãƒ‘ラメーター\n * @param selectedLine é¸æŠžã—ã¦ã„る列車ã®Object\n * @param lang アプリケーション上ã§æŒ‡å®šã•ã‚Œã¦ã„る言語è¨å®šã®å€¤ã€‚\n */\nexport const getZengoTrain = async (conditions: object, selectedLine: Line, lang: Lang) => {\n const response = await getRail(conditions);\n let lines: Line[] = response.data.ResultSet.Line;\n if(typeof lines === 'undefined'){\n return null;\n }\n return filterTrainList(lines, selectedLine, lang);\n}\n\nexport const getCourseEdit = async (conditions: object) => {\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(DEFAULT_API_CONFIG);\n // リクエストパラメーター。\n const params = {\n ...conditions,\n };\n try {\n const response = await instance.get(`closed/course/edit`, { params });\n return response;\n } catch(err) {\n throw err;\n }\n}\n\n/**\n * データãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å–å¾—ã™ã‚‹\n */\nexport async function getDataVersion() {\n const config = {\n ...DEFAULT_API_CONFIG,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n const params = {};\n try {\n const response = await instance.get('dataversion', { params });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.ResultSet;\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * é§…ç°¡æ˜“æƒ…å ±ï¼ˆ/station/light)をå–å¾—ã™ã‚‹ã€‚\n * (主ã«é§…åã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«ã‚µãƒ¼ãƒç”¨é€”。)\n * @param input テã‚ストボックスã§å…¥åŠ›ã•ã‚ŒãŸå€¤ã€‚\n * @param lang 言語指定(ja/en)\n * @param optionConfig 独自ã§æŒ‡å®šã—ãŸAPIã®è¨å®šãªã©ï¼ˆä»»æ„)\n */\nexport async function getClosedStationLight (input: string, lang:string = 'ja', optionConfig?: object) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n const params = {\n 'name': escapeString(input),\n 'language': lang,\n 'type': 'train:ship:bus',\n 'stationNameType': 'unique',\n };\n\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2019/12/23ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n if(params.name === '') {\n throw new Error('入力値{name}ãŒç©ºã§ã™');\n }\n let response = await instance.get(`station/light`, { params });\n\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n let points: Point[] = [];\n\n // å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒundefinedã§ã¯ãªã„å ´åˆã«ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®å€¤ã‚’代入ã™ã‚‹ã€‚\n if (typeof response.data.ResultSet.Point !== undefined && response.data.ResultSet.Point !== undefined) {\n // å–å¾—ã—ãŸç°¡æ˜“é§…æƒ…å ±ãŒé…列ã®å ´åˆã¯ãã®ã¾ã¾ã€ã‚ªãƒ–ジェクトã®å ´åˆã¯é…列ã«ã¯ã‚る。\n points = (response.data.ResultSet.Point instanceof Array) ? response.data.ResultSet.Point : [response.data.ResultSet.Point];\n }\n\n const stations = points.length === 0 ? [] : points.map(p => (new Candidate(p.Station.Name, p.Station.code, p.Station.Type)));\n return stations;\n } catch (err) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼å†…容を出力ã™ã‚‹\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(\"インクリメンタルサーãƒ(/station/light)ã«ã¦ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\");\n console.error(err);\n }\n return [];\n }\n}\n\n/**\n * é§…è©³ç´°æƒ…å ±ï¼ˆ/station/)をå–å¾—ã™ã‚‹\n * (広告ã®å‡ºç™ºãƒ»åˆ°ç€é§…ã®ç·¯åº¦çµŒåº¦ã‚’å–å¾—ã™ã‚‹ãŸã‚)\n * @param code å–å¾—ã™ã‚‹é§…コード\n * @param optionConfig 独自ã§æŒ‡å®šã—ãŸAPIã®è¨å®šãªã©ï¼ˆä»»æ„)\n */\nexport async function getClosedStationDetail(code: string, optionConfig?: object) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n const params = {\n 'code': code,\n 'type': 'train:ship:bus',\n 'gcs': 'wgs84'\n };\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2019/12/23ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n let response = await instance.get(`station`, { params });\n\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n // å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒundefinedã§ã¯ãªã„å ´åˆã«ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®å€¤ã‚’代入ã™ã‚‹ã€‚\n if (typeof response.data.ResultSet.Point !== undefined && response.data.ResultSet.Point !== undefined) {\n return response.data.ResultSet.Point;\n }\n } catch (err) {\n throw err;\n }\n}\n\n/**\n * 空路平å‡è·¯ç·šã‚’å–å¾—ã™ã‚‹ï¼ˆ/rail)\n * @param depStationCode 出発地駅コード\n * @param arrStationCode 目的地駅コード\n * @param optionConfig 独自ã§æŒ‡å®šã—ãŸAPIã®è¨å®šãªã©ï¼ˆä»»æ„)\n */\nexport async function getAverageRail(depStationCode: string, arrStationCode: string, optionConfig?: object) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n const params = {\n 'type': 'plane',\n 'from': depStationCode,\n 'to': arrStationCode\n };\n\n try {\n let response = await instance.get(`rail`, { params });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n if(response.data.ResultSet) {\n return response.data.ResultSet;\n }\n else {\n throw new Error('/rail Response is Wrong!')\n }\n }\n catch(e) {\n throw e;\n }\n}\n\n/**\n * 空路時刻表をå–å¾—ã™ã‚‹ (/plane/timetable)\n * @param railName 対応ã™ã‚‹è·¯ç·šå(/railã§å–å¾—ã—ãŸåå‰ï¼‰\n * @param date å–å¾—ã™ã‚‹æ—¥ä»˜\n * @param direction 上りã‹ã©ã†ã‹\n * @param optionConfig 独自ã§æŒ‡å®šã—ãŸAPIã®è¨å®šãªã©ï¼ˆä»»æ„)\n */\nexport async function getPlaneTimeTbile(railName: string, date: Date, direction: boolean, optionConfig?: object) {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n const yyyymmdd = DateTime.JSTFormat(date, 'yyyyMMdd');\n const params = {\n 'railName': railName,\n 'direction': direction.toString(),\n 'date': yyyymmdd\n };\n\n try {\n let response = await instance.get(`plane/timetable`, { params });\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n if(response.data.ResultSet) {\n return response.data.ResultSet;\n }\n else {\n throw new Error('/plane/timetable Response is Wrong!')\n }\n }\n catch(e) {\n throw e;\n }\n}\n","import React from 'react';\nimport { changeLang, Lang } from '../../states/query';\nimport { makeStyles, createStyles } from '@material-ui/core';\nimport { getDataVersion } from '../../services/ekispert/api';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n subtitle: {\n textDecoration: 'underline'\n },\n annotation: {\n fontSize: '12px',\n }\n }),\n);\n\nconst ServiceAboutBody: React.FC = () => {\n const [copyRights, setCopyRights] = React.useState<string[]> ([]);\n const [ init, setInit ] = React.useState(true);\n const { i18n } = useTranslation();\n const classes = useStyles();\n const lang = changeLang(i18n.language)\n React.useEffect(()=>{\n if(init) {\n getCopyRights();\n setInit(false);\n }\n }, [init]);\n const getCopyRights = async () => {\n const dataVersion = await getDataVersion();\n let copyRights = dataVersion.Copyrights.text.split('\\n');\n // å…ˆé ã®äº¤æ‰¿ã ã‘ANAã®ã‚‚ã®ã«å·®ã—替ãˆ\n copyRights[0] = \"交承 令和2å¹´ 177å·\";\n setCopyRights(copyRights);\n }\n\n const ServiceAboutBodyJP: React.FC = () => {\n return (\n <div>\n <h3 className={classes.subtitle}>ã“ã®ã‚µãƒ¼ãƒ“スã«ã¤ã„ã¦</h3>\n <p>航空便ã®æœ€æ–°é‹èˆªæƒ…å ±*3ã¨ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚„æä¹—å£ãƒ»ä¿å®‰æ¤œæŸ»å ´ãªã©ã®ãƒã‚±ãƒ¼ã‚·ãƒ§ãƒ³æƒ…å ±ã‚’çµŒè·¯æ¤œç´¢ã‚µãƒ¼ãƒ“ã‚¹ã«çµ±åˆã—ã€ã€Œå‡ºç™ºåœ°ã‹ã‚‰æä¹—ã¾ã§ã€ã€Œé™æ©Ÿã‹ã‚‰æœ€çµ‚目的地ã¾ã§ã€ã®ä¸€æ°—通貫ãªãƒ«ãƒ¼ãƒˆæ¡ˆå†…ã‚’è¡Œã†ã“ã¨ã§ã‚·ãƒ¼ãƒ レスãªç§»å‹•ä½“験をã”æä¾›ã„ãŸã—ã¾ã™ã€‚ã¾ãŸã€åœ°ä¸Šäº¤é€šæ©Ÿé–¢ã¨ã®é€£æº<sup>*1</sup> ã«ã‚ˆã‚Šã€ç©ºæ¸¯ã¾ã§ã®ã‚¢ã‚¯ã‚»ã‚¹ã®äºˆç´„・決済<sup>*2</sup> ã‚‚å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚</p>\n <p className={classes.annotation}>*1. 地上交通機関ã¨ã®é€£æºã¯é †æ¬¡æ‹¡å¤§ã—ã¦ã¾ã„ã‚Šã¾ã™ã€‚</p>\n <p className={classes.annotation}>*2. 地上交通機関サイトã§ã®äºˆç´„ã¨ãªã‚Šã¾ã™ã€‚</p>\n <p className={classes.annotation}>*3. Peachã€JAC(日本エアコミューター)ã€å¤©è‰ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ã¨ã®ã‚³ãƒ¼ãƒ‰ã‚·ã‚§ã‚¢ä¾¿ã¾ãŸã¯ JAL,Spring Japané‹èˆªä¾¿ã¯åæ˜ ã•ã‚Œã¾ã›ã‚“。詳ã—ãã¯å„社ホームページをã”確èªãã ã•ã„。</p>\n <h3 className={classes.subtitle}>推奨環境</h3>\n <p>â—PC・スマートフォン(ブラウザ)</p>\n <p>Google chrome(最新版)</p>\n <p>Safari(最新版)</p>\n <p>â—スマートフォン(OS)</p>\n <p>iOS11以é™</p>\n <p>Android5.0以é™</p>\n <h3 className={classes.subtitle}>時刻表ã«ã¤ã„ã¦</h3>\n {\n copyRights && copyRights.map((x, index)=>{\n if(x){\n return (\n <p key={index}>{x}</p>\n )\n }\n return null;\n })\n }\n <p>â€»çµŒè·¯æƒ…å ±æ供元:駅ã™ã±ã‚ã¨</p>\n <p>「駅ã™ã±ã‚ã¨ã€ã¯æ ªå¼ä¼šç¤¾ãƒ´ã‚¡ãƒ«ç ”究所ã®ç™»éŒ²å•†æ¨™ã§ã™ã€‚</p>\n <p>※鉄é“é‹è¡Œæƒ…å ±ï¼šåˆ—è»Šé…延ãªã©ã€é‰„é“ã®é‹è¡Œæƒ…å ±ã‚‚ã”確èªã„ãŸã ã‘ã¾ã™ã€‚</p>\n <p>鉄é“é‹è¡Œæƒ…å ±æä¾›å…ƒï¼šæ ªå¼ä¼šç¤¾ãƒ¬ã‚¹ã‚ューナウ</p>\n </div>\n );\n }\n\n const ServiceAboutBodyEN: React.FC = () => {\n return (\n <div>\n <h3 className={classes.subtitle}>What is Airport Access</h3>\n <p>You can now get information on how to get to the departure airport and board your flight, and also on how to get to your final destination after disembarkation.</p>\n\n <h3 className={classes.subtitle}>Recommended Environment</h3>\n <p>â—PC /Smartphone―Browser</p>\n <p>Google Chrome latest version</p>\n <p>Safari latest version</p>\n <p>â—Smartphone―APP</p>\n <p>iOS11</p>\n <p>Android 5.0</p>\n\n <h3 className={classes.subtitle}>About Timetable</h3>\n <p>ã€Kosho Reiwa 2<sup>nd</sup>, No117】</p>\n <p>・JR timetable data is provided by KOTSUSHINBUNSHA. This data has been based on the latest edition. No part of this site may be distributed, modified and reproduced in any form without our written permission.</p>\n <p>・JR bus timetable data is provided by KOTSUSHINBUNSHA. This data has been based on the latest edition. No part of this site may be distributed, modified and reproduced in any form without our written permission</p>\n <p>・Meitetsu Bus timetable is based on data created by Meitetsu Bus Co., Ltd. However, some bus stop pole information was processed by Val Laboratory Corporation at their own responsibility. In addition, some contents have been processed by Val Laboratory Corporation at their own responsibility.</p>\n\n <p>*Route Information provided by Eki-spert</p>\n <p> “Eki-Spert†is registered trademark of Val Laboratory</p>\n <p>*You can also check train operation status such as train delays.</p>\n <p>Information provided by Rescuenow Inc. </p>\n </div>\n )\n }\n\n if(lang === Lang.ja){\n return <ServiceAboutBodyJP/>\n } else {\n return <ServiceAboutBodyEN/>\n }\n}\n\nexport default ServiceAboutBody;\n","import React from 'react';\nimport { makeStyles, createStyles } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\nimport { changeLang, Lang } from '../../states/query';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n subtitle: {\n textDecoration: 'underline'\n },\n annotation: {\n fontSize: '12px',\n }\n }),\n);\n\nconst TaxiServiceAboutBody: React.FC = () => {\n const classes = useStyles();\n const { i18n } = useTranslation();\n const lang = changeLang(i18n.language);\n\n const JPBody: React.FC = () => {\n return (\n <div>\n <h3 className={classes.subtitle}>ã“ã®ã‚µãƒ¼ãƒ“スã«ã¤ã„ã¦</h3>\n <p>メールã«ã‚ˆã‚‹ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼é…車予約サービスã§ã™ã€‚ã”利用空港ãŠã‚ˆã³ã”利用航空便ã«ã‚ã‚ã›ã¦ã€åœ°å›³ä¸Šã§é¸æŠžã„ãŸã ã„ãŸã€ŒæŒ‡å®šåœ°ç‚¹ã‹ã‚‰ç©ºæ¸¯ã¾ã§ã€ã€Œç©ºæ¸¯ã‹ã‚‰æŒ‡å®šåœ°ç‚¹ã¾ã§ã€ã®ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ã®é…車予約ãŒå¯èƒ½ã§ã™ã€‚</p>\n <p className={classes.annotation}>※ææºã®ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã¯é †æ¬¡æ‹¡å¤§ã—ã¦ã¾ã„ã‚Šã¾ã™ã€‚</p>\n <h3 className={classes.subtitle}>推奨環境</h3>\n <p>â—PC・スマートフォン(ブラウザ)</p>\n <p>Google chrome(最新版)</p>\n <p>Safari(最新版)</p>\n <p>â—スマートフォン(OS)</p>\n <p>iOS11以é™</p>\n <p>Android5.0以é™</p>\n <h3 className={classes.subtitle}>所è¦è·é›¢ãŠã‚ˆã³æ‰€è¦æ™‚é–“ã®æ¦‚算表示ã«ã¤ã„ã¦</h3>\n <p>地図ã§é¸æŠžã„ãŸã ã„ãŸåº§æ¨™ã‚’ã‚‚ã¨ã«æƒ³å®šèµ°è¡Œè·é›¢ãŠã‚ˆã³æƒ³å®šæ‰€è¦æ™‚間を算出ã—ã¦ãŠã‚Šã¾ã™ã€‚所è¦æ™‚é–“ã®å–å¾—ã«ã¯ã€ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼ã®ã”乗車予定時刻を起点ã¨ã—ãŸæ··é›‘äºˆæƒ³ã‚’åŠ å‘³ã—ã¦æ‰€è¦æ™‚間を表示ã—ã¦ãŠã‚Šã¾ã™ãŒã€é“路事情ç‰ã«ã‚ˆã‚Šå®Ÿéš›ã¨ç•°ãªã‚‹å ´åˆãŒã”ã–ã„ã¾ã™ã®ã§ã”注æ„ãã ã•ã„。</p>\n <p>â€»åœ°å›³æƒ…å ±æ供元:Google</p>\n </div>\n );\n }\n\n const EnBody: React.FC = () => {\n return (\n <div>\n <h3 className={classes.subtitle}>About this service</h3>\n <p>This is a limousine and taxi dispatch booking service based on email. You can book a limousine or taxi dispatch “to the airport from your specified location†or “from the airport to your specified location†as selected on a map, based on the airport and airline you are using. </p>\n <p className={classes.annotation}>* Partnerships with limousine and taxi dispatch service companies will be expanded successively.</p>\n <h3 className={classes.subtitle}>Recommended environment</h3>\n <p>PC / smartphone (browser)</p>\n <p>Google Chrome (latest version)</p>\n <p>Safari (latest version)</p>\n <p>Smartphone (OS)</p>\n <p>iOS 11 or later</p>\n <p>Android 5.0 or later</p>\n <h3 className={classes.subtitle}>About shown estimate of travel distance and time</h3>\n <p>The system calculates the estimated driving distance and travel time based on the coordinates you select on the map. To obtain and show the travel time, the system factors in predicted congestion based on the time the limousine taxi is booked for. However, please keep in mind that it may differ from the actual travel time due to the road situation, etc.</p>\n <p>* Source of map information: Google</p>\n </div>\n );\n }\n\n switch(lang) {\n case Lang.en:\n return <EnBody/>\n case Lang.ja:\n return <JPBody/>\n }\n\n}\n\nexport default TaxiServiceAboutBody;\n","import React from 'react';\nimport { useLocation } from \"react-router-dom\";\nimport { Dialog, Slide, Theme, makeStyles, createStyles, Button, List, ListItem } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions/transition';\nimport ServiceAboutBody from './ServiceAboutBody';\nimport ModalHeader from './ModalHeader';\nimport { useTranslation } from 'react-i18next';\nimport { TabIndexList, isKeyDownEnter } from '../../utils/tabIndexList';\nimport TaxiServiceAboutBody from './TaxiServiceAboutBody';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n }\n }),\n);\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst ServiceAboutDialog: React.FC = () => {\n const classes = useStyles();\n const [openDialog, setOpenDialog] = React.useState(false);\n const { t } = useTranslation();\n const location = useLocation();\n const pathName = location.pathname;\n const isTaxi = pathName.includes('booking-taxi') || pathName.includes('booking');\n\n // ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ\n const handleClose = () => {\n setOpenDialog(false);\n };\n const handleOpen = () => {\n setOpenDialog(true);\n }\n return (\n <div>\n <div\n onClick={handleOpen}\n tabIndex={TabIndexList.SERVICE_ABOUT_DIALOG}\n onKeyDown={ (e) => { isKeyDownEnter(e, handleOpen ) } }\n >\n {t('about_service')}\n </div>\n <Dialog fullScreen open={openDialog} onClose={handleClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={handleClose}\n title={t('about_service')}\n />\n <List>\n <ListItem>\n { isTaxi ? <TaxiServiceAboutBody /> : <ServiceAboutBody /> }\n </ListItem>\n <ListItem>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.button}\n onClick={handleClose}\n >\n {t('close')}\n </Button>\n </ListItem>\n </List>\n </Dialog>\n </div>\n )\n}\n\nexport default ServiceAboutDialog;\n","import React from 'react';\nimport { makeStyles, createStyles } from '@material-ui/core';\nimport { getDataVersion } from '../../../services/ekispert/api';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n subtitle: {\n textDecoration: 'underline'\n },\n annotation: {\n fontSize: '12px',\n }\n }),\n);\n\nconst PublicServiceAboutBody: React.FC = () => {\n const [copyRights, setCopyRights] = React.useState<string[]> ([]);\n const [ init, setInit ] = React.useState(true);\n React.useEffect(()=>{\n if(init) {\n getCopyRights();\n setInit(false);\n }\n }, [init]);\n const getCopyRights = async () => {\n const dataVersion = await getDataVersion();\n let copyRights = dataVersion.Copyrights.text.split('\\n');\n // å…ˆé ã®äº¤æ‰¿ã ã‘ANAã®ã‚‚ã®ã«å·®ã—替ãˆ\n copyRights[0] = \"交承 令和2å¹´ 177å·\";\n setCopyRights(copyRights);\n }\n const classes = useStyles();\n return (\n <div>\n <h3 className={classes.subtitle}>ã“ã®ã‚µãƒ¼ãƒ“スã«ã¤ã„ã¦</h3>\n <p>\n ã”希望ã®ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚„æ¡ä»¶ã«åˆã‚ã›ãŸæœ€é©ãªANA便ã¨åœ°ä¸Šäº¤é€šæ©Ÿé–¢ã®çµ„ã¿åˆã‚ã›çµŒè·¯ã‚’ã”案内ã„ãŸã—ã¾ã™ã€‚<br/>\n æ—…ã®ãƒ—ランニングã‹ã‚‰èˆªç©ºåˆ¸äºˆç´„ã¾ã§ã‚’ワンストップã§æä¾›ã™ã‚‹ã€Œç©ºæ¸¯ã‚¢ã‚¯ã‚»ã‚¹ãƒŠãƒ“ã€ã®æ–°ã—ã„サービスã§ã™ã€‚\n </p>\n <h3 className={classes.subtitle}>推奨環境</h3>\n <p>â—PC・スマートフォン(ブラウザ)</p>\n <p>Google chrome(最新版)</p>\n <p>Safari(最新版)</p>\n <p>â—スマートフォン(OS)</p>\n <p>iOS11以é™</p>\n <p>Android5.0以é™</p>\n\n <h3 className={classes.subtitle}>時刻表ã«ã¤ã„ã¦</h3>\n {\n copyRights && copyRights.map((x, index)=>{\n if(x){\n return (\n <p key={index}>{x}</p>\n )\n }\n return null;\n })\n }\n\n <p>â€»çµŒè·¯æƒ…å ±æ供元:駅ã™ã±ã‚ã¨</p>\n <p>「駅ã™ã±ã‚ã¨ã€ã¯æ ªå¼ä¼šç¤¾ãƒ´ã‚¡ãƒ«ç ”究所ã®ç™»éŒ²å•†æ¨™ã§ã™ã€‚</p>\n <p>※鉄é“é‹è¡Œæƒ…å ±ï¼šåˆ—è»Šé…延ãªã©ã€é‰„é“ã®é‹è¡Œæƒ…å ±ã‚‚ã”確èªã„ãŸã ã‘ã¾ã™ã€‚</p>\n <p>鉄é“é‹è¡Œæƒ…å ±æä¾›å…ƒï¼šæ ªå¼ä¼šç¤¾ãƒ¬ã‚¹ã‚ューナウ</p>\n\n\n </div>\n );\n}\n\nexport default PublicServiceAboutBody;\n","import React from 'react';\nimport { Dialog, Slide, Theme, makeStyles, createStyles, Button, List, ListItem } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions/transition';\nimport ModalHeader from '../../common/ModalHeader';\nimport { useTranslation } from 'react-i18next';\nimport PublicServiceAboutBody from './PublicServiceAboutBody';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n }\n }),\n);\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst PublicServiceAboutDialog: React.FC = () => {\n const classes = useStyles();\n const [openDialog, setOpenDialog] = React.useState(false);\n const { t } = useTranslation();\n // ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ\n const handleClose = () => {\n setOpenDialog(false);\n };\n const handleOpen = () => {\n setOpenDialog(true);\n }\n return (\n <div>\n <div onClick={handleOpen}>\n {t('about_service')}\n </div>\n <Dialog fullScreen open={openDialog} onClose={handleClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={handleClose}\n title={t('about_service')}\n />\n <List>\n <ListItem>\n <PublicServiceAboutBody/>\n </ListItem>\n <ListItem>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.button}\n onClick={handleClose}\n >\n {t('close')}\n </Button>\n </ListItem>\n </List>\n </Dialog>\n </div>\n )\n}\n\nexport default PublicServiceAboutDialog;\n","import React from 'react';\nimport { AppBar, createStyles, makeStyles, Grid, Typography } from '@material-ui/core';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport { useTranslation } from 'react-i18next';\nimport TermsDialog from './Terms/TermsDialog';\nimport ServiceAboutDialog from './ServiceAboutDialog';\nimport PublicServiceAboutDialog from '../public/common/PublicServiceAboutDialog';\nimport Environment from '../../utils/environment';\nimport ExternalTransmissionDiscipline from './Footer/ExternalTransmissionDiscipline';\nimport PrivacyPolicy from './Footer/PrivacyPolicy';\n\ninterface Props {\n page: string,\n /** 一般開放版ã®è¡¨ç¤ºã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isPublic?: boolean,\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root_search: {\n flexGrow: 1,\n marginTop: '150px',\n bottom: 0,\n width: '100%'\n },\n root_result: {\n flexGrow: 1,\n bottom: 0,\n width: '100%',\n },\n powered_by_text: {\n fontSize: '14px',\n padding: '5px',\n },\n link: {\n fontSize: '14px',\n padding: '5px',\n color: '#ffffff',\n textDecoration: 'underline'\n }\n }),\n);\n\ntype FooterProps = Props;\nconst Footer: React.FC<FooterProps> = (props: FooterProps) => {\n /** 環境変数ã§æŒ‡å®šã•ã‚ŒãŸç’°å¢ƒç¨®åˆ¥ã‚’è˜åˆ¥ã™ã‚‹ãŸã‚ã®å€¤ã€‚ */\n const stageEnv = process.env['REACT_APP_STAGE_ENV'] || '';\n const classes = useStyles({});\n const setClass = (props.page === 'search')? classes.root_search: classes.root_result;\n\n const { t } = useTranslation();\n\n return (\n <div className={setClass}>\n {/** Cypressã®ãƒã‚§ãƒƒã‚¯ç”¨ã«SCクリックã®å€¤ã‚’ã“ã“ã«å‡ºåŠ›ã™ã‚‹ */}\n {(stageEnv &&!Environment.isProduction(stageEnv)) &&\n <Typography>\n </Typography>\n }\n <AppBar position=\"static\">\n <Toolbar>\n </Toolbar>\n {/* 「Powered By 駅ã™ã±ã‚ã¨ã€ã‚’表示ã™ã‚‹ã€‚ */}\n <Grid container justify='space-between'>\n <Grid item className={classes.link} >\n <TermsDialog/>\n </Grid>\n {/* プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ã«ã¤ã„ã¦ã®ãƒªãƒ³ã‚¯ã€‚ */}\n <Grid item className={classes.link} >\n <PrivacyPolicy/>\n </Grid>\n {/* 外部通信è¦å¾‹ã«ã¤ã„ã¦ã®ãƒªãƒ³ã‚¯ã€‚ */}\n <Grid item className={classes.link}>\n <ExternalTransmissionDiscipline/>\n </Grid>\n <Grid item className={classes.link} >\n { props.isPublic &&\n <PublicServiceAboutDialog />\n }\n { !props.isPublic &&\n <ServiceAboutDialog/>\n }\n </Grid>\n <Grid item>\n <Typography className={classes.powered_by_text}>\n { t('powered_by_ekispert') }\n </Typography>\n </Grid>\n </Grid>\n </AppBar>\n </div>\n )\n}\n\nexport default Footer;\n","import * as React from 'react';\nimport TabiCubeFooter from './TabiCube';\nimport Footer from '../../../../../common/Footer';\n\ninterface Props {\n /** æ—…CUBE版ã®å†…容ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n tabiCube?: boolean\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„サービスã®ãƒ•ãƒƒã‚¿ãƒ¼ã€‚ */\nconst AirportTransferTaxiFooter: React.FC<Props> = (props: Props) => {\n return (\n <>\n {/* æ—…CUBE版ã®å ´åˆã€‚ */}\n { props.tabiCube && <TabiCubeFooter/> }\n {/* 通常(空港アクセスナビ版)ã®å ´åˆã€‚ */}\n { !props.tabiCube && <Footer page='search' /> }\n </>\n );\n};\n\nexport default AirportTransferTaxiFooter;\n","import React from 'react';\n\nimport { Redirect, useLocation } from 'react-router-dom';\nimport Helmet from \"react-helmet\";\nimport { useTranslation } from 'react-i18next';\nimport ScrollToTop from './common/ScrollToTop';\nimport { useTemporaryReservation } from './ad/OtherServices/AirportTransferTaxi/TemporaryReservation/useTemporaryReservation';\nimport LoadingModal from './ad/OtherServices/AirportTransferTaxi/common/LoadingModal';\nimport AirportTransferTaxi from './ad/OtherServices/AirportTransferTaxi/Reservation';\nimport { convertStringToTaxiCompany } from '../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { isTabiCube } from './ad/OtherServices/AirportTransferTaxi/common/TabiCube';\nimport AirportTransferTaxiHeader from './ad/OtherServices/AirportTransferTaxi/common/Header';\nimport AirportTransferTaxiFooter from './ad/OtherServices/AirportTransferTaxi/common/Footer';\n\nexport const Booking: React.FC = () => {\n const location = useLocation();\n const { t } = useTranslation();\n\n const {\n code,\n token,\n isLoadingReservation,\n hasReservation,\n tmpReservation,\n taxiCompanyConf\n } = useTemporaryReservation();\n\n /** ä»®äºˆç´„æƒ…å ±ã®ä¼šç¤¾ã‚³ãƒ¼ãƒ‰ã€‚ */\n const companyCode = tmpReservation?.companyCode;\n const company = convertStringToTaxiCompany(companyCode || '')\n\n const targetTaxiComf = (()=>{\n if(company && taxiCompanyConf) {\n return taxiCompanyConf[company];\n }\n })()\n\n /** ä»®äºˆç´„æƒ…å ±ã«å«ã¾ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚ */\n const referrer = tmpReservation?.referrer;\n /** æ—…CUBEモードã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const tabiCube = isTabiCube(referrer || '');\n /** ページタイトル。 */\n const title = tabiCube ? t('tabicube') : t('title');\n\n return (\n <div>\n <Helmet>\n {/* ページタイトルをè¨å®šã™ã‚‹ã€‚ */}\n <title>{title}</title>\n {/* Adobe Analyticsã§ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã®é›†è¨ˆã‚’ã™ã‚‹ã€‚ */}\n <script type=\"application/javascript\">\n s.pageName=location.origin+"/booking";\n s.t();\n </script>\n </Helmet>\n {/* èªè¾¼ä¸ã¯èªè¾¼ä¸ã‚¢ã‚¤ã‚³ãƒ³ã‚’表示ã™ã‚‹ã€‚ */}\n <LoadingModal isLoading={isLoadingReservation}/>\n {/* タクシーã®ä»®äºˆç´„æƒ…å ±ãŒå‚ç…§ã§ããŸå ´åˆã€‚ */}\n { (hasReservation && tmpReservation && targetTaxiComf) &&\n <>\n {/* ç”»é¢é·ç§»æ™‚ã«ç”»é¢ãƒˆãƒƒãƒ—ã¸é·ç§»ã•ã›ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */}\n <ScrollToTop />\n {/* ヘッダー部分 */}\n <AirportTransferTaxiHeader tabiCube={tabiCube} />\n {/* タクシー会社ãŒå˜åœ¨ã™ã‚‹ã®å ´åˆã€‚ */}\n { company !== null &&\n <AirportTransferTaxi\n code={code}\n token={token}\n reservation={tmpReservation}\n // TODO: Reduxã‹ã‚‰å–å¾—ã™ã‚‹ã‚ˆã†ã«ã—ãŸã„\n taxiCompanyConf={targetTaxiComf}\n taxiCompany={company}\n />\n }\n {/* フッター部分 */}\n <AirportTransferTaxiFooter tabiCube={tabiCube} />\n </>\n }\n {/* APIã¸ãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ã¦ã„ãªã„状態ã§ã€äºˆç´„æƒ…å ±ãŒå–å¾—ã§ããªã‹ã£ãŸå ´åˆã¯404ページã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã™ã‚‹ã€‚ */}\n { (!isLoadingReservation && !hasReservation) &&\n <Redirect to={{ pathname: '/404', state: {redirectOrigin: location.pathname} }} />\n }\n </div>\n );\n}\n\nexport default Booking;\n","/* eslint react-hooks/exhaustive-deps: 0 */\n\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { updateTaxiCompanyConfigurations } from '../../../../../actions/generalAction';\nimport { getReservation } from '../../../../../services/taxi/GetReservation';\nimport { getTaxiCompanyConfiguration } from '../../../../../services/taxi/GetTaxiMetaInfo';\nimport { TaxiCompanyConfigurations } from '../../../../../services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf';\nimport { ReservationResponse } from '../../../../../services/taxi/Reservation/ReservationResponse';\n\n/**\n * タクシーã®ä»®äºˆç´„æƒ…å ±ã«é–¢ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ フック。\n * @returns code ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã€‚\n * @returns token ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ãƒˆãƒ¼ã‚¯ãƒ³ã€‚\n * @returns isLoadingReservation ä»®äºˆç´„æƒ…å ±ã‚’å–å¾—ä¸ã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n * @returns hasReservation ä»®äºˆç´„æƒ…å ±ãŒå˜åœ¨ã™ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @returns tmpReservation ä»®äºˆç´„æƒ…å ±ã€‚\n */\nexport function useTemporaryReservation() {\n const location = useLocation();\n const dispatch = useDispatch();\n const { i18n } = useTranslation();\n /** URLパラメーター。 */\n const searchParams = new URLSearchParams(location.search);\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã‚’URLパラメーターã‹ã‚‰å–å¾—ã™ã‚‹é–¢æ•° */\n const getCode = () => {\n if (searchParams.has(\"code\")) {\n /** URLパラメーター「codeã€ã®å€¤ã€‚ */\n const value = searchParams.get(\"code\");\n // nullã§ã¯ãªã„å ´åˆã®ã¿ãã®ã¾ã¾å€¤ã‚’ã€nullã®å ´åˆã¯ç©ºæ–‡å—ã‚’è¿”ã™ã€‚\n return (value !== null) ? value : '';\n } else {\n return '';\n }\n }\n\n /** ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ãŸã‚ã®ãƒˆãƒ¼ã‚¯ãƒ³ã‚’URLパラメーターã‹ã‚‰å–å¾—ã™ã‚‹é–¢æ•°ã€‚ */\n const getToken = () => {\n if (searchParams.has(\"token\")) {\n /** URLパラメーター「tokenã€ã®å€¤ã€‚ */\n const value = searchParams.get(\"token\");\n // nullã§ã¯ãªã„å ´åˆã®ã¿ãã®ã¾ã¾å€¤ã‚’ã€nullã®å ´åˆã¯ç©ºæ–‡å—ã‚’è¿”ã™ã€‚\n return (value !== null) ? value : '';\n } else {\n return '';\n }\n }\n\n /** è¨€èªžæƒ…å ±ã‚’å–å¾—ã™ã‚‹ */\n const getLang = (): string => {\n if (searchParams.has(\"language\")) {\n /** URLパラメーター「tokenã€ã®å€¤ã€‚ */\n const value = searchParams.get(\"language\");\n // nullã§ã¯ãªã„å ´åˆã®ã¿ãã®ã¾ã¾å€¤ã‚’ã€nullã®å ´åˆã¯jaã‚’è¿”ã™ã€‚\n return (value !== null) ? value : 'ja';\n } else {\n return 'ja';\n }\n }\n\n /** 仮予約時ã«ç™ºè¡Œã—ãŸã‚³ãƒ¼ãƒ‰ã€‚ */\n const code = getCode();\n /** 仮予約時ã«ç™ºè¡Œã—ãŸãƒˆãƒ¼ã‚¯ãƒ³ã€‚ */\n const token = getToken();\n /** è¨€èªžæƒ…å ±ã‚’å–å¾—ã™ã‚‹ */\n const language = getLang();\n\n React.useEffect(()=>{\n /** è¨€èªžæƒ…å ±ã‚’ã‚»ãƒƒãƒˆã™ã‚‹ */\n switch(language) {\n case 'en':\n i18n.changeLanguage('en');\n break;\n case 'ja':\n default:\n i18n.changeLanguage('ja');\n break;\n }\n }, [])\n\n\n const [isLoadingReservation, switchLoadingReservation] = React.useState(false);\n /** ä»®äºˆç´„æƒ…å ±ãŒå˜åœ¨ã™ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const [hasReservation, setHasReservation] = React.useState(true);\n /** ä»®äºˆç´„æƒ…å ±ã€‚ */\n const [tmpReservation, setTmpReservation] = React.useState<ReservationResponse>();\n /** タクシー会社ã”ã¨ã®ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ */\n const [ taxiCompanyConf, setTaxiCompanyConf ] = React.useState<TaxiCompanyConfigurations|null>(null);\n\n /**\n * ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n * @param code 仮予約時ã«ç™ºè¡Œã—ãŸã‚³ãƒ¼ãƒ‰ã€‚\n * @param token 仮予約時ã«ç™ºè¡Œã—ãŸãƒˆãƒ¼ã‚¯ãƒ³ã€‚\n * @param language è¨€èªžæƒ…å ±\n */\n const getTemporaryReservation = React.useCallback(async(code: string, token: string, language: string) => {\n return getReservation({code, token, language});\n }, []);\n\n // ç”»é¢èªã¿è¾¼ã¿æ™‚ã«äºˆç´„コード・予約トークンã®å˜åœ¨ãƒã‚§ãƒƒã‚¯ã‚’ã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n // コードã¨ãƒˆãƒ¼ã‚¯ãƒ³ãŒæœªè¨å®šã®å ´åˆã¯ã€äºˆç´„ãªã—ã¨ã—ã¦æ‰±ã†ã€‚\n if (!code || !token || code === null || token === null) {\n setHasReservation(false);\n }\n }, [code, token]);\n\n // ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹å‡¦ç†ã€‚\n React.useEffect(() => {\n // コードã¨ãƒˆãƒ¼ã‚¯ãƒ³ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿ã€äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ã€‚\n if (code && token) {\n // èªè¾¼ä¸ãƒ•ãƒ©ã‚°ã‚’オンã«ã™ã‚‹ã€‚\n switchLoadingReservation(true);\n // ä»®äºˆç´„æƒ…å ±ã‚’å‚ç…§ã™ã‚‹ã€‚\n getTemporaryReservation(code, token, language)\n .then((response) => {\n // æ£å¸¸ã«ãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒè¿”å´ã•ã‚ŒãŸå ´åˆã€‚\n if (response !== null && response.status === 200) {\n // äºˆç´„æƒ…å ±ãŒå˜åœ¨ã™ã‚‹ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n setHasReservation(true);\n // äºˆç´„æƒ…å ±ã‚’ã‚»ãƒƒãƒˆã™ã‚‹ã€‚\n setTmpReservation(response.data as ReservationResponse);\n } else {\n // äºˆç´„æƒ…å ±ãŒå˜åœ¨ã™ã‚‹ãƒ•ãƒ©ã‚°ã‚’falseã«ã™ã‚‹ã€‚\n setHasReservation(false);\n }\n const params = {\n companyCode: response?.data?.companyCode,\n key: 'company_configuration',\n language: i18n.language\n }\n // ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ãƒ¡ã‚¿æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n return getTaxiCompanyConfiguration(params)\n })\n .then((response)=>{\n // æƒ…å ±ãŒå–ã‚Œãªã„ã¨ãã«ã¯ä½•ã‚‚処ç†ã‚’ã—ãªã„\n if(!response.body) {\n return;\n }\n const getTaxiCompanyConf: TaxiCompanyConfigurations = response.body;\n // Redux上ã«ã‚¿ã‚¯ã‚·ãƒ¼ãƒ¡ã‚¿æƒ…å ±ã‚’ä¿å˜ã™ã‚‹\n dispatch(updateTaxiCompanyConfigurations(getTaxiCompanyConf));\n setTaxiCompanyConf(getTaxiCompanyConf);\n })\n .catch(() => {\n // äºˆç´„æƒ…å ±ãŒå˜åœ¨ã™ã‚‹ãƒ•ãƒ©ã‚°ã‚’falseã«ã™ã‚‹ã€‚\n setHasReservation(false);\n })\n .finally(() => {\n // èªè¾¼ä¸ãƒ•ãƒ©ã‚°ã‚’オフã«ã™ã‚‹ã€‚\n switchLoadingReservation(false);\n })\n }\n }, [code, token, getTemporaryReservation]);\n\n return {\n code, token,\n isLoadingReservation,\n hasReservation,\n tmpReservation,\n taxiCompanyConf\n }\n}\n","import { Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { State } from '../reducers';\n// import { } from '../actions/conditionAction';\nimport Booking from '../components/Booking';\n\nexport interface ConditionActions {}\n\nfunction mapDispatchToProps(dispatch: Dispatch) {\n return {};\n}\n\nfunction mapStateToProps(appState: State) {\n return Object.assign({}, appState.condition);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Booking);\n","/* eslint react-hooks/exhaustive-deps: 0 */\n\nimport React, { useEffect } from \"react\";\nimport Helmet from \"react-helmet\";\nimport { AppBar, Box, createStyles, Grid, makeStyles, Toolbar, Typography } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport { Lang } from \"../states/query\";\nimport { State } from \"../reducers\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { switchIsInitial } from \"../actions/generalAction\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n content: {\n minHeight: '80vh',\n },\n footer: {\n top: \"auto\",\n bottom: 0,\n minHeight: '10vh'\n },\n notFoundHeader: {\n fontSize: '18px',\n textAlign: 'center',\n fontWeight: 'bold',\n },\n notFoundMessage: {\n textAlign: 'center',\n fontSize: '15px'\n },\n }),\n);\n\n/** Not Found(404)用ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const NotFound: React.FC = () => {\n const dispatch = useDispatch();\n const location = useLocation();\n const { t, i18n } = useTranslation();\n const isInitial = useSelector((state: State) => state.general.isInitial);\n const lang = useSelector((state: State) => state.condition.query.lang);\n const classes = useStyles({});\n // クエリã¨ã—ã¦é€£æºã•ã‚ŒãŸå€¤ã‚’å–å¾—ã™ã‚‹\n const query = useSelector((state: State) => state.condition.query);\n // リファラーをå–å¾—ã™ã‚‹ã€‚\n const referrer = useSelector((state: State) => state.general.referrer);\n\n // リクエストパラメーターをå–å¾—ã™ã‚‹ã€‚\n const searchParams = new URLSearchParams(location.search);\n /** リダイレクト元ã®ãƒ‘スをå–å¾—ã™ã‚‹ã€‚ */\n // リダイレクト時ã«State内ã§ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆå…ƒã®å€¤ã‚’渡ã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿ãã®å€¤ã‚’è¨å®šã™ã‚‹ã€‚\n const redirectOrigin = location.state ? location.state.redirectOrigin : \"\";\n\n useEffect(() => {\n // アプリケーション上ã§æœ€åˆã®æç”»ã®å ´åˆã®ã¿ã€è¨€èªžè¨å®šã‚’ã™ã‚‹ã€‚\n if (isInitial) {\n // 英語ã®å ´åˆã€‚\n if (lang === Lang.en || (searchParams.get('lang') === Lang.en)) {\n i18n.changeLanguage('en');\n // 英語以外(日本語)ã®å ´åˆã€‚\n } else {\n i18n.changeLanguage('ja');\n }\n // 最åˆã®æç”»ã§ã‚るフラグをfalseã«ã™ã‚‹ã€‚\n dispatch(switchIsInitial(false));\n }\n }, [dispatch, lang, i18n, isInitial, searchParams]);\n\n return (\n <Box>\n <Helmet>\n {/* ページタイトルをè¨å®šã™ã‚‹ã€‚ */}\n <title>{t('title')}</title>\n </Helmet>\n {/* ヘッダー部分。 */}\n <AppBar position='static'>\n <Toolbar/>\n </AppBar>\n <Grid container alignContent='center' justify='center' alignItems='center' className={classes.content}>\n <Grid item>\n <Typography color='primary' className={classes.notFoundHeader}>\n { t('not_found_header') }\n </Typography>\n <Typography color='textSecondary' className={classes.notFoundMessage}>\n { t('not_found_message') }\n </Typography>\n </Grid>\n </Grid>\n {/* フッター部分。 */}\n <AppBar position=\"fixed\" color=\"primary\" className={classes.footer} />\n </Box>\n )\n}\n\nexport default NotFound;\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nexport const anaTheme = createMuiTheme({\n palette: {\n text: {\n primary: '#0B308E',\n secondary: '#526391',\n },\n primary: {\n main: '#0B308E',\n dark: '#0B308E',\n },\n secondary: {\n main: '#0090e8',\n dark: '#0090e8',\n }\n },\n overrides: {\n MuiAppBar: {\n root: {\n borderBottom: '1px solid #CBD2E3',\n }\n },\n MuiButton: {\n root: {\n borderRadius: '2px',\n }\n },\n MuiInput: {\n input: {\n '&::placeholder': {\n color: '#526391',\n opacity: 0.8,\n fontSize: '11px',\n }\n },\n underline: {\n '&:before': {\n borderBottom: '1px solid #CBD2E3',\n }\n },\n },\n MuiInputLabel: {\n root: {\n color: '#526391',\n }\n },\n MuiOutlinedInput: {\n input: {\n '&::placeholder': {\n color: '#526391',\n opacity: 0.8,\n fontSize: \"0.75rem\",\n }\n },\n notchedOutline: {\n border: '1px solid #CBD2E3',\n },\n },\n MuiPaper: {\n elevation4: {\n boxShadow: undefined,\n }\n },\n MuiSelect: {\n icon: {\n color: '#0B308E',\n }\n },\n }\n});\n","import { createMuiTheme } from '@material-ui/core/styles';\n\n/** ANA Universal MaaSã®é…色ãªã©ã‚’é©ç”¨ã—ãŸãƒ†ãƒ¼ãƒžã€‚ */\nexport const universalMaaS = createMuiTheme({\n palette: {\n text: {\n primary: '#002596',\n secondary: '#373737',\n },\n primary: {\n main: '#002596',\n dark: '#002596',\n },\n secondary: {\n main: '#0090e8',\n dark: '#0090e8',\n },\n error: {\n main: '#BF0000',\n }\n },\n typography: {\n fontFamily: [\n 'Noto Sans JP',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n ].join(','),\n },\n overrides: {\n MuiAppBar: {\n root: {\n borderBottom: '1px solid #CBD2E3',\n }\n },\n MuiButton: {\n root: {\n borderRadius: '2px',\n }\n },\n MuiInput: {\n input: {\n '&::placeholder': {\n color: '#526391',\n opacity: 0.8,\n fontSize: '11px',\n }\n },\n underline: {\n '&:before': {\n borderBottom: '1px solid #CBD2E3',\n }\n },\n },\n MuiInputLabel: {\n root: {\n color: '#526391',\n }\n },\n MuiOutlinedInput: {\n input: {\n '&::placeholder': {\n color: '#526391',\n opacity: 0.8,\n fontSize: \"0.75rem\",\n }\n },\n notchedOutline: {\n border: '1px solid #CBD2E3',\n },\n },\n MuiPaper: {\n elevation4: {\n boxShadow: undefined,\n }\n },\n MuiSelect: {\n icon: {\n color: '#0B308E',\n }\n },\n }\n});\n","export type ClosedPathType = 'search' | 'summary' | 'result';\n\n/** ã“ã®ã‚¢ãƒ—リケーション内ã®ãƒ‘スã«é–¢ã™ã‚‹å®šæ•°ãƒ»å‡¦ç†ã®ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class Path {\n /** ルートパス(検索画é¢ï¼‰ã®æ–‡å—列。 */\n static readonly ROOT = '/';\n /** 検索画é¢ã®ãƒ‘スã®æ–‡å—列。 */\n static readonly SEARCH = '/search';\n /** サマリー画é¢ã®ãƒ‘スã®æ–‡å—列。 */\n static readonly SUMMARY = '/summary';\n /** çµæžœç”»é¢ã®ãƒ‘スã®æ–‡å—列。 */\n static readonly RESULT = '/result';\n /** 一般開放ã®æ¤œç´¢ç”»é¢ã®ãƒ‘スã®æ–‡å—列 */\n static readonly PUBLC_ROOT = '/public';\n /** 一般開放ã®æ¤œç´¢ç”»é¢ã®ãƒ‘スã®æ–‡å—列 */\n static readonly PUBLC_SEARCH = '/public/search';\n /** 一般開放ã®ã‚µãƒžãƒªãƒ¼ç”»é¢ã®ãƒ‘スã®æ–‡å—列 */\n static readonly PUBLC_SUMMARY = '/public/summary';\n /** 一般開放ã®çµæžœç”»é¢ã®ãƒ‘スã®æ–‡å—列 */\n static readonly PUBLC_RESULT = '/public/result';\n /** 一般開放ã®æ乗便一覧画é¢ã®ãƒ‘スã®æ–‡å—列 */\n static readonly PUBLIC_FLIGHTLIST = '/public/flightlist';\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒæ¤œç´¢ç”»é¢ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isSearch(pathName: string) {\n return pathName === this.ROOT || pathName.includes(this.SEARCH);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒã‚µãƒžãƒªãƒ¼ç”»é¢ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isSummary(pathName: string) {\n return pathName.includes(this.SUMMARY);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒçµæžœç”»é¢ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isResult(pathName: string) {\n return pathName.includes(this.RESULT);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒä¸€èˆ¬é–‹æ”¾ç”»é¢ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isPublic(pathName: string) {\n return pathName.includes(this.PUBLC_ROOT);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒä¸€èˆ¬é–‹æ”¾ã®æ¤œç´¢ç”»é¢ã‹åˆ¤åˆ¥ã™ã‚‹\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isPublicSearch(pathName: string) {\n return pathName === this.PUBLC_ROOT || pathName.includes(this.PUBLC_SEARCH);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒä¸€èˆ¬é–‹æ”¾ã®ã‚µãƒžãƒªãƒ¼ç”»é¢ã‹åˆ¤åˆ¥ã™ã‚‹\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isPublicSummary(pathName: string) {\n return pathName.includes(this.PUBLC_SUMMARY);\n }\n\n /**\n * ç¾åœ¨ãƒšãƒ¼ã‚¸ãŒä¸€èˆ¬é–‹æ”¾ã®çµæžœç”»é¢ã‹åˆ¤åˆ¥ã™ã‚‹\n * @param pathName ç¾åœ¨ãƒšãƒ¼ã‚¸URLã®ãƒ‘スå。\n */\n static isPublicResult(pathName: string) {\n return pathName.includes(this.PUBLC_RESULT);\n }\n\n /**\n * 空港アクセスナビã«ãŠã‘ã‚‹ç¾åœ¨ã®Pathã‚’è¿”ã™\n */\n static getClosedPathType(pathName: string): ClosedPathType | null {\n if(this.isSearch(pathName)) {\n return 'search';\n }\n else if(this.isSummary(pathName)) {\n return 'summary';\n }\n else if(this.isResult(pathName)) {\n return 'result';\n }\n return null;\n }\n}\n","import React from 'react';\nimport { Icon, IconProps } from '@material-ui/core';\nimport Search from './icon_input_airport.png';\n\nexport const AswSearch: React.FC<IconProps> = (props: IconProps) => {\n return (\n <Icon {...props}>\n <img src={Search} alt='Search' />\n </Icon>\n );\n}\n\nexport default AswSearch;\n","interface ReplaceWord {\n base: string,\n replace: string\n}\n\n/** インクリメンタルサーãƒã§ç½®æ›ã‚’ã™ã‚‹å˜èªžãƒªã‚¹ãƒˆ */\nexport const replaceWordList: ReplaceWord[] = [\n {\n base: '宇部興産',\n replace: 'å®‡éƒ¨èˆˆç”£æ ªå¼ä¼šç¤¾'\n }\n];\n\n/** インクリメンタルサーãƒã§ç„¡è¦–ã‚’ã™ã‚‹å˜èªžãƒªã‚¹ãƒˆ */\nexport const ignoreWordList: string[] = [\n 'ç¾åœ¨åœ°'\n]","import { getClosedAutocomplete } from \"./api\";\nimport { replaceWordList, ignoreWordList } from \"./data/replaceWordList\";\n\n/**\n * ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«æŠ•ã’ã‚‹Autoompleteã®æ–‡å—列ã«è£œæ£ã‚’ã‹ã‘ã‚‹\n * @param input 入力文å—列\n * @returns APIã«æŠ•ã’ã‚‹æ–‡å—列\n */\nexport const replaceInput = (input: string) => {\n const replceInput = replaceWordList.map((word)=>{\n if(input === word.base) {\n return word.replace;\n }\n return null;\n })\n .find((x)=>{\n return x !== null;\n });\n if(replceInput) {\n return replceInput;\n }\n return input;\n}\n\n/**\n * ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«æŠ•ã’ã‚‹æ–‡å—列ã«è£œæ£ã‚’ã‹ã‘ãŸçŠ¶æ…‹ã§Autocompleteã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’投ã’ã‚‹\n * @param input 入力文å—列\n * @returns ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã‹ã‚‰ã®Response\n */\nexport const getClosedFixAutocomplete = async (input: string, lang: string = 'ja') => {\n const replaced = replaceInput(input);\n // 無視リストã«ã‚ã‚‹å ´åˆã«ã¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«ã‚µãƒ¼ãƒã‚’è¡Œã‚ãªã„\n if(ignoreWordList.includes(input)) {\n return null;\n }\n return await getClosedAutocomplete(replaced, lang)\n}\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n createStyles,\n makeStyles,\n TextField,\n useTheme\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\n\nimport { Candidate } from './../../../../../search/Candidate';\nimport AswSearch from './../../../../../search/Icons/AswSearch';\nimport { PointType } from '../../../../../../states/common';\nimport Place from '../../../../../../services/google/Place';\n\nimport {\n getClosedStationDetail,\n getClosedStationLight\n} from '../../../../../../services/ekispert/api';\nimport {\n getClosedGeocode,\n getClosedPlaceDetail\n} from '../../../../../../services/google/api';\nimport {\n convertLocationToStr,\n GeoLocation\n} from '../../../../../../utils/geoLocation';\nimport { convertLetter } from '../../common/Address';\nimport { getClosedFixAutocomplete } from '../../../../../../services/google/fixAutocompleteInput';\nimport { updateErrorMessage } from '../../../../../../actions/generalAction';\nimport { useDispatch } from 'react-redux';\nimport { changeLang, Lang } from '../../../../../../states/query';\nimport History from '../../../../../search/CandidatesModal/Histories/history';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n height: '0px',\n },\n // 出発地アイコン用ã®ã‚¹ã‚¿ã‚¤ãƒ«è¨å®šã€‚\n departureIcon: {\n fontSize: 18,\n },\n publicDepartureIcon: {\n fontSize: 28,\n },\n // 目的地アイコン用ã®ã‚¹ã‚¿ã‚¤ãƒ«è¨å®šã€‚\n destinationIcon: {\n fontSize: 20,\n },\n publicDestinationIcon: {\n fontSize: 28,\n },\n textField: {\n backgroundColor: '#ffffff',\n width: '80%',\n position: 'relative',\n top: '10px',\n left: '10%',\n zIndex: 1,\n },\n inputText: {\n borderRadius: '10px',\n height: '50px',\n boxShadow: '4px 4px 4px rgba(0, 0, 0, 0.25)',\n fontSize: '18px'\n },\n pointNameText: {\n whiteSpace: 'nowrap'\n },\n descriptionText: {\n paddingLeft: '10px',\n color: '#999999',\n fontSize: '12px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n }),\n);\n\ninterface Props {\n pointName: string,\n setCenter: (v: {\n lat: number;\n lng: number;\n }) => void,\n setMarkerPoint: (v: {\n lat: number;\n lng: number;\n }) => void,\n setPointName: (v: string) => void,\n setMunicipality: (v: string) => void,\n switchEdited: (v: boolean) => void,\n setPlace: (v: Place) => void,\n setPlaceJP: (v: Place|null) => void,\n}\n\n/** Google Mapsã®åœ°å›³ä¸Šã«è¡¨ç¤ºã™ã‚‹æ¤œç´¢çª“ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SearchBox: React.FC<Props> = (props: Props) => {\n // 候補ã®ãƒ•ãƒƒã‚¯ã€‚\n const [candidates, setCandidates] = React.useState<Candidate[]> ([]);\n const { t, i18n } = useTranslation();\n // インクリメンタルサーãƒã®å€™è£œã‚’表示ã™ã‚‹ã‹\n const [isDisplayCandidates, switchDisplayCandidates] = React.useState(false);\n const [lang, setLang] = React.useState<Lang> (Lang.ja);\n\n const classes = useStyles();\n const theme = useTheme();\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n setLang(changeLang(i18n.language))\n }, [i18n.language])\n\n /** テã‚ストボックスã«æ–‡å—を入力ã—ãŸéš›ã«å‘¼ã°ã‚Œã‚‹ */\n const onChangeTextBox = (e: any) => {\n if(e.target.value.type !== PointType.SELECT_ON_MAP) {\n getCandidates(e.target.value);\n }\n // æ–‡å—ãŒå…¥åŠ›ã•ã‚ŒãŸéš›ã«ã¯ãƒ—ルダウンメニューを表示ã™ã‚‹\n switchDisplayCandidates(true);\n }\n\n /** 候補ã®åˆæœŸå€¤ã‚’展開ã™ã‚‹ã€‚ */\n const initCandidates = () => {\n /** 「ç¾åœ¨åœ°ã€ã®é …目。 */\n const currentPosition = [\n new Candidate(t('now_place'), '', PointType.CURRENT_POSITION)\n ]\n // åˆæœŸå€¤ã¨ã—ã¦ã€Œç¾åœ¨åœ°ã€ã®ã¿å€™è£œã‚’æ ¼ç´ã™ã‚‹ã€‚\n setCandidates(currentPosition);\n }\n\n /** テã‚ストボックスをクリックã—ãŸã¨ãã®å‡¦ç†ã€‚ */\n const onClick = (e: any) => {\n // 候補ãŒç©ºã®å ´åˆã«ã¯åˆæœŸå€¤ã‚’æ ¼ç´ã™ã‚‹ã€‚\n // ã¾ãŸã¯ã€ãƒ†ã‚ストボックスãŒæœªå…¥åŠ›ï¼ˆundefined)ã®å ´åˆã‚‚åˆæœŸå€¤ã‚’æ ¼ç´ã™ã‚‹ã€‚\n if (candidates.length === 0 || e.target.value === undefined) {\n initCandidates();\n } else if (e.target.value.length > 0) {\n getCandidates(e.target.value);\n }\n // クリックã—ãŸéš›ã«å€™è£œã‚’表示ã™ã‚‹ã€‚\n switchDisplayCandidates(true);\n }\n\n /**\n * 候補をå–å¾—ã™ã‚‹å‡¦ç†ã€‚\n */\n const getCandidates = async (value: string) => {\n let candidates: Candidate[] = [];\n // 入力ボックスã®å€¤ãŒç©ºã®å ´åˆã¯é§…æƒ…å ±ã‚’å–å¾—ã—ãªã„。\n if (value && value !== '') {\n // 駅ã™ã±ã‚ã¨Webサービスã‹ã‚‰é§…ã®å€™è£œã‚’å–å¾—ã™ã‚‹ã€‚\n const stations = await getClosedStationLight(value, i18n.language);\n // Google Places APIã‹ã‚‰åœ°ç‚¹ã®å€™è£œã‚’å–å¾—ã™ã‚‹ã€‚\n const places = await getClosedFixAutocomplete(value, i18n.language);\n if(places) {\n // 駅ã¨åœ°ç‚¹ã®å€™è£œã‚’ã²ã¨ã¤ã®é…列ã«ã™ã‚‹ã€‚\n candidates = candidates.concat(stations, places);\n }\n }\n // 種別ã”ã¨ã®ã‚½ãƒ¼ãƒˆã‚’実行ã™ã‚‹ã€‚\n candidates = sortByType(candidates);\n setCandidates(candidates);\n return candidates;\n }\n\n /**\n * 発ç€åœ°ã®ã‚µã‚¸ã‚§ã‚¹ãƒˆï¼ˆå€™è£œï¼‰ã‚’種別ã”ã¨ã«ã‚½ãƒ¼ãƒˆã™ã‚‹ã€‚\n * @param candidates 駅ã™ã±ã‚ã¨API(/station/light)ã‹ã‚‰å–å¾—ã—ãŸå€™è£œã€‚\n */\n const sortByType = (candidates: Candidate[]) => {\n /** 駅ã®ç¨®åˆ¥ã”ã¨ã«ã‚½ãƒ¼ãƒˆæ¸ˆã¿ã®é§…å€™è£œã‚’æ ¼ç´ã™ã‚‹é…列。 */\n let sortedStations: Candidate[] = [];\n // 種別ã®é †åºã‚’固定ã™ã‚‹ãŸã‚ã«ã€ã‚らã‹ã˜ã‚ã‚ーã¨åˆæœŸå€¤ã‚’è¨å®šã™ã‚‹ã€‚\n // é †åºã¯ã€Œé‰„é“ã€ã€Œãƒã‚¹ã€ã€Œèˆ¹ã€ã®é †ã€‚(2020/02/18ç¾åœ¨ã€‚)\n let stationsByType: { [key: string]: Candidate[] } = {\n 'currentPosition': [\n new Candidate(t('now_place'), '', PointType.CURRENT_POSITION)\n ],\n 'selectMap': [],\n 'train': [],\n 'place': [],\n 'bus': [],\n 'ship': [],\n };\n candidates.forEach(c => {\n // ã‚らã‹ã˜ã‚宣言ã—ãŸç¨®åˆ¥ã®é§…データã®ã¿ã€å„種別ã”ã¨ã«æ ¼ç´ã™ã‚‹ã€‚\n if (Object.keys(stationsByType).includes(c.type)) { stationsByType[c.type].push(c); }\n })\n // 連想é…列ã®ã‚ーをループã™ã‚‹ã€‚\n Object.keys(stationsByType).forEach((key) => {\n const stations = stationsByType[key];\n // å„種別ã”ã¨ã®é…列ã®è¦ç´ ãŒå˜åœ¨ã™ã‚‹å ´åˆã®ã¿ä»¥ä¸‹ã®å‡¦ç†ã‚’実行ã™ã‚‹ã€‚\n // (ãƒã‚¹ãƒˆãŒæ·±ã„ã®ã§ã‚ã¨ã§è¦‹ç›´ã™ã€‚2020/02/18ç¾åœ¨ã€‚)\n if (stations && stations !== []) {\n // ç¨®åˆ¥é †ã«ãªã‚‰ã‚“ã 連想é…列ã®å€¤ï¼ˆé§…候補ã®é…列)をçµåˆã™ã‚‹ã€‚\n sortedStations = sortedStations.concat(stations);\n }\n });\n return sortedStations;\n }\n\n /**\n * 検索ボックスã«æ–‡å—ãŒè¿½åŠ ã•ã‚ŒãŸå ´åˆ or 地点を確定ã—ãŸéš›ã«å‘¼ã°ã‚Œã‚‹\n * @param value æ–‡å—è¿½åŠ ã®å ´åˆ stringã€åœ°ç‚¹ç¢ºå®šã®å ´åˆ Candidate\n * @returns\n */\n const updateValue = async (value: string | Candidate) => {\n // エラーメッセージを空ã«ã™ã‚‹\n dispatch(updateErrorMessage(''));\n // åŒã˜åœ°ç‚¹ã‚’連続ã§å†é¸æŠžã—ãŸå ´åˆã«ãƒ©ãƒ™ãƒ«éƒ¨åˆ†ãŒæ›´æ–°ã•ã‚Œãªã„å ´åˆãŒã‚ã‚‹ãŸã‚ã€\n // 候補ã®å¤‰æ›´æ™‚ã«ä¸€æ—¦ç©ºæ–‡å—ã‚’è¨å®šã™ã‚‹ã€‚\n props.setPointName('');\n props.setPlaceJP(null)\n // ä¸å¿ƒåº§æ¨™ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã€ç·¨é›†æ¸ˆã¿ãƒ•ãƒ©ã‚°ã‚’オンã«ã™ã‚‹ã€‚\n // (ã“ã®ãƒ•ãƒ©ã‚°ãŒã‚ªãƒ³ã®å ´åˆã€åˆ©ç”¨ç©ºæ¸¯ãŒå¤‰æ›´ã•ã‚ŒãŸéš›ã€åˆæœŸä½ç½®ãŒå¤‰æ›´ã•ã‚Œãªã„。)\n props.switchEdited(true);\n if (value instanceof Candidate ) {\n // サジェストã‹ã‚‰ã€Œæ–½è¨ï¼ˆåœ°ç‚¹ï¼‰ã€ã‚’é¸æŠžã—ãŸå ´åˆã®å‡¦ç†ã€‚\n if (value.type === 'place') {\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ID。 */\n const placeId = value.code;\n try {\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹æƒ…å ±ã€‚ï¼ˆç·¯åº¦çµŒåº¦ãªã©ï¼‰ */\n const placeDetail = await getClosedPlaceDetail(placeId, undefined, lang);\n // åœ°ç‚¹æƒ…å ±ãŒå–å¾—ã§ããªã‹ã£ãŸå ´åˆã¯ã€ä»¥é™ã®å‡¦ç†ã‚’実行ã—ãªã„。\n if (!placeDetail) { return; }\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã€‚ */\n const coordinates = placeDetail.getLocation();\n\n // 一旦ジオコーディングAPIã‹ã‚‰ã®æƒ…å ±å–å¾—ã¯å–ã‚Šã‚„ã‚ã‚‹ (2022/02/09)\n /** ジオコーディングAPIã‹ã‚‰å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ±ã€‚ */\n // const places: Place[] = await getClosedGeocode(`${coordinates.lat},${coordinates.lng}`);\n // places.forEach((x)=>{ console.log(x.getFullAddress()) })\n /** å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ±ã®ã†ã¡ã®1件目。 */\n // const place2 = places[0];\n // åœ°ç‚¹æƒ…å ±ãŒå–å¾—ã§ããªã‹ã£ãŸå ´åˆã¯ã€ä»¥é™ã®å‡¦ç†ã‚’実行ã—ãªã„。\n // if (!place) { return; }\n\n const place = placeDetail;\n /** 市区町æ‘ã¾ã§ã®ä½æ‰€ã€‚ */\n const municipality = convertLetter(place.getAddressToMunicipality());\n /** ä½æ‰€ã€‚ */\n const address = convertLetter(place.getFullAddress(changeLang(i18n.language)));\n // 日本語用地点åã®æ›´æ–°ã‚’\n if(i18n.language !== 'ja') {\n const placeJPDetail = await getClosedPlaceDetail(placeId, undefined, Lang.ja);\n if(placeJPDetail) {\n props.setPlaceJP(placeJPDetail);\n }\n }\n else {\n props.setPlaceJP(place);\n }\n /** 地点åã¨ã—ã¦æ›´æ–°ã™ã‚‹ãƒ©ãƒ™ãƒ«ï¼ˆä½æ‰€ + æ–½è¨å) */\n const label = `${address} ${value.name}`;\n // 市区町æ‘ã¾ã§ã®ä½æ‰€ã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setMunicipality(municipality);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹åã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setPointName(label);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã‚’æ›´æ–°ã™ã‚‹\n props.setPlace(place);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã‚’発ç€åœ°ã®åœ°ç‚¹ã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n props.setCenter(coordinates);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã‚’マーカーを表示ã™ã‚‹åº§æ¨™ã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n props.setMarkerPoint(coordinates);\n }\n catch(e) {\n const errorMessage = \"å¿…è¦ãªä½æ‰€æƒ…å ±ãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚æれ入りã¾ã™ãŒã€åˆ¥ã®å称ã§å†æ¤œç´¢ã„ãŸã ãã‹ã€è©³ç´°å ´æ‰€ã‚’地図上ã®ãƒ”ンã§æŒ‡å®šã—ã¦ãã ã•ã„。\";\n dispatch(updateErrorMessage(errorMessage));\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n }\n // サジェストã‹ã‚‰ã€Œé§…・ãƒã‚¹åœãƒ»æ¸¯ã€ã®ã„ãšã‚Œã‹ã‚’é¸æŠžã—ãŸå ´åˆã®å‡¦ç†ã€‚\n if (value.type === 'train' || value.type === 'bus' || value.type === 'ship') {\n const code = value.code\n const station = await getClosedStationDetail(code);\n /** é¸æŠžã•ã‚ŒãŸé§…・ãƒã‚¹åœãƒ»æ¸¯ã®ç·¯åº¦ã€‚ */\n const lat = station.GeoPoint.lati_d;\n /** é¸æŠžã•ã‚ŒãŸé§…・ãƒã‚¹åœãƒ»æ¸¯ã®çµŒåº¦ã€‚ */\n const lng = station.GeoPoint.longi_d;\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ç·¯åº¦çµŒåº¦ã€‚ */\n const coordinates = {\n lat: Number.parseFloat(lat),\n lng: Number.parseFloat(lng),\n }\n const places: Place[] = await getClosedGeocode(`${lat},${lng}`, lang);\n // åœ°ç‚¹æƒ…å ±ãŒå–得出æ¥ã‚‹å ´åˆã€ä½æ‰€æƒ…å ±ã¨ãƒ©ãƒ™ãƒ«ã®å–å¾—ã‚’ã™ã‚‹\n if (places) {\n const place = places[0];\n /** 市区町æ‘ã¾ã§ã®ä½æ‰€ã€‚ */\n const municipality = convertLetter(place.getAddressToMunicipality());\n // 市区町æ‘ã¾ã§ã®ä½æ‰€ã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setMunicipality(municipality);\n /** ä½æ‰€ã€‚ */\n const address = convertLetter(place.getFullAddress(lang));\n /** 地点åã¨ã—ã¦æ›´æ–°ã™ã‚‹ãƒ©ãƒ™ãƒ«ï¼ˆä½æ‰€ + æ–½è¨å) */\n const label = `${address} ${value.name}`;\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹åã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setPointName(label);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã‚’æ›´æ–°ã™ã‚‹\n props.setPlace(place);\n if(lang !== Lang.ja) {\n const placeJPDetail = await getClosedGeocode(`${lat},${lng}`, Lang.ja);\n if(placeJPDetail[0]) {\n props.setPlaceJP(placeJPDetail[0]);\n }\n }\n else {\n props.setPlaceJP(place);\n }\n }\n // ä¸å¿ƒåº§æ¨™æ›´æ–°ã¨å…±ã«æ–™é‡‘å–得リクエストãŒèµ°ã‚‹ãŸã‚ã€æœ€å¾Œã«ä¸å¿ƒåº§æ¨™ã‚’入れã¦ã„ã‚‹\n props.setCenter(coordinates);\n props.setMarkerPoint(coordinates);\n\n }\n // サジェストã‹ã‚‰ã€Œç¾åœ¨åœ°ã€ã‚’é¸æŠžã—ãŸå ´åˆã¯ã€ç¾åœ¨åœ°ã®ç·¯åº¦çµŒåº¦ã‚’Reduxã«æ ¼ç´ã™ã‚‹ã€‚\n if (value.type === PointType.CURRENT_POSITION) {\n navigator.geolocation.getCurrentPosition(async (position) => {\n const lat = position.coords.latitude;\n const lng = position.coords.longitude;\n // ç¾åœ¨åœ°ã®ç·¯åº¦çµŒåº¦ã®ã‚ªãƒ–ジェクト。\n const geoPoint: GeoLocation = { lat, lng };\n /** ç¾åœ¨åœ°ã®åº§æ¨™ï¼ˆç·¯åº¦çµŒåº¦ï¼‰ã€‚ */\n const coordinate = convertLocationToStr(geoPoint);\n /** ç¾åœ¨åœ°ã®åº§æ¨™ã‹ã‚‰å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ±ã€‚ */\n const places: Place[] = await getClosedGeocode(coordinate, lang);\n // åœ°ç‚¹æƒ…å ±ãŒå–å¾—ã§ããªã‹ã£ãŸå ´åˆã¯ã€ä»¥é™ã®å‡¦ç†ã‚’実行ã—ãªã„。\n if (!places) { return; }\n /** å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ±ã®ä¸ã®1件目。 */\n const place = places[0];\n /** 市区町æ‘ã¾ã§ã®ä½æ‰€ã€‚ */\n const municipality = convertLetter(place.getAddressToMunicipality());\n /** ä½æ‰€ã€‚ */\n const address = convertLetter(place.getFullAddress(lang));\n // 料金å–å¾—API用ã«æ—¥æœ¬èªžå称をå–å¾—ã™ã‚‹\n if(lang !== Lang.ja) {\n const placesJP: Place[] = await getClosedGeocode(coordinate, Lang.ja);\n if(placesJP[0]) {\n props.setPlaceJP(placesJP[0]);\n }\n }\n else {\n props.setPlaceJP(place);\n }\n // 市区町æ‘ã¾ã§ã®ä½æ‰€ã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setMunicipality(municipality);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹åã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setPointName(address);\n // é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã‚’æ›´æ–°ã™ã‚‹\n props.setPlace(place);\n // ä¸å¿ƒåº§æ¨™ã‚’æ›´æ–°ã™ã‚‹\n props.setCenter({lat, lng});\n props.setMarkerPoint({lat, lng});\n }, (e) => {\n /** ç¾åœ¨åœ°ã‚’å–å¾—ã§ããªã„å ´åˆ */\n dispatch(updateErrorMessage(t('no_get_now_place')));\n return;\n });\n }\n }\n }\n\n /** インクリメンタルサーãƒã®å€™è£œã«è¡¨ç¤ºã™ã‚‹æ–‡å—列 */\n const renderOption = (option: Candidate) => {\n if(option.description) {\n return (\n <>\n <span className={classes.pointNameText}>\n {option.name}\n </span>\n <span className={classes.descriptionText}>\n {option.description}\n </span>\n </>\n )\n }\n return option.name;\n }\n\n return (\n <Autocomplete\n className={classes.root}\n getOptionLabel={option => (typeof option === 'string' ? option : option.name)}\n filterOptions={x => x}\n onChange={(e, value) => { updateValue(value); }}\n options={ candidates }\n value={props.pointName}\n autoComplete\n disableOpenOnFocus\n includeInputInList\n freeSolo\n debug\n groupBy={(option: Candidate | History) => option.getTypeLabel(t) }\n open={isDisplayCandidates}\n onClose={()=>{\n switchDisplayCandidates(false);\n }}\n renderOption={renderOption}\n renderInput={params => (\n <TextField\n {...params}\n variant=\"outlined\"\n className={classes.textField}\n onClick={onClick}\n onChange={onChangeTextBox}\n InputProps={{\n ...params.InputProps,\n className: '',\n endAdornment: (\n <AswSearch/>\n )\n }}\n InputLabelProps={{\n style: {\n color: theme.palette.text.secondary,\n }\n }}\n />\n )}\n />\n );\n}\n\nexport default SearchBox;\n","import React, { Fragment } from 'react';\nimport { GoogleMap, Marker } from '@react-google-maps/api';\nimport { useGoogleMaps } from '../../../../../common/useGoogleMaps';\nimport { getClosedGeocode } from '../../../../../../services/google/api';\nimport Place from '../../../../../../services/google/Place';\nimport SearchBox from './SearchBox';\nimport { makeStyles, createStyles } from '@material-ui/core';\nimport { convertLetter } from '../../common/Address';\nimport { changeLang, Lang } from '../../../../../../states/query';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n borderLeft: 'solid 1px #000000',\n borderRight: 'solid 1px #000000',\n },\n }),\n);\n\ninterface Props {\n center: {\n lat: number;\n lng: number;\n },\n markerPoint: {\n lat: number;\n lng: number;\n },\n pointName: string,\n setPointName: (v: string) => void,\n setPlaceJP: (v: Place|null) => void,\n setCenter: (v: {\n lat: number;\n lng: number;\n }) => void,\n setMarkerPoint: (v: {\n lat: number;\n lng: number;\n }) => void,\n setMunicipality: (v: string) => void,\n switchEdited: (v: boolean) => void,\n setPlace: (v: Place) => void\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„時ã®åœ°ç‚¹é¸æŠžç”¨ã®åœ°å›³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const Map: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const containerStyle = {\n height: \"300px\",\n width: \"100%\",\n };\n const { i18n } = useTranslation();\n\n /** Google Mapsã®ã‚¹ã‚¯ãƒªãƒ—トã®èªã¿è¾¼ã¿ãŒå®Œäº†ã—ãŸã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const { isLoaded } = useGoogleMaps();\n\n /** マーカーã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ãƒ”ンã®ã‚¢ã‚¤ã‚³ãƒ³ã®ãƒ‘ス。 */\n const pinIcon = \"/icons/mapPin.png\";\n\n /** Google Mapsã®DOMãƒŽãƒ¼ãƒ‰ã‚’æ ¼ç´ã™ã‚‹å¤‰æ•°ã€‚ */\n let mapRef: GoogleMap | null = null;\n\n /** ä¸å¿ƒåº§æ¨™ãŒå¤‰æ›´ã•ã‚ŒãŸå ´åˆã®å‡¦ç†ã€‚ */\n // (マーカーを表示ã™ã‚‹åº§æ¨™ã®ã¿æ›´æ–°ã™ã‚‹ã€‚)\n const onCenterChanged = () => {\n // Google Mapsã®DOMノードãŒå˜åœ¨ã—ãªã„å ´åˆã€ä»¥é™ã®å‡¦ç†ã¯å®Ÿè¡Œã—ãªã„。\n if (!mapRef) { return; }\n /** 地図上ã®ä¸å¿ƒåœ°ç‚¹ã®æƒ…å ±ã€‚ */\n const centerOnMap = mapRef.state.map?.getCenter();\n // 地図上ã®ä¸å¿ƒåœ°ç‚¹ã®æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã€ä»¥é™ã®å‡¦ç†ã¯å®Ÿè¡Œã—ãªã„。\n if (!centerOnMap) { return; }\n /** 地図上ã§è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ä¸å¿ƒåº§æ¨™ã€‚ */\n const coordinate = {\n lat: centerOnMap.lat(),\n lng: centerOnMap.lng(),\n };\n props.setMarkerPoint(coordinate);\n }\n\n /** 地図上をクリックã—ãŸã¨ãã®å‡¦ç†ã€‚ */\n const onClicked = () => {\n // 地図ãŒã‚¯ãƒªãƒƒã‚¯ã•ã‚ŒãŸå ´åˆã€ç·¨é›†æ¸ˆã¿ãƒ•ãƒ©ã‚°ã‚’オンã«ã™ã‚‹ã€‚\n // (ã“ã®ãƒ•ãƒ©ã‚°ãŒã‚ªãƒ³ã®å ´åˆã€åˆ©ç”¨ç©ºæ¸¯ãŒå¤‰æ›´ã•ã‚ŒãŸéš›ã€åˆæœŸä½ç½®ãŒå¤‰æ›´ã•ã‚Œãªã„。)\n props.switchEdited(true);\n }\n\n /** ドラッグæ“作ãŒçµ‚ã‚ã£ãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°ã®å‡¦ç†ã€‚ */\n const onDragEnd = async() => {\n // Google Mapsã®DOMノードãŒå˜åœ¨ã—ãªã„å ´åˆã€ä»¥é™ã®å‡¦ç†ã¯å®Ÿè¡Œã—ãªã„。\n if (!mapRef) { return; }\n /** 地図上ã®ä¸å¿ƒåœ°ç‚¹ã®æƒ…å ±ã€‚ */\n const centerOnMap = mapRef.state.map?.getCenter();\n // 地図上ã®ä¸å¿ƒåœ°ç‚¹ã®æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã€ä»¥é™ã®å‡¦ç†ã¯å®Ÿè¡Œã—ãªã„。\n if (!centerOnMap) { return; }\n /** 地図上ã§è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ä¸å¿ƒåº§æ¨™ã€‚ */\n const coordinate = {\n lat: centerOnMap.lat(),\n lng: centerOnMap.lng(),\n }\n const latLng = `${centerOnMap.lat()},${centerOnMap.lng()}`;\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ä½æ‰€ãªã©ã‚’å«ã‚“ã è©³ç´°æƒ…å ±ã€‚ */\n const selectedPlace = await getGeoDetail(latLng, changeLang(i18n.language));\n // 地点ã®è©³ç´°æƒ…å ±ãŒå–å¾—ã§ããªã„å ´åˆï¼ˆå¤ªå¹³æ´‹ä¸Šãªã©ã®å ´åˆï¼‰ã€ä»¥é™ã®å‡¦ç†ã¯å®Ÿè¡Œã—ãªã„。\n if (!selectedPlace) { return; }\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹æƒ…å ±ã‚’æ›´æ–°ã™ã‚‹ */\n props.setPlace(selectedPlace);\n /** è¨€èªžæƒ…å ±ã‚’å–å¾—ã™ã‚‹ */\n const lang = changeLang(i18n.language);\n /** é¸æŠžã•ã‚ŒãŸåœ°ç‚¹ã®ä½æ‰€ã€‚ */\n const address = convertLetter(selectedPlace.getFullAddress(lang).replace(/-/g, '_'));\n /** 「都é“府県ã€ãƒ»ã€Œå¸‚区町æ‘ã€ã¾ã§ã®ä½æ‰€ã€‚ */\n const municipality = convertLetter(selectedPlace.getAddressToMunicipality());\n // 日本語以外ã®å ´åˆã€æ—¥æœ¬èªžã®ä½æ‰€ã‚’å–å¾—ã™ã‚‹\n // 日本語å称å–å¾—ãŒå®Œäº†ã—ã¦ã‹ã‚‰ä¸å¿ƒåœ°ç‚¹ã‚’æ›´æ–°ã™ã‚‹\n if(i18n.language !== 'ja') {\n const selectedJPPlace = await getGeoDetail(latLng, Lang.ja);\n props.setPlaceJP(selectedJPPlace);\n }\n else {\n props.setPlaceJP(selectedPlace);\n }\n // ä½æ‰€ã‚’é¸æŠžã•ã‚ŒãŸåœ°ç‚¹åã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n props.setPointName(address);\n // ドラッグæ“作ãŒçµ‚了ã—ãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°ã®ä¸å¿ƒåº§æ¨™ã‚’é¸æŠžåœ°ç‚¹ã¨ã—ã¦æ›´æ–°ã™ã‚‹ã€‚\n props.setCenter(coordinate);\n // 市区町æ‘ã¾ã§ã®ä½æ‰€ã‚’æ›´æ–°ã™ã‚‹ã€‚\n props.setMunicipality(municipality);\n }\n\n /**\n * 緯度経度ã‹ã‚‰åœ°ç‚¹æƒ…å ±ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param latLng 緯度経度ã®æ–‡å—列。(例: 35.68153260987459,139.76771635598573)\n */\n async function getGeoDetail(latLng: string, lang: Lang) {\n const places: Place[] = await getClosedGeocode(latLng, lang);\n /** å–å¾—ã§ããŸåœ°ç‚¹æƒ…å ±ã®é…列ã®ã†ã¡1件目。 */\n const place = places[0];\n return place;\n }\n\n return (\n isLoaded ?\n <div className={classes.root} data-cy=\"google_map_area\">\n <SearchBox\n pointName={props.pointName}\n setCenter={props.setCenter}\n setMarkerPoint={props.setMarkerPoint}\n setPointName={props.setPointName}\n setMunicipality={props.setMunicipality}\n switchEdited={props.switchEdited}\n setPlace={props.setPlace}\n setPlaceJP={props.setPlaceJP}\n />\n <GoogleMap\n center={props.markerPoint}\n ref={(ref) => {mapRef = ref}}\n onCenterChanged={onCenterChanged}\n onDragEnd={onDragEnd}\n onClick={onClicked}\n mapContainerStyle={containerStyle}\n zoom={15}\n options={{\n fullscreenControl: false,\n mapTypeControl: false,\n streetViewControl: false,\n zoomControlOptions: {\n position: 8\n }\n }}\n >\n <Marker position={props.markerPoint} icon={pinIcon} />\n </GoogleMap>\n </div> : <Fragment/>\n )\n}\n\nexport default Map;\n","import { useJsApiLoader } from '@react-google-maps/api';\n\n/**\n * Google Maps全体ã®JavaScriptファイルã®èªã¿è¾¼ã¿ã«é–¢ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ フック。\n * @returns isLoaded - Google Mapsスクリプトã®èªã¿è¾¼ã¿ãŒå®Œäº†ã—ãŸã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @returns loadError - Google Mapsスクリプトã®èªã¿è¾¼ã¿ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã®ã‚¨ãƒ©ãƒ¼æƒ…å ±ã€‚\n */\nexport function useGoogleMaps() {\n /** リクエストパラメーター。 */\n const searchParams = new URLSearchParams(window.location.search);\n /** 言語è¨å®šã€‚ */\n const lang = searchParams.get('lang') || 'ja';\n /** GOOGLE MAPS APIã®ã‚ー。(環境変数ã‹ã‚‰å‚ç…§ã™ã‚‹ã€‚) */\n const GOOGLE_API_KEY = process.env.REACT_APP_GOOGLE_API_KEY as string;\n const { isLoaded, loadError } = useJsApiLoader({\n googleMapsApiKey: GOOGLE_API_KEY,\n language: lang,\n })\n return { isLoaded, loadError }\n}\n","export const AirportNameMap: { [key:string]: string; } = {\n \"CTS\": \"æœå¹Œ(åƒæ³)\",\n \"RIS\": \"利尻\",\n \"WKJ\": \"稚内\",\n \"MBE\": \"オホーツク紋別\",\n \"MMB\": \"女満別\",\n \"AKJ\": \"æ—å·\",\n \"SHB\": \"æ ¹å®¤ä¸æ¨™æ´¥\",\n \"KUH\": \"釧路\",\n \"OBO\": \"帯広\",\n \"HKD\": \"函館\",\n \"AOJ\": \"é’森\",\n \"ONJ\": \"大館能代\",\n \"AXT\": \"秋田\",\n \"SYO\": \"庄内\",\n \"SDJ\": \"ä»™å°\",\n \"FKS\": \"ç¦å³¶\",\n \"HND\": \"æ±äº¬(羽田)\",\n \"NRT\": \"æ±äº¬(æˆç”°)\",\n \"HAC\": \"八丈島\",\n \"KIJ\": \"新潟\",\n \"FSZ\": \"é™å²¡\",\n \"NGO\": \"åå¤å±‹(ä¸éƒ¨)\",\n \"TOY\": \"富山\",\n \"KMQ\": \"å°æ¾\",\n \"NTQ\": \"能登\",\n \"ITM\": \"大阪(伊丹)\",\n \"KIX\": \"大阪(関西)\",\n \"UKB\": \"大阪(神戸)\",\n \"OKJ\": \"岡山\",\n \"HIJ\": \"広島\",\n \"IWK\": \"岩国\",\n \"UBJ\": \"å±±å£å®‡éƒ¨\",\n \"TTJ\": \"é³¥å–\",\n \"YGJ\": \"ç±³å\",\n \"IWJ\": \"è©ãƒ»çŸ³è¦‹\",\n \"TAK\": \"高æ¾\",\n \"TKS\": \"徳島\",\n \"MYJ\": \"æ¾å±±\",\n \"KCZ\": \"高知\",\n \"FUK\": \"ç¦å²¡\",\n \"KKJ\": \"北ä¹å·ž\",\n \"HSG\": \"ä½è³€\",\n \"OIT\": \"大分\",\n \"KMJ\": \"熊本\",\n \"NGS\": \"é•·å´Ž\",\n \"TSJ\": \"対馬\",\n \"IKI\": \"壱å²\",\n \"FUJ\": \"五島ç¦æ±Ÿ\",\n \"KMI\": \"宮崎\",\n \"KOJ\": \"鹿å…島\",\n \"OKA\": \"沖縄(那覇)\",\n \"MMY\": \"å®®å¤\",\n \"ISG\": \"石垣\",\n 'AXJ': \"天è‰\",\n 'TNE': \"種å島\",\n 'KUM': \"屋久島\",\n 'RNJ': \"与論\",\n 'KKX': \"喜界\",\n 'OKE': \"沖永良部\",\n 'ASJ': \"奄美\",\n 'TKN': \"徳之島\"\n};\n","import React from 'react';\nimport { Select } from '@material-ui/core';\nimport { AirportNameMap } from '../../../../../../services/ana/data/airportNameMap';\nimport { useTranslation } from 'react-i18next';\n\ninterface Props {\n value: string,\n // ターゲット空港一覧\n targetAirportCodeList: string[],\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®ç©ºæ¸¯é¸æŠžã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectAirport: React.FC<Props> = (props: Props) => {\n const { t } = useTranslation();\n return (\n <Select native value={props.value} onChange={props.onChange}>\n {props.targetAirportCodeList.map((airpotCode, idx)=>{\n const isNoMatch = t(`taxi:${airpotCode}`) === airpotCode;\n // airportNameListã«å®šç¾©ã•ã‚Œã¦ã„ãªã„空港ã®å ´åˆã«ã¯æ±Žç”¨ãƒªã‚¹ãƒˆã‹ã‚‰å–å¾—ã™ã‚‹\n // TODO: AirportNameMapã¯æ—¥æœ¬èªžã®ã¿ãªã®ã§ã€è‹±èªžç”¨ã®ãƒªã‚¹ãƒˆã‚’作æˆã™ã‚‹\n const airportLabel = isNoMatch? AirportNameMap[airpotCode]: t(`taxi:${airpotCode}`);\n return (\n <option value={airpotCode} key={idx}>{airportLabel}</option>\n )\n })}\n </Select>\n );\n}\n\nexport default SelectAirport;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n isUnselectedFlightHour: boolean\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ™‚刻ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectFlightHour: React.FC<Props> = (props: Props) => {\n /** 「時ã€éƒ¨åˆ†ï¼ˆ1~23ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const hours = Array.from(Array(24).keys());\n const defaultValue = props.isUnselectedFlightHour ? '---' : props.value?.hour;\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {props.isUnselectedFlightHour && <option value='---'>---</option>}\n {\n hours.map((h) => {\n return <option value={h} key={`hours_${h}`}>{setValue(h)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectFlightHour;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n isUnselectedFlightMinutes: boolean\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ™‚刻ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectFlightMinutes: React.FC<Props> = (props: Props) => {\n /** 「分ã€éƒ¨åˆ†ï¼ˆ0~59ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const minutes = Array.from(Array(60).keys())\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n const defaultValue = props.isUnselectedFlightMinutes ? '---' : props.value?.minute;\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {props.isUnselectedFlightMinutes && <option value='---'>---</option>}\n {\n minutes.map((m) => {\n return <option value={m} key={`minutes_${m}`}>{setValue(m)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectFlightMinutes;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ™‚刻ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectHour: React.FC<Props> = (props: Props) => {\n /** 「時ã€éƒ¨åˆ†ï¼ˆ1~23ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const hours = Array.from(Array(24).keys());\n const defaultValue = props.value.hour;\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {\n hours.map((h) => {\n return <option value={h} key={`hours_${h}`}>{setValue(h)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectHour;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ™‚刻ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectMinutes: React.FC<Props> = (props: Props) => {\n /** 「分ã€éƒ¨åˆ†ï¼ˆ0~59ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const minutes = Array.from(Array(60).keys())\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n const defaultValue = props.value.minute;\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {\n minutes.map((m) => {\n return <option value={m} key={`minutes_${m}`}>{setValue(m)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectMinutes;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ—¥ä»˜ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectDay: React.FC<Props> = (props: Props) => {\n /**\n * フォーム上ã§è¨å®šã•ã‚Œã¦ã„る月ã®æœ€çµ‚日。\n * (例: 1月ã®å ´åˆã¯31æ—¥ã€ã†ã‚‹ã†å¹´ã§ã¯ãªã„2月ã¯28日)\n * */\n const lastDay = Number(props.value.daysInMonth);\n /** 「日ã€éƒ¨åˆ†ï¼ˆ1~31ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const days = Array.from({length: lastDay}, (_, i) => i + 1);\n\n /** åˆæœŸå€¤ã€‚ */\n const defaultValue = props.value.day;\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {\n days.map((d) => {\n return <option value={d} key={`days_${d}`}>{setValue(d)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectDay;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ—¥ä»˜ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectMonth: React.FC<Props> = (props: Props) => {\n /** 「月ã€éƒ¨åˆ†ï¼ˆ1~12ã¾ã§ã®æ•°å€¤ï¼‰ã®é…列。 */\n const months = Array.from({length: 12}, (_, i) => i + 1);\n\n const setValue = (v: number) => {\n return v.toString().padStart(2, '0');\n }\n\n /** åˆæœŸå€¤ã€‚ */\n const defaultValue = props.value.month;\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {\n months.map((m) => {\n return <option value={m} key={`months_${m}`}>{setValue(m)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectMonth;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\nimport { getNowLuxonDateTime } from '../../../../../../utils/luxonUtil';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ—¥ä»˜ï¼ˆå¹´å·éƒ¨åˆ†ï¼‰ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectYear: React.FC<Props> = (props: Props) => {\n /** ç¾åœ¨æ—¥æ™‚。 */\n const now = getNowLuxonDateTime();\n /** ç¾åœ¨æ—¥æ™‚ã®å¹´éƒ¨åˆ†ã€‚ */\n const year = now.year;\n /** ç¾åœ¨æ—¥æ™‚ã®ç¿Œå¹´ã€‚ */\n const nextYear = year + 1;\n /** é¸æŠžå¯¾è±¡ã®å¹´å·ï¼ˆç¾åœ¨æ—¥æ™‚ã®å¹´ã¨ç¿Œå¹´ï¼‰ã®å¹´å·ã‚’æ ¼ç´ã—ãŸé…列。 */\n const years = [\n year,\n nextYear,\n ];\n // 年始ã®å ´åˆã«ã¯å‰ã®å¹´ã‚‚é¸ã¹ã‚‹ã‚ˆã†ã«ã™ã‚‹\n if(now.month === 0 && now.day < 4) {\n years.unshift(year - 1);\n }\n\n /** セレクトボックスã®åˆæœŸå€¤ã€‚ */\n // è¨å®šã•ã‚Œã¦ã„る日時ã®å¹´å·ã€‚\n const defaultValue = props.value.year;\n\n return (\n <Select native value={defaultValue} onChange={props.onChange}>\n {\n years.map((y) => {\n return (<option value={y} key={`years_${y}`}>{y}</option>);\n })\n }\n </Select>\n );\n}\n\nexport default SelectYear;\n","import React from 'react';\nimport { Button, makeStyles, withStyles, ButtonProps } from '@material-ui/core';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles(() => ({\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n textAlign: 'center',\n width: '100%',\n height: '48px',\n marginTop: '16px',\n },\n}));\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®äºˆç´„ボタンã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const ButtonToSubmit: React.FC<ButtonProps> = (props: ButtonProps) => {\n const { t } = useTranslation();\n const classes = useStyles();\n /** 背景色を黄色ã€ãƒ©ãƒ™ãƒ«è‰²ã‚’é»’ã«ã—ãŸãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const YellowButton = withStyles({\n root: {\n backgroundColor: \"#FDB50A\",\n },\n label: {\n color: \"#0f0f0f\",\n },\n })(Button);\n return (\n <YellowButton\n size=\"large\"\n variant=\"contained\"\n className={classes.button}\n endIcon={<ArrowForwardIosIcon/>}\n disabled={props.disabled}\n {...props}\n >\n {t('taxi:process_reservation_button')}\n </YellowButton>\n );\n}\n","import React from 'react';\nimport { Select } from '@material-ui/core';\nimport { UNSELECTED_RIDING_DATE_STRING } from './useForm';\n\ninterface Props {\n value: luxon.DateTime,\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n selectTimeList: string[],\n isUnselectedRidingDate: boolean\n}\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®æ™‚刻ã®ã‚»ãƒ¬ã‚¯ãƒˆãƒœãƒƒã‚¯ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const SelectHourAndMinutesPulldown: React.FC<Props> = (props: Props) => {\n /** 未é¸æŠžçŠ¶æ…‹ãªã‚‰æœªé¸æŠžã®å€¤ã‚’é¸æŠž */\n const currentValue = props.isUnselectedRidingDate? UNSELECTED_RIDING_DATE_STRING: props.value.toFormat('HHmm');\n\n const setValue = (v: string) => {\n /** 未é¸æŠžçŠ¶æ…‹ã§ã‚ã‚Œã°ãã®ã¾ã¾è¿”ã™ */\n if(v === UNSELECTED_RIDING_DATE_STRING) {\n return UNSELECTED_RIDING_DATE_STRING;\n }\n return `${v.slice(0, 2)} 時 ${v.slice(-2)} 分`;\n }\n\n return (\n <Select native value={currentValue} onChange={props.onChange}>\n {\n props.selectTimeList.map((time) => {\n return <option value={time} key={`hours_${time}`}>{setValue(time)}</option>\n })\n }\n </Select>\n );\n}\n\nexport default SelectHourAndMinutesPulldown;\n","import React from 'react';\nimport { Select } from '@material-ui/core';\nimport { UNSELECTED_RIDING_DATE_STRING } from './useForm';\n\ninterface Props {\n flightPattern: string[];\n selectFlightData: string;\n onChange: (e: React.ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>) => void,\n}\n\nconst SelectFlight: React.FC<Props> = (props: Props) => {\n const defaultValue = UNSELECTED_RIDING_DATE_STRING;\n\n return (\n <Select\n native\n onChange={props.onChange}\n value={props.selectFlightData}\n >\n <option value={defaultValue}>\n {defaultValue}\n </option>\n {props.flightPattern.map((pattern, index) => (\n <option key={index} value={pattern}>\n {pattern}\n </option>\n ))}\n </Select>\n );\n};\n\nexport default SelectFlight;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Helmet from 'react-helmet';\n\nimport { Container, FormControl, FormControlLabel, Grid, makeStyles, Radio, RadioGroup, TextField, Typography, useTheme, useMediaQuery, Theme, MenuItem, Select, CircularProgress, Checkbox } from '@material-ui/core';\n\nimport ScrollToTop from '../../../../common/ScrollToTop';\nimport Cost from './../common/Cost';\nimport Map from './Map';\nimport SelectAirport from './Form/SelectAirport';\nimport { AirportTransferTaxiMapMode, UNSELECTED_RIDING_DATE_STRING, useForm } from './Form/useForm';\nimport PickupPattern from './Form/PickupPattern';\nimport SelectFlightHour from './Form/SelectFlightHour';\nimport SelectFlightMinutes from './Form/SelectFlightMinutes';\nimport SelectHour from './Form/SelectHour';\nimport SelectMinutes from './Form/SelectMinutes';\nimport SelectDay from './Form/SelectDay';\nimport SelectMonth from './Form/SelectMonth';\nimport SelectYear from './Form/SelectYear';\nimport { ButtonToSubmit } from './Form/ButtonToSubmit';\nimport Cautions from '../common/Cautions';\nimport LoadingModal from '../../../../search/LoadingModal';\nimport Contact from '../common/Contact';\nimport AlertInReservation from '../../MiyakoTaxi/AlertInReservation';\nimport { Alert } from '@material-ui/lab';\n\nimport ShowTaxiComapnyLogo from './ShowTaxiComapnyLogo';\nimport { TaxiCompanyList } from '../../../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { State } from '../../../../../reducers';\nimport { TaxiTimePattern } from '../../../../../services/taxi/GetTaxiMetaInfo/model/taxiCompanyConf';\nimport SelectHourAndMinutesPulldown from './Form/SelectHourAndMinutesPulldown';\nimport AirportTransferTaxiFooter from '../common/Footer';\nimport AirportTransferTaxiHeader from '../common/Header';\nimport { isTabiCube } from '../common/TabiCube';\nimport { switchUseV2 } from '../../../../../actions/generalAction';\nimport Environment from '../../../../../utils/environment';\nimport SelectFlight from './Form/SelectFlight';\nimport { DateTime, Interval } from 'luxon';\n\nconst useStyles = makeStyles((theme) => ({\n contents: {\n padding: '5px',\n border: 'solid 1px #000000',\n height: 'calc(100% - 12px)'\n },\n alert: {\n margin: '10px 0px',\n },\n imgContainer: {\n alignItems: 'flex-start',\n marginTop: '10px',\n minHeight: 'min(18vw, 200px)'\n },\n // 補足ã®éƒ¨åˆ†ã®ã‚¹ã‚¿ã‚¤ãƒ«è¨å®šã€‚\n supplement: {\n fontSize: '0.875rem',\n },\n tableLeft: {\n backgroundColor: theme.palette.primary.main,\n border: 'solid 1px #000000',\n },\n textItemName: {\n color: '#ffffff',\n fontSize: '0.8rem',\n fontWeight: 'bold',\n padding: '5px',\n },\n textItemAnnotation: {\n color: '#ffff00',\n fontSize: '0.8rem',\n fontWeight: 'bold'\n },\n seaGaiaSelect: {\n height: '2.2rem',\n width: '90%',\n fontSize: '0.75rem'\n },\n taxiUnderLogoNoticeArea: {\n fontSize: '0.875rem',\n color: '#0B308E'\n },\n redZone: {\n color: '#f44336'\n },\n flightBefore: {\n paddingRight: \"10px\"\n },\n springMileMain: {\n color: '#FF0000',\n paddingTop: '1rem',\n paddingBottom: '1rem',\n fontSize: '0.875rem'\n },\n springMileP: {\n margin: '0rem'\n },\n springMilePBold: {\n margin: '0rem',\n fontWeight: 'bold'\n },\n // 庄内タクシー期間é™å®šã‚ャンペーンエリア\n shounaiCampaignArea: {\n marginTop: '1rem'\n }\n}));\n\n/** タクシー・ãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ç”»é¢ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const Booking: React.FC = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const theme = useTheme();\n const classes = useStyles(theme);\n /** 実行環境を判別ã™ã‚‹ãŸã‚ã®ç’°å¢ƒå¤‰æ•°ã€‚ */\n const env = process.env['REACT_APP_STAGE_ENV'] || '';\n /** reCAPTCHA v2を使用ã™ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const useRecaptchaV2 = useSelector((state: State) => state.general.useV2);\n const errorMessage = useSelector((state: State) => state.general.errorMessage);\n\n const isMobileSize = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down('sm')\n );\n\n // タクシー予約画é¢ã§è¨å®šã•ã‚ŒãŸæƒ…å ±ã«é–¢ã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ フック。\n const {\n airportCode, onChangedAirport,\n center, setCenter,\n markerPoint, setMarkerPoint,\n pointName, setPointName,\n setPlaceJP,\n email, onChangedEmail, isEmptyEmail, isInvalidEmail,\n isUnavalableEmail, isRequiredRetry, isFailed,\n flight, onChangedFlight,\n isEmptyFlight, isInvalidFlight,\n flightDate, onChangedFlightDate,\n ridingDate, onChangedRidingYear, onChangedRidingMonth,onChangedRidingDay,\n onChangedRidingHour, onChangedRidingMinutes, onChangedRidingHourAndMinutes,\n isOverDeadline,\n toAirport, pickupPattern, setPickupPattern,\n isSubmitted,\n onSubmit,\n setMunicipality,\n isSubjectArea,\n distanceText, durationText,\n switchEdited,\n taxiCompany,\n setPlace,\n mode,\n selectPointNumber, setSelectPointNumber,\n pointList,\n invalidFlightErrorMessage,\n feeLabel,\n isEndCallTaxiAPI,\n isFailCallTaxiAPI,\n targetAirportCodeList,\n isEndInit,\n fareType,\n flightPattern,\n selectFlightData,\n onChangedRidingFlight,\n notesLabel, alertLabel,\n isAvailableReservation,\n isEmptyAddress,\n taxiCompanyConf,\n lang,\n timePattern,\n selectTimeList,\n isUnselectedRidingDate,\n referrer,\n needRetryRecaptcha,\n switchNeedRetryRecaptcha,\n disallowSupportDirection,\n invalidFlightPattern,\n isUnselectedFlightHour,\n isUnselectedFlightMinutes,\n invalidFlightDateErrorMessage,\n isUnselectedFlightDate,\n } = useForm();\n\n /** コスト(所è¦æ™‚間・è·é›¢ï¼‰ã®ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const costLabel = () => {\n return `${distanceText} ${durationText}`;\n }\n\n /** メールアドレス欄ã«ä¸å‚™ãŒã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n // 予約ボタン押下済ã¿ã§ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç©ºã¾ãŸã¯æ–‡å—列ãŒãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å½¢å¼ã«ãªã£ã¦ã„ãªã„å ´åˆã¯trueã¨ã™ã‚‹ã€‚\n const hasErrorInEmail = isSubmitted && (isEmptyEmail || isInvalidEmail);\n\n /** æ乗便欄ã«ä¸å‚™ãŒã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n // 予約ボタン押下済ã¿ã§ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç©ºã¾ãŸã¯æ–‡å—列ãŒæ乗便ã®å½¢å¼ã«ãªã£ã¦ã„ãªã„å ´åˆã¯trueã¨ã™ã‚‹ã€‚\n const hasErrorInFlight = isSubmitted && ((isEmptyFlight && selectFlightData === UNSELECTED_RIDING_DATE_STRING) || isInvalidFlight);\n\n /** エラー時ã«ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹æ¬„ã§è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const getEmailHelperLabel = () => {\n let label = '';\n if (isEmptyEmail) { label = t('taxi:empty_email'); }\n if (isInvalidEmail) { label = t('taxi:invalid_email') }\n return label;\n }\n\n /** エラー時ã«æ乗便欄ã§è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã™ã‚‹ã€‚ */\n const getFlightHelperLabel = () => {\n let label = '';\n if (isEmptyFlight && selectFlightData === UNSELECTED_RIDING_DATE_STRING) { label = t('taxi:empty_fligtnumber'); }\n if (isInvalidFlight) { label = t('taxi:invalid_flightnumber') }\n return label;\n }\n\n /** タクシー料金・è·é›¢ãƒ»æ™‚間を表示ã™ã‚‹ã‹åˆ¤å®šã™ã‚‹ */\n const isShowTaxiFeeArea = () => {\n return isEndCallTaxiAPI && !isFailCallTaxiAPI;\n }\n\n /** æ—…CUBEモードã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const tabiCube = isTabiCube(referrer || '');\n /** ページタイトル。 */\n const title = tabiCube ? t('tabicube') : t('title');\n\n /** 予約ボタンクリック時ã®å‡¦ç†ã€‚ */\n const handleClick = () => {\n // reCaptcha v2ã§ã®èªè¨¼ã‚’促ã™ãƒ•ãƒ©ã‚°ã‚’一旦オフã«ã™ã‚‹ã€‚\n switchNeedRetryRecaptcha(false);\n // reCAPTCHA v2を使用ã™ã‚‹å ´åˆã€‚\n if (useRecaptchaV2) {\n /** reCAPTCHA v2用ã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã€‚ */\n const wrapper = document.createElement('div');\n const widgetId = grecaptcha.render(wrapper, {\n sitekey: process.env.REACT_APP_GOOGLE_RECAPTCHA_V2_KEY,\n size: 'invisible',\n callback: (token: string) => {\n // 予約処ç†ã®é–¢æ•°ã€‚\n onSubmit(token);\n }\n });\n // reCAPTCHA v2用ã®ã‚¨ãƒ¬ãƒ¡ãƒ³ãƒˆã‚’bodyタグ内ã«è¿½åŠ ã™ã‚‹ã€‚\n document.body.appendChild(wrapper);\n // reCAPCHA v2ã®ãƒãƒ£ãƒ¬ãƒ³ã‚¸ã‚’実行ã™ã‚‹ã€‚\n grecaptcha.execute(widgetId);\n } else {\n // reCAPTCHA v3を使用ã™ã‚‹å ´åˆã€ãã®ã¾ã¾ä»®äºˆç´„処ç†ã‚’実行ã™ã‚‹ã€‚\n onSubmit();\n }\n };\n\n /** Google reCAPTCHAã®jsファイルã®URL。 */\n const recaptchaUrl = `https://www.google.com/recaptcha/api.js?render=${process.env.REACT_APP_GOOGLE_RECAPTCHA_KEY}`;\n\n /** 庄内エリアã®ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã‹ï¼Ÿ */\n const isShonaiAreaTaxi = [TaxiCompanyList.sakataNo1Taxi, TaxiCompanyList.shokoHire].includes(taxiCompany);\n\n /** 象潟åˆåŒäº¤é€šã‹ï¼Ÿ */\n const isKisakataTaxi = [TaxiCompanyList.airport_liner, TaxiCompanyList.nikaho_go].includes(taxiCompany);\n\n /** 庄交ãƒã‚¤ãƒ¤ãƒ¼ãƒ»é…’田第一タクシーã‹ã¤ã€campaign期間内ã‹ï¼Ÿ */\n const isShokouSakataWithCampaign = (()=>{\n /** 庄交ãƒã‚¤ãƒ¤ãƒ¼ãƒ»é…’田第一タクシーã§ãªã„å ´åˆã«ã¯å‡ºã•ãªã„ */\n if(!isShonaiAreaTaxi) {\n return false;\n }\n /** 期間内ã«åŽã¾ã£ã¦ã„ã‚‹ã‹åˆ¤å®š */\n const now = DateTime.now();\n const end = DateTime.fromISO(\"2025-03-01T00:00:00+09:00\");\n return now < end;\n })()\n\n return (\n <div>\n <Helmet>\n {/* ページタイトルをè¨å®šã™ã‚‹ã€‚ */}\n <title>{title}</title>\n {/* Google reCAPTHCAã®JavaScriptファイルã®èªã¿è¾¼ã¿ã€‚ */}\n <script src={recaptchaUrl} async defer />\n {/* Adobe Analyticsã§ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã®é›†è¨ˆã‚’ã™ã‚‹ã€‚ */}\n <script type=\"application/javascript\">\n s.pageName=location.origin+"/booking-taxi";\n s.t();\n </script>\n </Helmet>\n <>\n {/* ç”»é¢é·ç§»æ™‚ã«ç”»é¢ãƒˆãƒƒãƒ—ã¸é·ç§»ã•ã›ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */}\n <ScrollToTop />\n {/* ヘッダー。 */}\n <AirportTransferTaxiHeader tabiCube={tabiCube} />\n {/* 仮予約ã®å‡¦ç†ä¸ã«è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¤ã‚³ãƒ³ã€‚ */}\n <LoadingModal />\n {/** èªè¾¼ä¸ã«è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¤ã‚³ãƒ³ */}\n {!isEndInit &&\n <Container maxWidth=\"md\">\n <Grid container direction=\"column\">\n <Grid item container justify='center' style={{ margin: '20px' }}>\n <CircularProgress color='primary' size={64}/>\n </Grid>\n </Grid>\n </Container>\n }\n {/* èªã¿è¾¼ã¿ãŒçµ‚ã‚ã£ãŸéš›ã«Bodyを表示ã™ã‚‹ */}\n {isEndInit &&\n <Container maxWidth=\"md\">\n <Grid container direction=\"column\">\n <Grid item className={classes.imgContainer}>\n {/* ä¼æ¥ãƒã‚´ã‚’表示ã™ã‚‹ */}\n <ShowTaxiComapnyLogo\n company={taxiCompany}\n lang={lang}\n />\n {/** イースタンã®å ´åˆã«ã¯ã“ã“表示ã—ãªã„ */}\n {/** 多言語化対応ã¯ã‚¤ãƒ¼ã‚¹ã‚¿ãƒ³ã®ã¿ã®ãŸã‚対応をã—ãªã„(2022/02/18 ç¾åœ¨ï¼‰ */}\n { (taxiCompany !== TaxiCompanyList.eastern && taxiCompany !== TaxiCompanyList.limoTaxi) &&\n <div className={classes.taxiUnderLogoNoticeArea}>\n <div>\n {taxiCompanyConf?.displayName}ã®ã”予約ãŒå¯èƒ½ã§ã™ã€‚内容をã”確èªã„ãŸã ãã€ã‚ˆã‚ã—ã‘ã‚Œã°ã€ã€Œäºˆç´„ã«é€²ã‚€ã€ãƒœã‚¿ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„。本ページã§ã”入力ã„ãŸã ã„ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ç¢ºèªãƒ¡ãƒ¼ãƒ«ãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚\n </div>\n <div className={classes.redZone}>\n {/* ã‚ングタクシー2ã®ã¿ */}\n {(taxiCompany === TaxiCompanyList.kingTaxi2) &&\n <>\n ※ã”注æ„<br/>\n ã“ã¡ã‚‰ã®äºˆç´„ã¯ã‚¨ã‚¢ãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒŠãƒ¼ï¼ˆä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ï¼‰ã€Œé€Ÿç± 便(秋田市内)ã€ã®ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。<br/>\n </>\n }\n {/* 庄内エリアã®ã‚¿ã‚¯ã‚·ãƒ¼ã‹å¦ã‹ã§æ–‡è¨€ãŒå¤‰ã‚ã‚‹ */}\n {(isShonaiAreaTaxi || isKisakataTaxi) &&\n <>\n ※料金ã¯ç¾åœ°ã§ã®ãŠæ”¯æ‰•ã„ã¨ãªã‚Šã¾ã™ã€‚\n </>\n }\n {(!isShonaiAreaTaxi && !isKisakataTaxi) &&\n <>\n ※ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘ã¯ç¾åœ°ã§ã®ãŠæ”¯æ‰•ã„ã¨ãªã‚Šã¾ã™ã€‚\n </>\n }\n </div>\n {/* ã‚ャンペーン期間ä¸ã®ãŠçŸ¥ã‚‰ã›æŽ²è¼‰ */}\n {isShokouSakataWithCampaign &&\n <div className={classes.shounaiCampaignArea}>\n <div>2025å¹´1月9æ—¥(木)~ 2025å¹´2月28æ—¥(金)ã®é–“ã«ã€åº„内空港発ç€ã®èˆªç©ºä¾¿ã¸ã”æä¹—ã®ã†ãˆä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã‚’ã”利用ã„ãŸã ãã¨ã€é€šå¸¸ 大人(ä¸å¦ç”Ÿä»¥ä¸Š)1,860円/人ã®æ–™é‡‘㌠1,000円/人ã«ãªã‚‹å‰²å¼•ã‚ャンペーンを実施ä¸!</div>\n <div className={classes.redZone}>※ã”利用ã«ã¯ã€äº‹å‰ã®äºˆç´„申ã—è¾¼ã¿ã¨ã€å½“æ—¥ã®æ乗券やeãƒã‚±ãƒƒãƒˆæŽ§ãˆãªã©ã®ã”æ示ãŒå¿…è¦ã§ã™ã€‚</div>\n <div>※å°å¦ç”Ÿä»¥ä¸‹ã¯åŠé¡(500円/人)ã¨ãªã‚Šã¾ã™ã€‚</div>\n </div>\n }\n </div>\n }\n </Grid>\n {/* é€è¿Žãƒ‘ターンé¸æŠžã®è¡Œã€‚ */}\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Grid container direction=\"column\" justify=\"center\" style={{ height: \"100%\" }}>\n <Grid item>\n <Typography className={classes.textItemName}>\n {t('taxi:select_pickup_pattern')}\n </Typography>\n </Grid>\n </Grid>\n </Grid>\n <Grid item xs={8} className={classes.contents}>\n <FormControl component=\"fieldset\">\n <RadioGroup value={pickupPattern} aria-label=\"pick-up pattern\" name=\"pick-up-pattern-radios\">\n {/** ã€ãŠè¿Žãˆå…ˆ → 空港】ã®é¸æŠžè‚¢ */}\n {(taxiCompanyConf?.supportDirection !== 'fromAirport') &&\n <FormControlLabel\n value={PickupPattern.TO_AIRPORT}\n control={<Radio onClick={() => {setPickupPattern(PickupPattern.TO_AIRPORT)}} />}\n label={t('taxi:point_to_airport')}\n />\n }\n {/** ã€ç©ºæ¸¯ → ãŠé€ã‚Šå…ˆã€‘ã®é¸æŠžè‚¢ */}\n {(taxiCompanyConf?.supportDirection !== 'toAirport') &&\n <FormControlLabel\n value={PickupPattern.FROM_AIRPORT}\n control={<Radio onClick={() => {setPickupPattern(PickupPattern.FROM_AIRPORT)}} />}\n label={t('taxi:airport_to_point')}\n />\n }\n </RadioGroup>\n </FormControl>\n {/** 許å¯ã•ã‚Œã¦ã„ãªã„é€è¿Žãƒ‘ターンをé¸æŠžã—ãŸéš›ã®ã‚¢ãƒ©ãƒ¼ãƒˆ */}\n {disallowSupportDirection &&\n <Alert severity=\"error\">\n {t('taxi:invalid_ride_pattern')}\n </Alert>\n }\n </Grid>\n </Grid>\n\n {/* ãŠè¿Žãˆå…ˆç©ºæ¸¯ã®è¡Œã€‚ */}\n { !toAirport &&\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n {t('taxi:pickup_airport')}\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents} data-cy=\"booking_taxi_select_airport\" >\n <SelectAirport\n value={airportCode}\n onChange={onChangedAirport}\n targetAirportCodeList={targetAirportCodeList}\n />\n {t('taxi:airport')}\n </div>\n </Grid>\n </Grid>\n }\n\n\n { mode === AirportTransferTaxiMapMode.map &&\n <>\n <Grid item className={classes.tableLeft} style={{ width: \"100%\" }}>\n <Typography className={classes.textItemName}>\n <span>\n { toAirport ? t('taxi:pickup_location') : t('taxi:sending_location') }\n </span><br/>\n <span className={classes.textItemAnnotation}>\n {t('taxi:location_notice')}\n </span>\n </Typography>\n </Grid>\n <Grid item>\n <Map\n center={center}\n markerPoint={markerPoint}\n setCenter={setCenter}\n setMarkerPoint={setMarkerPoint}\n pointName={pointName}\n setPointName={setPointName}\n setPlaceJP={setPlaceJP}\n setMunicipality={setMunicipality}\n switchEdited={switchEdited}\n setPlace={setPlace}\n />\n </Grid>\n </>\n }\n {/** ä¹—é™åœ°ç‚¹é¸æŠžãƒ—ルダウンメニュー */}\n {/** 多言語化対応ã¯ã‚¤ãƒ¼ã‚¹ã‚¿ãƒ³ã®ã¿ã®ãŸã‚対応をã—ãªã„(2022/02/18 ç¾åœ¨ï¼‰ */}\n { (mode === AirportTransferTaxiMapMode.select && !isKisakataTaxi) &&\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n <span>\n { toAirport? 'ãŠè¿Žãˆå ´æ‰€': 'é™è»Šå ´æ‰€'}\n </span>\n <br/>\n <span>\n ※プルダウンã§å®šé¡å¯¾è±¡æ–½è¨ã‚’é¸æŠžã—ã¦ãã ã•ã„\n </span>\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents} data-cy=\"booking_taxi_select_area\">\n <Select\n value={selectPointNumber}\n className={classes.seaGaiaSelect}\n SelectDisplayProps={{\n style: {\n padding: '10px 20px 10px 5px',\n whiteSpace: 'unset'\n }\n }}\n onChange={(e: any) => {setSelectPointNumber(e.target.value);}}\n fullWidth\n >\n { pointList.map((x, a) => {\n return (\n <MenuItem value={a} key={`seaGaiaMenuItem_${a}`} style={{fontSize:'0.8rem'}}>\n {x.name}\n </MenuItem>\n )\n }) }\n </Select>\n </div>\n </Grid>\n </Grid>\n }\n\n {/** ä¹—é™åœ°ç‚¹é¸æŠžãƒ—ルダウンメニュー */}\n {/** 象潟åˆåŒäº¤é€š */}\n { (mode === AirportTransferTaxiMapMode.select && isKisakataTaxi) &&\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n <span>\n { toAirport? 'ãŠè¿Žãˆå ´æ‰€': 'é™è»Šå ´æ‰€'}\n </span>\n <br/>\n <span>\n ※プルダウンã§å®šé¡å¯¾è±¡æ–½è¨ã‚’é¸æŠžã—ã¦ãã ã•ã„\n </span>\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents} data-cy=\"booking_taxi_select_area\">\n <Select\n value={selectPointNumber}\n className={classes.seaGaiaSelect}\n SelectDisplayProps={{\n style: {\n padding: '10px 20px 10px 5px',\n whiteSpace: 'unset'\n }\n }}\n onChange={(e: any) => {\n const value = Number(e.target.value);\n setSelectPointNumber(e.target.value);\n if (value === -1) {\n // 未é¸æŠžã®å ´åˆ\n setPointName('ã“ã“ã§æ¤œç´¢');\n setCenter({ lat: 0, lng: 0 });\n } else {\n // 地点ãŒé¸æŠžã•ã‚ŒãŸå ´åˆ\n setPointName(pointList[value].name);\n setCenter({ \n lat: Number(pointList[value].latLng.split(',')[0]), \n lng: Number(pointList[value].latLng.split(',')[1]) \n });\n }\n }}\n fullWidth\n >\n <MenuItem value={-1} key=\"unselected\" style={{fontSize:'0.8rem'}}>\n é¸æŠžã—ã¦ãã ã•ã„\n </MenuItem>\n { pointList.map((x, a) => {\n return (\n <MenuItem value={a} key={`seaGaiaMenuItem_${a}`} style={{fontSize:'0.8rem'}}>\n {x.name}\n </MenuItem>\n )\n }) }\n </Select>\n {taxiCompany === TaxiCompanyList.nikaho_go &&\n <Typography color=\"error\" style={{fontSize: '0.875rem', marginTop: '8px'}}>\n ※ 平日/土日ç¥æ—¥ã§é‹è¡ŒåŒºé–“ãŒç•°ãªã‚Šã¾ã™ã€‚<br/>\n ã”乗車日を変更ã—ãŸå ´åˆã¯ã€ã‚らãŸã‚ã¦åŒºé–“ã‚’ã”é¸æŠžãã ã•ã„。\n </Typography>\n }\n </div>\n </Grid>\n </Grid>\n }\n\n {/* ãŠé€ã‚Šå…ˆç©ºæ¸¯ã®è¡Œã€‚ */}\n { toAirport &&\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n {t('taxi:sending_airport')}\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents} data-cy=\"booking_taxi_select_airport\">\n <SelectAirport\n value={airportCode}\n onChange={onChangedAirport}\n targetAirportCodeList={targetAirportCodeList}\n />\n {t('taxi:airport')}\n </div>\n </Grid>\n </Grid>\n }\n\n {/* 利用便ã®è¡Œã€‚ */}\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n {/* 庄内エリア・ãれ以外ã§æ–‡è¨€ã‚’変ãˆã‚‹ */}\n {isShonaiAreaTaxi &&\n <>\n {t('taxi:flight_number_shonai_taxi')}\n { toAirport ? t('taxi:dep_time') : t('taxi:arr_time') }\n </>\n }\n {!isShonaiAreaTaxi &&\n <>\n {t('taxi:flight_number')}\n { toAirport ? t('taxi:dep_time') : t('taxi:arr_time') }\n </>\n }\n </Typography>\n </Grid>\n <Grid item xs={8} container direction='column'>\n <div className={classes.contents}>\n {/* ã”利用便ã®å…¥åŠ›éƒ¨åˆ†ã€‚ */}\n <Grid item container>\n <Grid item xs={12} md={5}>\n <span className={classes.flightBefore}>\n {t('taxi:flight_before')}\n </span>\n <TextField\n value={flight}\n onChange={onChangedFlight}\n error={hasErrorInFlight}\n helperText={getFlightHelperLabel()}\n />\n {t('taxi:flight_after')}\n </Grid>\n <Grid item xs={12} md={7}>\n <Typography color='textSecondary' component='span' className={classes.supplement}>\n {t('taxi:example_flight_number')}\n </Typography>\n </Grid>\n </Grid>\n {/* 乗車日時ã®é¸æŠžéƒ¨åˆ†ã€‚ */}\n <Grid item>\n <SelectYear value={flightDate} onChange={onChangedFlightDate.year}/>\n {t('taxi:year')}\n <SelectMonth value={flightDate} onChange={onChangedFlightDate.month}/>\n {t('taxi:month')}\n <SelectDay value={flightDate} onChange={onChangedFlightDate.day}/>\n {t('taxi:day')}\n <SelectFlightHour value={flightDate} onChange={onChangedFlightDate.hour} isUnselectedFlightHour={isUnselectedFlightHour}/>\n {t('taxi:hour')}\n <SelectFlightMinutes value={flightDate} onChange={onChangedFlightDate.minutes} isUnselectedFlightMinutes={isUnselectedFlightMinutes}/>\n {t('taxi:minutes')}\n {t('taxi:jst')}\n </Grid>\n {/* ã”利用便日時ã«é–¢ã™ã‚‹ã‚¢ãƒ©ãƒ¼ãƒˆ */}\n {isUnselectedFlightDate &&\n <Alert severity='error' className={classes.alert}>\n {invalidFlightDateErrorMessage}\n </Alert>\n }\n </div>\n </Grid>\n </Grid>\n\n {/* 乗車日時ã®è¡Œã€‚ */}\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n {isShonaiAreaTaxi && t('taxi:select_flight').split('\\n').map((s) => {\n return (\n <div>\n {s}\n </div>\n )\n })}\n {isKisakataTaxi && t('taxi:share_taxi').split('\\n').map((s) => {\n return (\n <div>\n {s}\n </div>\n )\n })}\n {(!isShonaiAreaTaxi && !isKisakataTaxi) &&\n <>\n {t('taxi:boarding_date')}\n </>\n }\n </Typography>\n </Grid>\n <Grid item xs={8} className={classes.contents}>\n <div>\n <span>\n <SelectYear value={ridingDate} onChange={onChangedRidingYear}/>\n {t('taxi:year')}\n <SelectMonth value={ridingDate} onChange={onChangedRidingMonth}/>\n {t('taxi:month')}\n <SelectDay value={ridingDate} onChange={onChangedRidingDay}/>\n {t('taxi:day')}\n </span>\n\n {isShonaiAreaTaxi ? (\n <span>\n <SelectFlight\n flightPattern={flightPattern}\n onChange={onChangedRidingFlight}\n selectFlightData={selectFlightData}\n />\n {t('taxi:flight_after')}\n {t('taxi:connect_taxi')}\n </span>\n ):(\n <>\n {/** ä»»æ„ã«æ™‚刻をé¸ã¹ã‚‹å ´åˆ */}\n {timePattern === TaxiTimePattern.normal &&\n <span>\n <SelectHour value={ridingDate} onChange={onChangedRidingHour}/>\n {t('taxi:hour')}\n <SelectMinutes value={ridingDate} onChange={onChangedRidingMinutes}/>\n {t('taxi:minutes')}\n </span>\n }\n {/** é¸æŠžè‚¢ã‚ˆã‚Šæ™‚刻をé¸ã¹ã‚‹å ´åˆ */}\n {timePattern === TaxiTimePattern.pulldown &&\n <SelectHourAndMinutesPulldown\n value={ridingDate}\n onChange={onChangedRidingHourAndMinutes}\n selectTimeList={selectTimeList}\n isUnselectedRidingDate={isUnselectedRidingDate}\n />\n }\n <span>\n {t(isKisakataTaxi ? 'taxi:dep_taxi' : 'taxi:jst')}\n </span>\n </>\n )}\n </div>\n {/* 予約期é™ã‚’éŽãŽã¦ã„ã‚‹å ´åˆã®è¦å‘Šã€‚ */}\n { isOverDeadline &&\n <Alert severity='error' className={classes.alert}>\n {invalidFlightErrorMessage}\n </Alert>\n }\n {/* タクシー乗車ã«é–¢ã™ã‚‹æ³¨æ„äº‹é … */}\n {(!isShonaiAreaTaxi && !isKisakataTaxi) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:congestion_notice_1')}\n <br />\n  {t('taxi:congestion_notice_2')}\n </Typography>\n }\n {/* 象潟åˆåŒäº¤é€šã‹ã¤from空港ã®å ´åˆ */}\n {(isKisakataTaxi && !toAirport) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:kisakata_notice_1').split('\\n').map((s) => {\n return (\n <div>\n {s}\n </div>\n )\n })}\n </Typography>\n }\n {/* 象潟åˆåŒäº¤é€šã‹ã¤to空港ã®å ´åˆ */}\n {(isKisakataTaxi && toAirport) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:kisakata_notice_2')}\n </Typography>\n }\n {/* 酒田第一タクシーã‹ã¤to空港ã®å ´åˆ */}\n {(toAirport && taxiCompany === TaxiCompanyList.sakataNo1Taxi) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:congestion_notice_3')}\n <br />\n {t('taxi:congestion_notice_4')}\n </Typography>\n }\n {/* 庄交ãƒã‚¤ãƒ¤ãƒ¼ã‹ã¤to空港ã®å ´åˆ */}\n {(toAirport && taxiCompany === TaxiCompanyList.shokoHire) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:congestion_notice_3')}\n <br />\n {t('taxi:congestion_notice_5')}\n </Typography>\n }\n {/* 酒田第一タクシーã‹ã¤from空港ã®å ´åˆ */}\n {(!toAirport && taxiCompany === TaxiCompanyList.sakataNo1Taxi) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:congestion_notice_6')}\n <br />\n {t('taxi:congestion_notice_7')}\n </Typography>\n }\n {/* 庄交ãƒã‚¤ãƒ¤ãƒ¼ã‹ã¤from空港ã®å ´åˆ */}\n {(!toAirport && taxiCompany === TaxiCompanyList.shokoHire) &&\n <Typography color='error' className={classes.supplement}>\n {t('taxi:congestion_notice_6')}\n <br />\n {t('taxi:congestion_notice_8')}\n <br />\n {t('taxi:congestion_notice_7')}\n </Typography>\n }\n {/** 対応便ãŒé¸æŠžã•ã‚Œã¦ã„ãªã„ã¨ãã®ã‚¢ãƒ©ãƒ¼ãƒˆ */}\n {invalidFlightPattern &&\n <Alert severity=\"error\">\n ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã®æŽ¥ç¶šä¾¿ã‚’é¸æŠžã—ã¦ãã ã•ã„\n </Alert>\n }\n </Grid>\n </Grid>\n\n {/* メールアドレスã®è¡Œã€‚ */}\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n {t('taxi:mail_address')}\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents}>\n <TextField\n variant='outlined'\n placeholder={t('taxi:email_example')}\n value={email}\n onChange={onChangedEmail}\n error={hasErrorInEmail}\n helperText={getEmailHelperLabel()}\n fullWidth\n inputProps={{\n style: {\n padding: '3px',\n fontSize: '1rem'\n }\n }}\n />\n </div>\n </Grid>\n </Grid>\n {/* dev/stg環境ã®ã¿è¡¨ç¤ºã™ã‚‹ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã€‚ */}\n { (Environment.isDev(env) || Environment.isStaging(env)) &&\n <Grid item container>\n <Grid item xs={4} className={classes.tableLeft}>\n <Typography className={classes.textItemName}>\n reCAPTCHA v2ã§èªè¨¼ã™ã‚‹<br/>\n ※開発・ステージング環境ã®ã¿è¡¨ç¤º\n </Typography>\n </Grid>\n <Grid item xs={8}>\n <div className={classes.contents}>\n <FormControlLabel\n control={\n <Checkbox\n checked={useRecaptchaV2}\n onChange={(event) => dispatch(switchUseV2(event.target.checked))}\n />\n }\n label=\"reCAPTCHA v2ã§èªè¨¼ã™ã‚‹\"\n />\n </div>\n </Grid>\n </Grid>\n }\n <Grid item>\n {/* 対象エリアã®å ´åˆã¯æ‰€è¦æ™‚間・è·é›¢ãƒ»æ–™é‡‘を表示ã™ã‚‹ã€‚ */}\n { (isShowTaxiFeeArea() && isSubjectArea) &&\n <Cost label={\n <span data-cy=\"booking_taxi_cost_area\">\n { costLabel() }\n {/* モãƒã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼ˆç”»é¢å¹…960px未満)ã®å ´åˆã¯æ”¹è¡Œã‚’入れる。 */}\n { isMobileSize && <br /> }\n {/* デスクトップサイズ(画é¢å¹…960px以上)ã®å ´åˆã¯ç©ºç™½ã‚’入れる。 */}\n { !isMobileSize && <> </> }\n { feeLabel }\n {/** 注æ„書ããŒã‚ã‚‹å ´åˆã«ã¯å…¨ã¦è¡¨ç¤ºã™ã‚‹ */}\n { (notesLabel && notesLabel.length > 0) &&\n <span data-cy=\"booking_taxi_notes_area\">\n {notesLabel.map((label, index)=>{\n return (\n <span key={index}>\n <br/>\n <span>{label}</span>\n </span>\n )\n })}\n </span>\n }\n </span>\n }\n />\n }\n {/* 対象エリア外ã®å ´åˆã¯å›ºå®šã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã€‚ */}\n { (isShowTaxiFeeArea() && !isSubjectArea) &&\n <Cost label={t('taxi:notice_outside_target_area')} />\n }\n {/* タクシー料金APIã«é‡‘é¡ã‚’å•ã„åˆã‚ã›ä¸ã®æ™‚ */}\n { !isEndCallTaxiAPI &&\n <Cost label={\n <CircularProgress color='primary' size={48}/>\n }/>\n }\n {/* タクシー料金APIã‹ã‚‰çµæžœãŒå¾—られãªã‹ã£ãŸæ™‚ */}\n { isFailCallTaxiAPI &&\n <Cost label={t('taxi:notice_fail_get_fee')} />\n }\n </Grid>\n {/* è¦å‘Šã‚’表示ã™ã‚‹è¡Œã€‚ */}\n <Grid item>\n {/* 予約ã«å¤±æ•—ã—ãŸå ´åˆã¯ãã®æ—¨ã®è¦å‘Šã‚’表示ã™ã‚‹ã€‚ */}\n { isFailed && <AlertInReservation type='fail'/> }\n { isRequiredRetry && <AlertInReservation type='retry'/> }\n { isUnavalableEmail && <AlertInReservation type='email'/> }\n {/* reCAPTCHA v2ã§ã®ãƒªãƒˆãƒ©ã‚¤ã‚’促ã™å ´åˆã®è¦å‘Šã€‚ */}\n { (isSubmitted && needRetryRecaptcha) && <AlertInReservation type='retry_with_v2' /> }\n { (hasErrorInEmail || hasErrorInFlight) && <AlertInReservation type='input'/> }\n { (isEmptyAddress && errorMessage === '' && !isKisakataTaxi) &&\n <AlertInReservation\n type='address'\n pickupPattern={pickupPattern}\n />\n }\n { (isEmptyAddress && errorMessage === '' && isKisakataTaxi) &&\n <AlertInReservation\n type='unselected'\n pickupPattern={pickupPattern}\n />\n }\n {/** 料金å–å¾—APIã‹ã‚‰ä»»æ„ã®ã‚¢ãƒ©ãƒ¼ãƒˆResponseãŒæ¥ãŸã¨ãã«ã¯æŽ²ç¤ºã™ã‚‹ */}\n { alertLabel.length > 0 &&\n <AlertInReservation\n anyMessage={alertLabel}\n />\n }\n {/** errorMessageã«æ ¼ç´ã•ã‚ŒãŸä»»æ„ã®è¦å‘Šã‚’表示ã™ã‚‹ */}\n { errorMessage !== '' &&\n <AlertInReservation\n anyMessage={\n [\n {\n type: 'alert',\n message: errorMessage\n }\n ]\n }\n />\n }\n </Grid>\n {/* 予約ã™ã‚‹ãƒœã‚¿ãƒ³ã®è¡Œã€‚ */}\n <Grid item>\n <ButtonToSubmit onClick={handleClick} disabled={!isAvailableReservation} />\n </Grid>\n {/* 注æ„äº‹é …ã€‚ */}\n <Grid item>\n <Cautions\n isMeterFare={fareType === 'PAYG'}\n companyDisplayName={taxiCompanyConf?.temporaryDisplayName || ''}\n isSupportAMC={taxiCompanyConf?.supportAMC.includes(airportCode)}\n company={taxiCompany}\n />\n </Grid>\n {/* ãŠå•ã„åˆã‚ã›å…ˆã€‚ */}\n <Grid item>\n <Contact\n company={taxiCompany}\n />\n </Grid>\n </Grid>\n </Container>\n }\n <AirportTransferTaxiFooter tabiCube={tabiCube} />\n </>\n </div>\n );\n}\n\nexport default Booking;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Helmet from 'react-helmet';\n\nimport { makeStyles, Typography, Container, useTheme } from '@material-ui/core';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport ScrollToTop from '../../../../common/ScrollToTop';\nimport { Link, useLocation } from 'react-router-dom';\nimport URLParams from '../../../../../utils/getParams';\nimport { changeLanguage, isEnglish } from '../../../../../utils/lang';\nimport { isTabiCube } from '../common/TabiCube';\nimport AirportTransferTaxiHeader from '../common/Header';\n\nconst useStyles = makeStyles((theme) => ({\n guide: {\n marginTop: 10,\n },\n iconInfo: {\n fontSize: '22px',\n verticalAlign: 'top',\n },\n typography: {\n marginTop: '10px',\n },\n underline: {\n color: theme.palette.error.main,\n textDecoration: 'underline',\n },\n logoArea: {\n marginTop: '10px'\n }\n}));\n\n/** タクシーã®ä»®äºˆç´„完了後ã®ç”»é¢ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst Success: React.FC = () => {\n const { t, i18n } = useTranslation();\n const theme = useTheme();\n const classes = useStyles(theme);\n const location = useLocation();\n\n // 会社ã”ã¨ã®åˆ‡ã‚Šåˆ†ã‘ãŒå¿…è¦ã«ãªã£ãŸã‚‰ã‚³ãƒ¡ãƒ³ãƒˆã‚¢ã‚¦ãƒˆã‚’外ã™\n const searchParams = new URLParams(location.search);\n // const company = convertStringToTaxiCompany(searchParams.getStringParam('company') || '' );\n\n // 言語è¨å®šã‚’ã™ã‚‹\n changeLanguage(searchParams, i18n);\n /** 言語è¨å®šã€‚ */\n const lang = i18n.language;\n /** referrerパラメーターã®å€¤ã€‚ */\n const referrer = searchParams.getStringParam('referrer');\n /** æ—…CUBEモードã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const tabiCube = isTabiCube(referrer || '');\n /** ページタイトル。 */\n const title = tabiCube ? t('tabicube') : t('title');\n\n /** メールãŒå±Šã‹ãªã„å ´åˆã®æ¡ˆå†…ç”»é¢ãƒšãƒ¼ã‚¸ã«æ¸¡ã™ãƒ‘ラメーター。 */\n const params = new URLSearchParams({\n lang: lang,\n referrer: referrer === null ? '' : referrer,\n });\n /** メールãŒå±Šã‹ãªã„å ´åˆã®æ¡ˆå†…ç”»é¢ãƒšãƒ¼ã‚¸ã¸ã®ãƒ‘ス。 */\n const path = `/booking-taxi/unreceived?${params.toString()}`;\n\n const AutomaticDeliveryNotice: React.FC = () => {\n if (isEnglish(lang)) {\n return (\n <Typography color='error' className={classes.guide}>\n <InfoIcon color='error' className={classes.iconInfo}/>\n If the auto generated email is not received, you may also confirm \n <Link to={path}>\n <span className={classes.underline}>here.</span>\n </Link>\n </Typography>\n )\n } else {\n return (\n <Typography color='error' className={classes.guide}>\n <InfoIcon color='error' className={classes.iconInfo}/>\n 自動é…信メールãŒå±Šã‹ãªã„ãŠå®¢æ§˜ã¯\n <Link to={path}>\n <span className={classes.underline}>ã“ã¡ã‚‰</span>\n </Link>\n ã‚‚ã”確èªãã ã•ã„。\n </Typography>\n )\n }\n }\n\n return (\n <div>\n <Helmet>\n {/* ページタイトルをè¨å®šã™ã‚‹ã€‚ */}\n <title>{title}</title>\n {/* Adobe Analyticsã§ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã®é›†è¨ˆã‚’ã™ã‚‹ã€‚ */}\n <script type=\"application/javascript\">\n s.pageName=location.origin+"/booking-taxi/success";\n s.t();\n </script>\n </Helmet>\n {/* ç”»é¢é·ç§»æ™‚ã«ç”»é¢ãƒˆãƒƒãƒ—ã¸é·ç§»ã•ã›ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */}\n <ScrollToTop />\n {/* ヘッダー部分(常ã«ãƒã‚¤ãƒ¤ãƒ¼ãƒ»ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã«çµ±ä¸€ï¼‰ */}\n <AirportTransferTaxiHeader tabiCube={tabiCube} />\n <Container maxWidth=\"md\">\n <Typography color='primary' className={classes.typography}>\n {t('taxi:temporary_reservation_success_string_1')}<br/>\n {t('taxi:temporary_reservation_success_string_2')}\n </Typography>\n <Typography color='error' className={classes.typography}>\n {tabiCube?\n <>\n {t('taxi:temporary_reservation_success_string_4')}\n </>\n :\n <>\n {t('taxi:temporary_reservation_success_string_3')}\n </>\n }\n </Typography>\n {/* 自動é…信メールãŒå±Šã„ã¦ã„ãªã„å ´åˆã®æ¡ˆå†…ã‚’é–‹ãテã‚スト部分。 */}\n <AutomaticDeliveryNotice/>\n </Container>\n </div>\n )\n};\n\nexport default Success;\n","import * as React from 'react';\nimport { makeStyles, Typography } from '@material-ui/core';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles(() => ({\n checkBoxIcon: {\n fontSize: \"22px\",\n verticalAlign: \"top\",\n },\n mainText: {\n color: \"#000000\",\n },\n description: {\n color: \"#000000\",\n margin: \"0px 0px 15px 22px\",\n },\n text: {\n fontWeight: \"bold\",\n margin: \"15px 0px\"\n },\n textWithDescription: {\n fontWeight: \"bold\",\n marginTop: \"15px\",\n },\n underline: {\n textDecoration: \"underline\",\n }\n}));\n\n/** 宮交タクシーã®äºˆç´„ページã§ãƒ¡ãƒ¼ãƒ«ãŒå±Šã‹ãªã„å ´åˆã®ç¢ºèªäº‹é …。 */\nconst EmailCheckList: React.FC = () => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n\n /**\n * ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ä»˜ãã®è¦‹å‡ºã—。\n * @param text ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã®å³å´ã«è¡¨ç¤ºã™ã‚‹æ–‡è¨€ã€‚\n * */\n const headline = (text: string) => {\n return (\n <Typography color=\"primary\" className={classes.text}>\n <CheckBoxIcon color='inherit' className={classes.checkBoxIcon}/>\n { text }\n </Typography>\n );\n }\n\n /**\n * ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ä»˜ãã®è¦‹å‡ºã—(詳細部分ãŒã¤ã„ã¦ã„ã‚‹å ´åˆï¼‰ã€‚\n * @param text ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚¢ã‚¤ã‚³ãƒ³ã®å³å´ã«è¡¨ç¤ºã™ã‚‹æ–‡è¨€ã€‚\n * */\n const headlineWithDescription = (text: string) => {\n return (\n <Typography color=\"primary\" className={classes.textWithDescription}>\n <CheckBoxIcon color='inherit' className={classes.checkBoxIcon}/>\n { text }\n </Typography>\n );\n }\n\n return (\n <div>\n <Typography className={classes.mainText}>\n {t('taxi:temporary_reservation_unreceived_string_1')}\n </Typography>\n { headline(t('taxi:wrong_mailaddress')) }\n { headline(t('taxi:in_trash')) }\n { headline(t('taxi:full_mailbox')) }\n\n { headlineWithDescription(t('taxi:security_soft_setting')) }\n <Typography className={classes.description}>\n {t('taxi:temporary_reservation_unreceived_string_2')}\n </Typography>\n\n { headlineWithDescription(t('taxi:provider_setting')) }\n <Typography className={classes.description}>\n {t('taxi:temporary_reservation_unreceived_string_3')}\n {t('taxi:temporary_reservation_unreceived_string_4')}\n {t('taxi:temporary_reservation_unreceived_string_5')}\n </Typography>\n\n { headlineWithDescription(t('taxi:reject_domain')) }\n { (i18n.language === 'en') &&\n <Typography className={classes.description}>\n For this service, emails are sent with (<span className={classes.underline}>{\"@ana-maas-val.jp\"}</span>).<br/>\n If this domain designation has been rejected, please deactivate the designation rejection.\n </Typography>\n }\n { (i18n.language !== 'en') &&\n <Typography className={classes.description}>\n 本サービスã§ã¯ï¼ˆ<span className={classes.underline}>{\"@ana-maas-val.jp\"}</span>)よりメールをé€ä¿¡ã„ãŸã—ã¾ã™ã€‚<br/>\n ドメイン指定拒å¦ãŒã•ã‚Œã¦ã„ã‚‹å ´åˆã€æŒ‡å®šæ‹’å¦ã‚’解除ã„ãŸã ãよã†ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚\n </Typography>\n }\n </div>\n );\n}\n\nexport default EmailCheckList;\n","import * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Helmet from 'react-helmet';\n\nimport { Container, makeStyles } from '@material-ui/core';\n\nimport ScrollToTop from '../../../../common/ScrollToTop';\nimport EmailCheckList from '../../MiyakoTaxi/common/EmailCheckList';\nimport URLParams from '../../../../../utils/getParams';\nimport { changeLanguage } from '../../../../../utils/lang';\nimport { useLocation } from 'react-router-dom';\nimport { isTabiCube } from '../common/TabiCube';\nimport AirportTransferTaxiHeader from '../common/Header';\n\nconst useStyles = makeStyles(() => ({\n container: {\n marginTop: 10,\n },\n}));\n\n/** メールãŒå±Šã‹ãªã„å ´åˆã®æ¡ˆå†…ç”»é¢ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst Unreceived: React.FC = () => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLParams(location.search);\n // 言語è¨å®šã‚’ã™ã‚‹\n changeLanguage(searchParams, i18n);\n /** referrerパラメーターã®å€¤ã€‚ */\n const referrer = searchParams.getStringParam('referrer');\n /** æ—…CUBEモードã§ã‚ã‚‹ã‹åˆ¤å®šã—ãŸçµæžœã€‚ */\n const tabiCube = isTabiCube(referrer || '');\n /** ページタイトル。 */\n const title = tabiCube ? t('tabicube') : t('title');\n return (\n <div>\n <Helmet>\n {/* ページタイトルをè¨å®šã™ã‚‹ã€‚ */}\n <title>{title}</title>\n {/* Adobe Analyticsã§ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ç”»é¢ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã®é›†è¨ˆã‚’ã™ã‚‹ã€‚ */}\n <script type=\"application/javascript\">\n s.pageName=location.origin+"/booking-taxi/unreceived";\n s.t();\n </script>\n </Helmet>\n {/* ç”»é¢é·ç§»æ™‚ã«ç”»é¢ãƒˆãƒƒãƒ—ã¸é·ç§»ã•ã›ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */}\n <ScrollToTop />\n {/* ヘッダー。 */}\n <AirportTransferTaxiHeader tabiCube={tabiCube} />\n <Container maxWidth=\"md\" className={classes.container}>\n <EmailCheckList/>\n </Container>\n </div>\n )\n};\n\nexport default Unreceived;\n","import Environment from \"../../utils/environment\";\n\n/**\n * æ—…CUBEã®URLã‚’å–å¾—ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター。(例. ?lang=en)\n * @returns パラメーターをå«ã‚ãŸæ—…CUBEã®URL。\n */\nexport function getTabicubeUrl(searchParams: string) {\n /** 環境変数ã§æŒ‡å®šã•ã‚ŒãŸç’°å¢ƒç¨®åˆ¥ã‚’è˜åˆ¥ã™ã‚‹ãŸã‚ã®å€¤ã€‚ */\n const env = process.env['REACT_APP_STAGE_ENV'] || '';\n // 本番環境ã®å ´åˆã¯æœ¬ç•ªç’°å¢ƒç”¨URLã‚’ã€ãれ以外ã®å ´åˆã¯ã‚¹ãƒ†ãƒ¼ã‚¸ãƒ³ã‚°ç’°å¢ƒURLã‚’è¿”å´ã™ã‚‹ã€‚\n return Environment.isProduction(env) ?\n getTabicubeProductionUrl(searchParams) :\n getTabicubeStagingUrl(searchParams);\n}\n\n/**\n * æ—…CUBEã®æœ¬ç•ªç’°å¢ƒURLã‚’å–å¾—ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター。(例. ?lang=en)\n * @returns パラメーターをå«ã‚ãŸæœ¬ç•ªç’°å¢ƒã®æ—…CUBEã®URL。\n */\nexport function getTabicubeProductionUrl(searchParams: string) {\n return `https://tabicube.com${searchParams}`;\n}\n\n/**\n * æ—…CUBEã®ã‚¹ãƒ†ãƒ¼ã‚¸ãƒ³ã‚°ç’°å¢ƒURLã‚’å–å¾—ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター。(例. ?lang=en)\n * @returns パラメーターをå«ã‚ãŸã‚¹ãƒ†ãƒ¼ã‚¸ãƒ³ã‚°ç’°å¢ƒã®æ—…CUBEã®URL。\n */\nexport function getTabicubeStagingUrl(searchParams: string) {\n return `https://stg.tabicube.com${searchParams}`;\n}\n\n/**\n * ç¾åœ¨è¡¨ç¤ºã—ã¦ã„るパスãŒãらãŸã³ï¼ˆ/public以下ã®ãƒ‘ス)ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param pathname 表示ã—ã¦ã„るページã®ãƒ‘スå。\n * @returns ç¾åœ¨è¡¨ç¤ºã—ã¦ã„るパスãŒãらãŸã³ï¼ˆ/public以下ã®ãƒ‘ス)ã§ã‚ã‚‹ã‹ã‚’判定ã—ãŸçµæžœã€‚\n */\nexport function isSoratabi(pathname: string) {\n return pathname.includes('/public');\n}\n\n/**\n * ãらãŸã³ã®å ´åˆã«URLパラメーターを整形ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター部分ã®æ–‡å—列。\n * @returns 整形後ã®URLパラメーター。\n */\nexport function modifySoratabiParams(searchParams: string) {\n const params = new URLSearchParams(searchParams);\n // å¿…ãšã€Œreferrer=aswdmsã€ã‚’è¿½åŠ ã™ã‚‹ã€‚\n params.set('referrer', 'aswdms');\n return `?${params.toString()}`;\n}\n\n/**\n * 広島空港連æºã®å ´åˆã«URLパラメーターを整形ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター部分ã®æ–‡å—列。\n * @returns 整形後ã®URLパラメーター。\n */\nexport function modifyHiroshimaParams(searchParams: string) {\n const params = new URLSearchParams(searchParams);\n /** stdパラメーターã®å€¤ã€‚ */\n const std = params.get('std');\n /** staパラメーターã®å€¤ã€‚ */\n const sta = params.get('sta');\n // stdパラメーターã«å¹´æœˆæ—¥ã®ã¿è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€æ™‚åˆ»ã‚’è¿½åŠ ã™ã‚‹ã€‚\n if (std !== null && hasNotTime(std)) {\n /** 日付ã«æ™‚刻(åˆå‰0æ™‚ï¼‰ã‚’è¿½åŠ ã—ãŸå€¤ã€‚ */\n const added = add0am(std);\n params.set('std', added);\n }\n // staパラメーターã«å¹´æœˆæ—¥ã®ã¿è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€æ™‚åˆ»ã‚’è¿½åŠ ã™ã‚‹ã€‚\n if (sta !== null && hasNotTime(sta)) {\n /** 日付ã«æ™‚刻(åˆå‰1æ™‚ï¼‰ã‚’è¿½åŠ ã—ãŸå€¤ã€‚ */\n const added = add1am(sta);\n params.set('sta', added);\n }\n return `?${params.toString()}`;\n\n}\n\n/**\n * URLパラメーターã‹ã‚‰åºƒå³¶é€£æºã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param searchParams URLパラメーター。\n * @returns URLパラメーターã‹ã‚‰åºƒå³¶é€£æºã§ã‚ã‚‹ã‹ã‚’判定ã—ãŸçµæžœã€‚\n */\nexport function isHiroshimaAirport(searchParams: string) {\n return searchParams.includes('referrer=hijapo');\n}\n\n/**\n * 時刻ãŒæœªè¨å®šï¼ˆæ•°å—8ケタã®å€¤ï¼‰ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param value 判定ã—ãŸã„æ–‡å—列。\n * @returns 時刻ãŒæœªè¨å®šã§ã‚ã‚‹ã‹åˆ¤å®šã—ãŸçµæžœã€‚\n */\nexport function hasNotTime(value: string) {\n const regexp = RegExp(/^\\d{8}$/);\n return regexp.test(value);\n}\n\n/**\n * yyyyMMddå½¢å¼ã®å¹´æœˆæ—¥ã«HHmmå½¢å¼ã®åˆå‰0æ™‚ã‚’è¿½åŠ ã™ã‚‹ã€‚\n * @param value 年月日ã®æ–‡å—列。\n * @returns yyyyMMddHHmmå½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列。\n */\nexport function add0am(value: string) {\n return value.concat('0000');\n}\n\n/**\n * yyyyMMddå½¢å¼ã®å¹´æœˆæ—¥ã«HHmmå½¢å¼ã®åˆå‰1æ™‚ã‚’è¿½åŠ ã™ã‚‹ã€‚\n * @param value 年月日ã®æ–‡å—列。\n * @returns yyyyMMddHHmmå½¢å¼ã®æ—¥æ™‚ã®æ–‡å—列。\n */\nexport function add1am(value: string) {\n return value.concat('0100');\n}\n","import React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { getTabicubeUrl, isHiroshimaAirport, isSoratabi, modifyHiroshimaParams, modifySoratabiParams } from \"./util\";\n\n/** æ—…CUBEã¸ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•ã›ã‚‹ãŸã‚ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nexport const LinkToTabicube: React.FC = () => {\n const location = useLocation();\n /** ç¾åœ¨è¡¨ç¤ºã—ã¦ã„るページã®ãƒ‘スå。 */\n const pathname = location.pathname;\n /** URLパラメーター部分ã®æ–‡å—列。 */\n let params = location.search;\n // ãらãŸã³ãƒšãƒ¼ã‚¸ã®å ´åˆã€ãƒ‘ラメーターを整形ã™ã‚‹ã€‚\n if (isSoratabi(pathname)) {\n params = modifySoratabiParams(params);\n }\n // 広島空港連æºã®å ´åˆã€ç™ºç€æ—¥æ™‚ã®ãƒ‘ラメーターを整形ã™ã‚‹ã€‚\n if (isHiroshimaAirport(params)) {\n params = modifyHiroshimaParams(params);\n }\n /** リダイレクト先ã®æ—…CUBEã®URL。 */\n let tabiCubeUrl = getTabicubeUrl(params);\n window.location.href = tabiCubeUrl;\n return null;\n}\n\nexport default LinkToTabicube;\n","import React from 'react';\nimport { History } from 'history';\nimport { ConnectedRouter } from 'connected-react-router';\nimport { Route, Switch } from 'react-router-dom';\nimport BookingContainer from './containers/bookingContainer';\nimport NotFound from './components/NotFound';\nimport './App.css';\n\nimport { anaTheme } from './themes/ana';\nimport { universalMaaS } from './themes/universalMaaS';\nimport { ThemeProvider } from '@material-ui/core';\nimport Helmet from 'react-helmet';\nimport Path from './utils/path';\nimport BookingTaxi from './components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation';\nimport SuccessBookingTaxi from './components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Success';\nimport Unreceived from './components/ad/OtherServices/AirportTransferTaxi/TemporaryReservation/Unreceived';\nimport LinkToTabicube from './components/LinkToTabicube';\n\ninterface AppProps {\n history: History;\n}\n\nconst App: React.FC<AppProps> = ({ history }: AppProps) => {\n /** é©ç”¨ã™ã‚‹Theme。 */\n // Publicモードã®å ´åˆã¯Universal MaaSã€ãれ以外(Closedモード)ã®å ´åˆã¯Closedモード用ã®Themeã‚’é©ç”¨ã™ã‚‹ã€‚\n const theme = Path.isPublic(window.location.pathname) ? universalMaaS : anaTheme;\n return (\n <div className=\"App\">\n <Helmet>\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\"/>\n <link href=\"https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;700&display=swap\" rel=\"stylesheet\"/>\n </Helmet>\n <ConnectedRouter history={history}>\n <ThemeProvider theme={theme}>\n <Switch>\n {/* 空港アクセスナビ・ãらãŸã³ã®ãƒ‘ス(旅CUBEã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã™ã‚‹ï¼‰ã€‚ */}\n <Route path=\"/\" exact component={LinkToTabicube} />\n <Route path=\"/search\" exact component={LinkToTabicube} />\n <Route path=\"/result\" exact component={LinkToTabicube} />\n <Route path=\"/summary\" exact component={LinkToTabicube} />\n <Route path=\"/public\" exact component={LinkToTabicube} />\n <Route path=\"/public/summary\" exact component={LinkToTabicube} />\n <Route path=\"/public/result\" exact component={LinkToTabicube} />\n {/* タクシー予約ã«é–¢ã™ã‚‹ãƒ‘ス。 */}\n <Route path=\"/booking\" exact component={BookingContainer} />\n <Route path=\"/booking-taxi\" exact component={BookingTaxi} />\n <Route path=\"/booking-taxi/success\" exact component={SuccessBookingTaxi} />\n <Route path=\"/booking-taxi/unreceived\" exact component={Unreceived}/>\n {/* 404ページ。 */}\n <Route path=\"/404\" exact component={NotFound} />\n <Route component={NotFound} />\n </Switch>\n </ThemeProvider>\n </ConnectedRouter>\n </div>\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import i18n from 'i18next';\nimport enTranslation from './locales/en/translation.json';\nimport enSearch from './locales/en/search.json';\nimport enAd from './locales/en/ad.json';\nimport enAirdo from './locales/en/airdo.json';\nimport enOtherAirlines from './locales/en/other_airlines.json';\nimport enTaxi from './locales/en/taxi.json';\nimport jaTranslation from './locales/ja/translation.json';\nimport jaSearch from './locales/ja/search.json';\nimport jaAd from './locales/ja/ad.json';\nimport jaAirdo from './locales/ja/airdo.json';\nimport jaOtherAirlines from './locales/ja/other_airlines.json';\nimport jaTaxi from './locales/ja/taxi.json';\nimport {initReactI18next} from 'react-i18next';\n\nconst resources = {\n en: {\n translation: enTranslation,\n search: enSearch,\n ad: enAd,\n airdo: enAirdo,\n otherAirlines: enOtherAirlines,\n taxi: enTaxi\n },\n ja: {\n translation: jaTranslation,\n search: jaSearch,\n ad: jaAd,\n airdo: jaAirdo,\n otherAirlines: jaOtherAirlines,\n taxi: jaTaxi\n },\n};\n\ni18n\n .use(initReactI18next)\n .init({\n lng: 'ja',\n ns: ['translation', 'search', 'ad', 'taxi', 'airdo' ],\n defaultNS: 'translation',\n fallbackLng: 'ja',\n debug: true,\n\n interpolation: {\n escapeValue: false,\n },\n\n react: {\n wait: true,\n },\n resources: resources,\n });\n\nexport default i18n;\n","import axios from 'axios';\nimport differenceInDays from 'date-fns/differenceInDays';\nimport format from 'date-fns/format'\nimport { Lang } from '../../states/query';\nimport Airlines, { AirlineList } from '../../utils/Airlines';\nimport Environment from '../../utils/environment';\nimport { Flight } from './models';\nimport FlightInfo from './models/flightInfo';\nimport DateTime from '../../utils/dateTime';\n\ninterface FlightOptions {\n /** インクリメンタルサーãƒã§ã®ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±å–å¾—ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isIncrementalSearch?: boolean;\n /** 言語è¨å®šã€‚ */\n language?: string;\n /** 航空会社コード。 */\n airline?: string;\n}\n\n/** é‹èˆªæƒ…å ±ã‚’å–å¾—ã™ã‚‹éš›ã®ã‚ªãƒ—ションã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã€‚ */\nconst defaultFlightOptions: FlightOptions = {\n /** インクリメンタルサーãƒã§ã®ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±å–å¾—ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n // デフォルトã§ã¯é€šå¸¸ï¼ˆã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«ã‚µãƒ¼ãƒï¼‰ã§ã¯ãªã„リクエストã¨ã™ã‚‹ã€‚\n isIncrementalSearch: false,\n /** 言語è¨å®šã€‚ */\n // デフォルトã§ã¯æ—¥æœ¬èªžã¨ã™ã‚‹ã€‚\n language: Lang.ja,\n /** 航空会社コード。 */\n // デフォルトã§ã¯ANAã®èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ï¼ˆNH)ã¨ã™ã‚‹ã€‚\n airline: Airlines.getAirlineCode('ANA')\n}\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\nexport const getFlightFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n /**\n * ANA APIã‹ã‚‰é‹èˆªæƒ…å ±ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param flightNumber 便番å·ã€‚(数å—部分ã®ã¿ï¼‰\n * @param flightDate æ乗日。\n * @param options オプション。\n * @returns 指定ã—ãŸæä¹—æ—¥ã®ä¾¿ã®é‹èˆªæƒ…å ±ã€‚\n */\n const getFlight = async (flightNumber: string, flightDate: Date, options?: FlightOptions, targetAirLine: AirlineList = 'ANA') => {\n let domDate, intDate;\n /** 国内線ã§ã‚ã‚‹ã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚(日付ãŒæ¤œç´¢å¯¾è±¡å¤–ã®å ´åˆã«ã®ã¿åˆ©ç”¨ã€‚) */\n let isDomestic = true;\n /** 国際線ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ãŸã‚ã«ANA APIã‹ã‚‰å–å¾—ã—ãŸæƒ…å ±ã‚’æ ¼ç´ã™ã‚‹ã€‚(日付ãŒæ¤œç´¢å¯¾è±¡å¤–ã®å ´åˆã«ã®ã¿åˆ©ç”¨ã€‚) */\n let flightForCheckIsInternational: Flight;\n let flight: FlightInfo;\n /** インクリメンタルサーãƒä¸Šã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isIncrementalSearch = (options && options.isIncrementalSearch) ? options.isIncrementalSearch : defaultFlightOptions.isIncrementalSearch;\n /** 言語è¨å®šã€‚ */\n const language = (options && options.language) ? options.language : defaultFlightOptions.language;\n /** 航空会社コード。 */\n const airline = (options && options.airline) ? options.airline : defaultFlightOptions.airline;\n // リクエストパラメーター。\n const params = {\n 'flightNumber': flightNumber,\n 'language': language,\n 'airline': airline,\n };\n const now = new Date();\n // ã‚ã¨ã§è¦‹ç›´ã™ï¼ˆ2019/12/23ç¾åœ¨ï¼‰\n // eslint-disable-next-line no-useless-catch\n try {\n if(isIncrementalSearch){\n domDate = differenceInDays(flightDate, now) > 0 ? DateTime.JSTFormat(now, 'yyyy-MM-dd') : DateTime.JSTFormat(flightDate, 'yyyy-MM-dd');\n } else {\n domDate = DateTime.JSTFormat(flightDate, 'yyyy-MM-dd');\n }\n let response = await instance.get(`/flight`, { params :{ ...params, date: domDate }} );\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n\n let flightInfo: Flight = response.data;\n // å˜åœ¨ã—ãªã„å ´åˆã¯å›½éš›ç·šã¨ã—ã¦æ‰±ã†ã€‚\n switch(flightInfo.result.code){\n // æ£å¸¸æ™‚\n case '0000':\n return new FlightInfo(flightInfo, flightDate, language, targetAirLine);\n // 国際線ã®å ´åˆ\n case '0409':\n if(isIncrementalSearch){\n intDate = differenceInDays(flightDate, now) > 1 ? DateTime.JSTFormat(now, 'yyyy-MM-dd') : DateTime.JSTFormat(flightDate, 'yyyy-MM-dd');\n } else {\n intDate = DateTime.JSTFormat(flightDate, 'yyyy-MM-dd');\n }\n response = await instance.get(`/flight`, {\n params: { ...params, international: 'Y', date: intDate }\n });\n flightInfo = response.data;\n if(flightInfo.result.code === '0000') {\n const intFlight = new FlightInfo(flightInfo, flightDate, language, targetAirLine);\n // 国内線フラグã®ã¿ã‚’æ›´æ–°ã™ã‚‹ã€‚\n intFlight.setIsDomestic(false);\n return intFlight;\n }\n // 国際便ã¨ã—ã¦å†æ¤œç´¢ã—ã¦ã‚‚æ£å¸¸ãªçµæžœãŒå¾—られãªã„å ´åˆ\n else {\n const env = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isDev(env)) {\n console.error(flightInfo.result);\n }\n throw new Error('対象便ã®æƒ…å ±ãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ');\n }\n // 日付ãŒæ¤œç´¢å¯¾è±¡æœŸé–“外ã®å ´åˆã€‚\n case '0407':\n // 国際線ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ãŸã‚ã«ã€å½“日日付ã§å›½éš›ç·šAPIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n // (ã“ã®å‡¦ç†ãŒãªã„å ´åˆã€å¸¸ã«å›½å†…ç·šã¨ã—ã¦æ‰±ã‚れるãŸã‚。)\n intDate = DateTime.JSTFormat(now, 'yyyy-MM-dd');\n response = await instance.get(`/flight`, {\n params: { ...params, international: 'Y', date: intDate }\n });\n // 国際線ã‹åˆ¤åˆ¥ã™ã‚‹ãŸã‚ã®å¤‰æ•°ã«æ ¼ç´ã™ã‚‹ã€‚\n flightForCheckIsInternational = response.data;\n // æ£å¸¸ã«å›½éš›ç·šAPIã‹ã‚‰æƒ…å ±ã‚’å–å¾—ã§ããŸå ´åˆã¯å›½å†…線フラグをfalseã«ã™ã‚‹ã€‚(国際線ã¨ã—ã¦æ‰±ã†ã€‚)\n if (flightForCheckIsInternational.result.code === '0000') { isDomestic = false; }\n // å…ƒã®æ—¥ä»˜ãŒæ¤œç´¢å¯¾è±¡æœŸé–“外ã®å ´åˆã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã™ã‚‹ã€‚\n flight = new FlightInfo(flightInfo, flightDate, language, targetAirLine);\n // 国内線フラグã®ã¿ã‚’æ›´æ–°ã™ã‚‹ã€‚\n flight.setIsDomestic(isDomestic);\n return flight;\n default:\n throw new Error('ANA APIã‹ã‚‰ã®è¿”å´å€¤ãŒæƒ³å®šå¤–ã§ã™');\n }\n } catch (err) {\n throw err;\n }\n };\n\n return getFlight;\n};\n","import axios from 'axios';\nimport Environment from '../../utils/environment';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\nexport interface datalakeBusFormat {\n input_date: string,\n input_time: string,\n input_station_code: string,\n input_line_code: string,\n course_index: number,\n line_index: number,\n gpcd?: string;\n rocd?: string;\n dtym?: string;\n dtdd?: string;\n bncd?: string;\n bscd?: string;\n stationTable?: { [key: string]: string; };\n}\n\nexport const getDatalakeFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n const getDatalake = async (datalakeData: datalakeBusFormat[]) => {\n const params = {\n data: datalakeData,\n isCacheClear: 'false'\n };\n // staging環境以上ãªã‚‰å·¥æˆ¿é€£æºã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã¯prodã‚’å‚ç…§ã™ã‚‹\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n const pathList = {\n 'dev': '/kobotable/staging/',\n 'prod': '/kobotable//'\n }\n const path = Environment.isUpperStaging(env)? pathList.prod: pathList.dev;\n try {\n let response = await instance.post(path, params);\n \n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n \n return response;\n } catch (err) {\n throw err;\n }\n }\n return getDatalake;\n}\n\nexport const getDatalakeAllowBusListFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n const getDatalakeAllowBusList = async () => {\n // staging環境以上ãªã‚‰å·¥æˆ¿é€£æºã®è¨±å¯ãƒªã‚¹ãƒˆã¯prodã‚’å‚ç…§ã™ã‚‹\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n const pathList = {\n 'dev': '/kobotable/allowedbuslist/dev',\n 'prod': '/kobotable/allowedbuslist/'\n }\n const path = Environment.isUpperStaging(env)? pathList.prod: pathList.dev;\n try {\n let response = await instance.get(path);\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.body;\n } catch (err) {\n throw err;\n }\n }\n return getDatalakeAllowBusList;\n}\n\nexport const getOkinawaBusStopListFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n const getOkinawaBusStopList = async () => {\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n const pathList = {\n 'dev': '/kobotable/okinawabusstoplist/dev',\n 'prod': '/kobotable/okinawabusstoplist/'\n }\n // staging環境以上ãªã‚‰æœ¬ç•ªç’°å¢ƒã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆã‚’指ã™\n const path = Environment.isUpperStaging(env)? pathList.prod: pathList.dev;\n try {\n let response = await instance.get(path);\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.body;\n } catch (err) {\n throw err;\n }\n }\n return getOkinawaBusStopList;\n}\n\n// TODO: 後㧠getDatalakeAllowBusListFactory ã§å–å¾—ã—ãŸå€¤ã‚’Reduxã«ä¿å˜ã—ã¦ä½¿ã†ã‚ˆã†ã«ã—ã€\n// ã“ã¡ã‚‰ã®é–¢æ•°ã¯å‰Šé™¤ã™ã‚‹ã€‚\nexport const getDatalakeAllowBusList = async (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n // staging環境以上ãªã‚‰å·¥æˆ¿é€£æºã®è¨±å¯ãƒªã‚¹ãƒˆã¯prodã‚’å‚ç…§ã™ã‚‹\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n const pathList = {\n 'dev': '/kobotable/allowedbuslist/dev',\n 'prod': '/kobotable/allowedbuslist/'\n }\n const path = Environment.isUpperStaging(env)? pathList.prod: pathList.dev;\n try {\n let response = await instance.get(path);\n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200) {\n throw new Error('Server Error');\n }\n return response.data.body;\n } catch (err) {\n throw err;\n }\n}","// å„空港ã®å‡ºå£ã‹ã‚‰å„公共交通機関ã®æ‰€è¦æ™‚é–“ã‚’è¨å®šã—ãŸåœ°ç‚¹ã€‚\nexport const ExitToStations: { [key: string]: any; } = {\n 'ja': {\n // 羽田空港第1ターミナル\n 'HND_1': 'P-出å£-29509,22911,29511,51649-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 羽田空港第2ターミナル\n 'HND_2' : 'P-出å£-29510,22911,29512,52106-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 羽田空港第3ターミナル\n 'HND_3' : 'P-出å£-29672,305577,51650,29671-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)\n 'NRT' : 'P-出å£-22392,29573-0,0--å¾’æ©,å¾’æ©--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)\n 'NRT_3': 'P-出å£-304034,22267,29574-0,15,15--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n\n // 以下ã¯ãƒ€ãƒŸãƒ¼ãƒ‡ãƒ¼ã‚¿ï¼ˆ2020/01/14ç¾åœ¨ã€‚)\n // 稚内空港\n 'WKJ': 'P-出å£-307111-0--å¾’æ©--0----',\n // 利尻空港\n 'RIS': 'P-出å£-307459-0--å¾’æ©--0----',\n // オホーツク紋別空港\n 'MBE': 'P-出å£-307346-0--å¾’æ©--0----',\n // 女満別空港\n 'MMB': 'P-出å£-307110-0--å¾’æ©--0----',\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': 'P-出å£-307112-0--å¾’æ©--0----',\n // æ—å·ç©ºæ¸¯\n 'AKJ': 'P-出å£-307115-0--å¾’æ©--0----',\n // 釧路空港\n 'KUH': 'P-出å£-307113-0--å¾’æ©--0----',\n // 帯広空港\n 'OBO': 'P-出å£-307114-0--å¾’æ©--0----',\n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)\n 'CTS_DOM': 'P-出å£-20274,649323,1053276,307066-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----', \n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰\n 'CTS_INT': 'P-出å£-20274,1053277,307066,649386-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 函館空港\n 'HKD': 'P-出å£-307116,1053990-0,0--å¾’æ©,å¾’æ©--0----',\n // é’森空港\n 'AOJ': 'P-出å£-307117,611348,1165006-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 大館能代空港\n 'ONJ': 'P-出å£-307157-0--å¾’æ©--0----',\n // 秋田空港\n 'AXT': 'P-出å£-307119-0--å¾’æ©--0----',\n // 庄内空港\n 'SYO': 'P-出å£-307120-0--å¾’æ©--0----',\n // ä»™å°ç©ºæ¸¯\n 'SDJ': 'P-出å£-29549,307145,1068016-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 新潟空港\n 'KIJ': 'P-出å£-307148,834434-0,0--å¾’æ©,å¾’æ©--0----',\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': 'P-出å£-307147-0--å¾’æ©--0----',\n // 八丈島空港\n 'HAC': 'P-出å£-406013-0--å¾’æ©--0----',\n // é™å²¡ç©ºæ¸¯\n 'FSZ': 'P-出å£-307486-0--å¾’æ©--0----',\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': 'P-出å£-29529,319195,307162-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 伊丹空港\n 'ITM' : 'P-出å£-307124,29175-0,0--å¾’æ©,å¾’æ©--0----',\n // 関西空港(大阪)\n 'KIX': 'P-出å£-25891,307150,29098,307172-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 神戸空港\n 'UKB': 'P-出å£-29559,305569,257162,29576-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 徳島空港\n 'TKS': 'P-出å£-307132,797701-0,0--å¾’æ©,å¾’æ©--0----',\n // 高æ¾ç©ºæ¸¯\n 'TAK': 'P-出å£-307133-0--å¾’æ©--0----',\n // 岡山空港\n 'OKJ': 'P-出å£-304172-0--å¾’æ©--0----',\n // 高知空港\n 'KCZ': 'P-出å£-307134-0--å¾’æ©--0----',\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': 'P-出å£-304557-0--å¾’æ©--0----',\n // 広島空港\n 'HIJ': 'P-出å£-307130,994333-0,0--å¾’æ©,å¾’æ©--0----',\n // 岩国空港\n 'IWK': 'P-出å£-309198-0--å¾’æ©--0----',\n // 富山空港\n 'TOY': 'P-出å£-307122,1033582-0,0--å¾’æ©,å¾’æ©--0----',\n // 能登空港\n 'NTQ': 'P-出å£-307159-0--å¾’æ©--0----',\n // å°æ¾ç©ºæ¸¯\n 'KMQ': 'P-出å£-307123-0--å¾’æ©--0----',\n // é³¥å–空港\n 'TTJ': 'P-出å£-307126-0--å¾’æ©--0----',\n // ç±³å空港\n 'YGJ': 'P-出å£-26855,307127-0,0--å¾’æ©,å¾’æ©--0----',\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': 'P-出å£-307143-0--å¾’æ©--0----',\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': 'P-出å£-307131,822966,27487-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': 'P-出å£-307136,673337-0,0--å¾’æ©,å¾’æ©--0----',\n // 対馬空港\n 'TSJ': 'P-出å£-29119-0--å¾’æ©--0----',\n // 壱å²ç©ºæ¸¯\n 'IKI': 'P-出å£-307500-0--å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®æ—¥ä»˜ã®å ´åˆã«åˆ©ç”¨ã™ã‚‹ã€‚)\n 'FUK_DOM': 'P-出å£-28304,306294,304559-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)\n 'FUK_DOM_NORTH': 'P-出å£(北)-28304,304559,675189-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)\n 'FUK_DOM_SOUTH': 'P-出å£(å—)-28304,304559,675185-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰\n 'FUK_INT': 'P-出å£(国際)-306294,675186-0,0--å¾’æ©,å¾’æ©--0----',\n // 長崎空港\n 'NGS': 'P-出å£-319126,307139,815800,865041-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': 'P-出å£-五島ç¦æ±Ÿç©ºæ¸¯-0--å¾’æ©--0----',\n // ä½è³€ç©ºæ¸¯\n 'HSG': 'P-出å£-307158,1163127-0,0--å¾’æ©,å¾’æ©--0----',\n // 熊本空港\n 'KMJ': 'P-出å£-307138-0--å¾’æ©--0----',\n // 鹿å…島空港\n 'KOJ': 'P-出å£-307142,1117457,585719,304489-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 宮崎空港\n 'KMI': 'P-出å£-28904,307141,453417-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 大分空港\n 'OIT': 'P-出å£-307140,877746-0,0--å¾’æ©,å¾’æ©--0----',\n // 那覇空港(国内線ターミナル)\n 'OKA_DOM': 'P-出å£-29031,112259,1126026-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 那覇空港(国際線ターミナル)\n 'OKA_INT': 'P-出å£-29031,112258,1126027-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // å®®å¤ç©ºæ¸¯\n 'MMY': 'P-出å£-307497,1198940-0,0--å¾’æ©,å¾’æ©--0----',\n // 石垣空港\n 'ISG': 'P-出å£-307315-0--å¾’æ©--0----',\n // 天è‰ç©ºæ¸¯\n 'AXJ': 'P-出å£-307503-0--å¾’æ©--0----',\n // 種å島空港\n 'TNE': 'P-出å£-307493-0--å¾’æ©--0----',\n // 屋久島空港(ãƒã‚¹åœãªã—)\n 'KUM': 'P-出å£-29122-0--å¾’æ©--0----',\n // 与論空港(ãƒã‚¹åœãªã—)\n 'RNJ': 'P-出å£-29125-0--å¾’æ©--0----',\n // 喜界空港(ãƒã‚¹åœãªã—)\n 'KKX': 'P-出å£-29128-0--å¾’æ©--0----',\n // 沖永良部空港\n 'OKE': 'P-出å£-307470-0--å¾’æ©--0----',\n // 奄美空港\n 'ASJ': 'P-出å£-307474-0--å¾’æ©--0----',\n // 徳之島空港\n 'TKN': 'P-出å£-307471-0--å¾’æ©--0----'\n },\n 'en': {\n // 羽田空港第1ターミナル\n 'HND_1': 'P-exit-29509,22911,29511,51649-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 羽田空港第2ターミナル\n 'HND_2' : 'P-exit-29510,22911,29512,52106-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 羽田空港第3ターミナル\n 'HND_3' : 'P-exit-29672,305577,51650,29671-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)\n 'NRT' : 'P-exit-22392,29573-0,0--Walk,Walk--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)\n 'NRT_3': 'P-出å£-304034,22267,29574-0,15,15--Walk,Walk,Walk--0----',\n\n // 以下ã¯ãƒ€ãƒŸãƒ¼ãƒ‡ãƒ¼ã‚¿ï¼ˆ2020/01/14ç¾åœ¨ã€‚)\n // 稚内空港\n 'WKJ': 'P-exit-307111-0--Walk--0----',\n // 利尻空港\n 'RIS': 'P-exit-307459-0--Walk--0----',\n // オホーツク紋別空港\n 'MBE': 'P-exit-307346-0--Walk--0----',\n // 女満別空港\n 'MMB': 'P-exit-307110-0--Walk--0----',\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': 'P-exit-307112-0--Walk--0----',\n // æ—å·ç©ºæ¸¯\n 'AKJ': 'P-exit-307115-0--Walk--0----',\n // 釧路空港\n 'KUH': 'P-exit-307113-0--Walk--0----',\n // 帯広空港\n 'OBO': 'P-exit-307114-0--Walk--0----',\n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)\n 'CTS_DOM': 'P-exit-20274,649323,1053276,307066-0,0,0,0--Walk,Walk,Walk,Walk--0----', \n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰\n 'CTS_INT': 'P-exit-20274,1053277,307066,649386-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 函館空港\n 'HKD': 'P-exit-307116,1053990-0,0--Walk,Walk--0----',\n // é’森空港\n 'AOJ': 'P-exit-307117,611348,1165006-0,0,0--Walk,Walk,Walk--0----',\n // 大館能代空港\n 'ONJ': 'P-exit-307157-0--Walk--0----',\n // 秋田空港\n 'AXT': 'P-exit-307119-0--Walk--0----',\n // 庄内空港\n 'SYO': 'P-exit-307120-0--Walk--0----',\n // ä»™å°ç©ºæ¸¯\n 'SDJ': 'P-exit-29549,307145,1068016-0,0,0--Walk,Walk,Walk--0----',\n // 新潟空港\n 'KIJ': 'P-exit-307148,834434-0,0--Walk,Walk--0----',\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': 'P-exit-307147-0--Walk--0----',\n // 八丈島空港\n 'HAC': 'P-exit-406013-0--Walk--0----',\n // é™å²¡ç©ºæ¸¯\n 'FSZ': 'P-exit-307486-0--Walk--0----',\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': 'P-exit-29529,319195,307162-0,0,0--Walk,Walk,Walk--0----',\n // 伊丹空港\n 'ITM' : 'P-exit-307124,29175-0,0--Walk,Walk--0----',\n // 関西空港(大阪)\n 'KIX': 'P-exit-25891,307150,29098,307172-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 神戸空港\n 'UKB': 'P-exit-29559,305569,257162,29576-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 徳島空港\n 'TKS': 'P-exit-307132,797701-0,0--Walk,Walk--0----',\n // 高æ¾ç©ºæ¸¯\n 'TAK': 'P-exit-307133-0--Walk--0----',\n // 岡山空港\n 'OKJ': 'P-exit-304172-0--Walk--0----',\n // 高知空港\n 'KCZ': 'P-exit-307134-0--Walk--0----',\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': 'P-exit-304557-0--Walk--0----',\n // 広島空港\n 'HIJ': 'P-exit-307130,994333-0,0--Walk,Walk--0----',\n // 岩国空港\n 'IWK': 'P-exit-309198-0--Walk--0----',\n // 富山空港\n 'TOY': 'P-exit-307122,1033582-0,0--Walk,Walk--0----',\n // 能登空港\n 'NTQ': 'P-exit-307159-0--Walk--0----',\n // å°æ¾ç©ºæ¸¯\n 'KMQ': 'P-exit-307123-0--Walk--0----',\n // é³¥å–空港\n 'TTJ': 'P-exit-307126-0--Walk--0----',\n // ç±³å空港\n 'YGJ': 'P-exit-26855,307127-0,0--Walk,Walk--0----',\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': 'P-exit-307143-0--Walk--0----',\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': 'P-exit-307131,822966,27487-0,0,0--Walk,Walk,Walk--0----',\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': 'P-exit-307136,673337-0,0--Walk,Walk--0----',\n // 対馬空港\n 'TSJ': 'P-exit-29119-0--Walk--0----',\n // 壱å²ç©ºæ¸¯\n 'IKI': 'P-exit-307500-0--Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®æ—¥ä»˜ã®å ´åˆã«åˆ©ç”¨ã™ã‚‹ã€‚)\n 'FUK_DOM': 'P-exit-28304,306294,304559-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)\n 'FUK_DOM_NORTH': 'P-exit(North)-28304,304559,675189-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)\n 'FUK_DOM_SOUTH': 'P-exit(South)-28304,304559,675185-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰\n 'FUK_INT': 'P-exit(International)-306294,675186-0,0--Walk,Walk--0----',\n // 長崎空港\n 'NGS': 'P-exit-319126,307139,815800,865041-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': 'P-exit-五島ç¦æ±Ÿç©ºæ¸¯-0--Walk--0----',\n // ä½è³€ç©ºæ¸¯\n 'HSG': 'P-exit-307158,1163127-0,0--Walk,Walk--0----',\n // 熊本空港\n 'KMJ': 'P-exit-307138-0--Walk--0----',\n // 鹿å…島空港\n 'KOJ': 'P-exit-307142,1117457,585719,304489-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 宮崎空港\n 'KMI': 'P-exit-28904,307141,453417-0,0,0--Walk,Walk,Walk--0----',\n // 大分空港\n 'OIT': 'P-exit-307140,877746-0,0--Walk,Walk--0----',\n // 那覇空港(国内線ターミナル)\n 'OKA_DOM': 'P-exit-29031,112259,1126026-0,0,0--Walk,Walk,Walk--0----',\n // 那覇空港(国際線ターミナル)\n 'OKA_INT': 'P-exit-29031,112258,1126027-0,0,0--Walk,Walk,Walk--0----',\n // å®®å¤ç©ºæ¸¯\n 'MMY': 'P-exit-307497,1198940-0,0--Walk,Walk--0----',\n // 石垣空港\n 'ISG': 'P-exit-307315-0--Walk--0----',\n // 天è‰ç©ºæ¸¯\n 'AXJ': 'P-exit-307503-0--Walk--0----',\n // 種å島空港\n 'TNE': 'P-exit-307493-0--Walk--0----',\n // 屋久島空港(ãƒã‚¹åœãªã—)\n 'KUM': 'P-exit-29122-0--Walk--0----',\n // 与論空港(ãƒã‚¹åœãªã—)\n 'RNJ': 'P-exit-29125-0--Walk--0----',\n // 喜界空港(ãƒã‚¹åœãªã—)\n 'KKX': 'P-exit-29128-0--Walk--0----',\n // 沖永良部空港\n 'OKE': 'P-exit-307470-0--Walk--0----',\n // 奄美空港\n 'ASJ': 'P-exit-307474-0--Walk--0----',\n // 徳之島空港\n 'TKN': 'P-exit-307471-0--Walk--0----'\n }\n}\n","// å„空港ã®ã¨å„公共交通機関ã®ãƒªãƒ³ã‚¯ã‚’è¨å®šã—ãŸåœ°ç‚¹ã€‚\nexport const AirportsAndStations: { [key: string]: any; } = {\n 'ja': {\n // 羽田空港第1ターミナル\n 'HND_1': 'P-羽田空港第1ターミナル-29509,22911,29511,51649-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 羽田空港第2ターミナル\n 'HND_2' : 'P-羽田空港第2ターミナル-29510,22911,29512,52106-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 羽田空港第3ターミナル\n 'HND_3' : 'P-羽田空港第3ターミナル-29672,305577,51650,29671-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)\n 'NRT' : 'P-æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)-22392,29573-0,0--å¾’æ©,å¾’æ©--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)\n 'NRT_3': 'P-æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)-304034,22267,29574-0,15,15--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 稚内空港\n 'WKJ': 'P-稚内空港-307111-0--å¾’æ©--0----',\n // 利尻空港\n 'RIS': 'P-利尻空港-307459-0--å¾’æ©--0----',\n // オホーツク紋別空港\n 'MBE': 'P-オホーツク紋別空港-307346-0--å¾’æ©--0----',\n // 女満別空港\n 'MMB': 'P-女満別空港-307110-0--å¾’æ©--0----',\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': 'P-æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯-307112-0--å¾’æ©--0----',\n // æ—å·ç©ºæ¸¯\n 'AKJ': 'P-æ—å·ç©ºæ¸¯-307115-0--å¾’æ©--0----',\n // 釧路空港\n 'KUH': 'P-釧路空港-307113-0--å¾’æ©--0----',\n // 帯広空港\n 'OBO': 'P-帯広空港-307114-0--å¾’æ©--0----',\n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)\n 'CTS_DOM': 'P-æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)-20274,649323,1053276,307066-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰\n 'CTS_INT': 'P-æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰-20274,1053277,307066,649386-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 函館空港\n 'HKD': 'P-函館空港-307116,1053990-0,0--å¾’æ©,å¾’æ©--0----',\n // é’森空港\n 'AOJ': 'P-é’森空港-307117,611348,1165006-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 大館能代空港\n 'ONJ': 'P-大館能代空港-307157-0--å¾’æ©--0----',\n // 秋田空港\n 'AXT': 'P-秋田空港-307119-0--å¾’æ©--0----',\n // 庄内空港\n 'SYO': 'P-庄内空港-307120-0--å¾’æ©--0----',\n // ä»™å°ç©ºæ¸¯\n 'SDJ': 'P-ä»™å°ç©ºæ¸¯-29549,307145,1068016-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 新潟空港\n 'KIJ': 'P-新潟空港-307148,834434-0,0--å¾’æ©,å¾’æ©--0----',\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': 'P-ç¦å³¶ç©ºæ¸¯-307147-0--å¾’æ©--0----',\n // 八丈島空港\n 'HAC': 'P-八丈島空港-406013-0--å¾’æ©--0----',\n // é™å²¡ç©ºæ¸¯\n 'FSZ': 'P-é™å²¡ç©ºæ¸¯-307486-0--å¾’æ©--0----',\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': 'P-ä¸éƒ¨å›½éš›ç©ºæ¸¯-29529,319195,307162-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 伊丹空港\n 'ITM' : 'P-伊丹空港-307124,29175-0,0--å¾’æ©,å¾’æ©--0----',\n // 関西空港(大阪)\n 'KIX': 'P-関西空港(大阪)-25891,307150,29098,307172-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 神戸空港\n 'UKB': 'P-神戸空港-29559,305569,257162,29576-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 徳島空港\n 'TKS': 'P-徳島空港-307132,797701-0,0--å¾’æ©,å¾’æ©--0----',\n // 高æ¾ç©ºæ¸¯\n 'TAK': 'P-高æ¾ç©ºæ¸¯-307133-0--å¾’æ©--0----',\n // 岡山空港\n 'OKJ': 'P-岡山空港-304172-0--å¾’æ©--0----',\n // 高知空港\n 'KCZ': 'P-高知空港-307134-0--å¾’æ©--0----',\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': 'P-æ¾å±±ç©ºæ¸¯-304557-0--å¾’æ©--0----',\n // 広島空港\n 'HIJ': 'P-広島空港-307130,994333-0,0--å¾’æ©,å¾’æ©--0----',\n // 岩国空港\n 'IWK': 'P-岩国空港-309198-0--å¾’æ©--0----',\n // 富山空港\n 'TOY': 'P-富山空港-307122,1033582-0,0--å¾’æ©,å¾’æ©--0----',\n // 能登空港\n 'NTQ': 'P-能登空港-307159-0--å¾’æ©--0----',\n // å°æ¾ç©ºæ¸¯\n 'KMQ': 'P-å°æ¾ç©ºæ¸¯-307123-0--å¾’æ©--0----',\n // é³¥å–空港\n 'TTJ': 'P-é³¥å–空港-307126-0--å¾’æ©--0----',\n // ç±³å空港\n 'YGJ': 'P-ç±³å空港-26855,307127-0,0--å¾’æ©,å¾’æ©--0----',\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': 'P-è©ãƒ»çŸ³è¦‹ç©ºæ¸¯-307143-0--å¾’æ©--0----',\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': 'P-å±±å£å®‡éƒ¨ç©ºæ¸¯-307131,822966,27487-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': 'P-北ä¹å·žç©ºæ¸¯-307136,673337-0,0--å¾’æ©,å¾’æ©--0----',\n // 対馬空港\n 'TSJ': 'P-対馬空港-29119-0--å¾’æ©--0----',\n // 壱å²ç©ºæ¸¯\n 'IKI': 'P-壱å²ç©ºæ¸¯-307500-0--å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®æ—¥ä»˜ã®å ´åˆã«åˆ©ç”¨ã™ã‚‹ã€‚)\n 'FUK_DOM': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線)-28304,306294,304559-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)\n 'FUK_DOM_NORTH': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)-28304,304559,675189-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)\n 'FUK_DOM_SOUTH': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)-28304,304559,675185-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰\n 'FUK_INT': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰-306294,675186-0,0--å¾’æ©,å¾’æ©--0----',\n // 長崎空港\n 'NGS': 'P-長崎空港-319126,307139,815800,865041-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': 'P-五島ç¦æ±Ÿç©ºæ¸¯-五島ç¦æ±Ÿç©ºæ¸¯-0--å¾’æ©--0----',\n // ä½è³€ç©ºæ¸¯\n 'HSG': 'P-ä½è³€ç©ºæ¸¯-307158,1163127-0,0--å¾’æ©,å¾’æ©--0----',\n // 熊本空港\n 'KMJ': 'P-熊本空港-307138-0--å¾’æ©--0----',\n // 鹿å…島空港\n 'KOJ': 'P-鹿å…島空港-307142,1117457,585719,304489-0,0,0,0--å¾’æ©,å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 宮崎空港\n 'KMI': 'P-宮崎空港-28904,307141,453417-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 大分空港\n 'OIT': 'P-大分空港-307140,877746-0,0--å¾’æ©,å¾’æ©--0----',\n // 那覇空港(国内線ターミナル)\n 'OKA_DOM': 'P-出å£-29031,112259,1126026-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // 那覇空港(国際線ターミナル)\n 'OKA_INT': 'P-出å£-29031,112258,1126027-0,0,0--å¾’æ©,å¾’æ©,å¾’æ©--0----',\n // å®®å¤ç©ºæ¸¯\n 'MMY': 'P-å®®å¤ç©ºæ¸¯-307497,1198940-0,0--å¾’æ©,å¾’æ©--0----',\n // 石垣空港\n 'ISG': 'P-石垣空港-307315-0--å¾’æ©--0----',\n // 天è‰ç©ºæ¸¯\n 'AXJ': 'P-天è‰ç©ºæ¸¯-307503-0--å¾’æ©--0----',\n // 種å島空港\n 'TNE': 'P-種å島空港-307493-0--å¾’æ©--0----',\n // 屋久島空港(ãƒã‚¹åœãªã—)\n 'KUM': 'P-屋久島空港-29122-0--å¾’æ©--0----',\n // 与論空港(ãƒã‚¹åœãªã—)\n 'RNJ': 'P-与論空港-29125-0--å¾’æ©--0----',\n // 喜界空港(ãƒã‚¹åœãªã—)\n 'KKX': 'P-喜界空港-29128-0--å¾’æ©--0----',\n // 沖永良部空港\n 'OKE': 'P-沖永良部空港-307470-0--å¾’æ©--0----',\n // 奄美空港\n 'ASJ': 'P-奄美空港-307474-0--å¾’æ©--0----',\n // 徳之島空港\n 'TKN': 'P-徳之島空港-307471-0--å¾’æ©--0----'\n },\n 'en': {\n // 羽田空港第1ターミナル\n 'HND_1': 'P-羽田空港第1ターミナル-29509,22911,29511,51649-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 羽田空港第2ターミナル\n 'HND_2' : 'P-羽田空港第2ターミナル-29510,22911,29512,52106-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 羽田空港第3ターミナル\n 'HND_3' : 'P-羽田空港第3ターミナル-29672,305577,51650,29671-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)\n 'NRT' : 'P-æˆç”°ç©ºæ¸¯ï¼ˆç¬¬1ターミナル)-22392,29573-0,0--Walk,Walk--0----',\n // æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)\n 'NRT_3': 'P-æˆç”°ç©ºæ¸¯ï¼ˆç¬¬3ターミナル)-304034,22267,29574-0,15,15--Walk,Walk,Walk--0----',\n // 稚内空港\n 'WKJ': 'P-稚内空港-307111-0--Walk--0----',\n // 利尻空港\n 'RIS': 'P-利尻空港-307459-0--Walk--0----',\n // オホーツク紋別空港\n 'MBE': 'P-オホーツク紋別空港-307346-0--Walk--0----',\n // 女満別空港\n 'MMB': 'P-女満別空港-307110-0--Walk--0----',\n // æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯\n 'SHB': 'P-æ ¹å®¤ä¸æ¨™æ´¥ç©ºæ¸¯-307112-0--Walk--0----',\n // æ—å·ç©ºæ¸¯\n 'AKJ': 'P-æ—å·ç©ºæ¸¯-307115-0--Walk--0----',\n // 釧路空港\n 'KUH': 'P-釧路空港-307113-0--Walk--0----',\n // 帯広空港\n 'OBO': 'P-帯広空港-307114-0--Walk--0----',\n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)\n 'CTS_DOM': 'P-æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½å†…線)-20274,649323,1053276,307066-0,0,0,0--Walk,Walk,Walk,Walk--0----', \n // æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰\n 'CTS_INT': 'P-æ–°åƒæ³ç©ºæ¸¯ï¼ˆå›½éš›ç·šï¼‰-20274,1053277,307066,649386-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 函館空港\n 'HKD': 'P-函館空港-307116,1053990-0,0--Walk,Walk--0----',\n // é’森空港\n 'AOJ': 'P-é’森空港-307117,611348,1165006-0,0,0--Walk,Walk,Walk--0----',\n // 大館能代空港\n 'ONJ': 'P-大館能代空港-307157-0--Walk--0----',\n // 秋田空港\n 'AXT': 'P-秋田空港-307119-0--Walk--0----',\n // 庄内空港\n 'SYO': 'P-庄内空港-307120-0--Walk--0----',\n // ä»™å°ç©ºæ¸¯\n 'SDJ': 'P-ä»™å°ç©ºæ¸¯-29549,307145,1068016-0,0,0--Walk,Walk,Walk--0----',\n // 新潟空港\n 'KIJ': 'P-新潟空港-307148,834434-0,0--Walk,Walk--0----',\n // ç¦å³¶ç©ºæ¸¯\n 'FKS': 'P-ç¦å³¶ç©ºæ¸¯-307147-0--Walk--0----',\n // 八丈島空港\n 'HAC': 'P-八丈島空港-406013-0--Walk--0----',\n // é™å²¡ç©ºæ¸¯\n 'FSZ': 'P-é™å²¡ç©ºæ¸¯-307486-0--Walk--0----',\n // ä¸éƒ¨å›½éš›ç©ºæ¸¯\n 'NGO': 'P-ä¸éƒ¨å›½éš›ç©ºæ¸¯-29529,319195,307162-0,0,0--Walk,Walk,Walk--0----',\n // 伊丹空港\n 'ITM' : 'P-伊丹空港-307124,29175-0,0--Walk,Walk--0----',\n // 関西空港(大阪)\n 'KIX': 'P-関西空港(大阪)-25891,307150,29098,307172-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 神戸空港\n 'UKB': 'P-神戸空港-29559,305569,257162,29576-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 徳島空港\n 'TKS': 'P-徳島空港-307132,797701-0,0--Walk,Walk--0----',\n // 高æ¾ç©ºæ¸¯\n 'TAK': 'P-高æ¾ç©ºæ¸¯-307133-0--Walk--0----',\n // 岡山空港\n 'OKJ': 'P-岡山空港-304172-0--Walk--0----',\n // 高知空港\n 'KCZ': 'P-高知空港-307134-0--Walk--0----',\n // æ¾å±±ç©ºæ¸¯\n 'MYJ': 'P-æ¾å±±ç©ºæ¸¯-304557-0--Walk--0----',\n // 広島空港\n 'HIJ': 'P-広島空港-307130,994333-0,0--Walk,Walk--0----',\n // 岩国空港\n 'IWK': 'P-岩国空港-309198-0--Walk--0----',\n // 富山空港\n 'TOY': 'P-富山空港-307122,1033582-0,0--Walk,Walk--0----',\n // 能登空港\n 'NTQ': 'P-能登空港-307159-0--Walk--0----',\n // å°æ¾ç©ºæ¸¯\n 'KMQ': 'P-å°æ¾ç©ºæ¸¯-307123-0--Walk--0----',\n // é³¥å–空港\n 'TTJ': 'P-é³¥å–空港-307126-0--Walk--0----',\n // ç±³å空港\n 'YGJ': 'P-ç±³å空港-26855,307127-0,0--Walk,Walk--0----',\n // è©ãƒ»çŸ³è¦‹ç©ºæ¸¯\n 'IWJ': 'P-è©ãƒ»çŸ³è¦‹ç©ºæ¸¯-307143-0--Walk--0----',\n // å±±å£å®‡éƒ¨ç©ºæ¸¯\n 'UBJ': 'P-å±±å£å®‡éƒ¨ç©ºæ¸¯-307131,822966,27487-0,0,0--Walk,Walk,Walk--0----',\n // 北ä¹å·žç©ºæ¸¯\n 'KKJ': 'P-北ä¹å·žç©ºæ¸¯-307136,673337-0,0--Walk,Walk--0----',\n // 対馬空港\n 'TSJ': 'P-対馬空港-29119-0--Walk--0----',\n // 壱å²ç©ºæ¸¯\n 'IKI': 'P-壱å²ç©ºæ¸¯-307500-0--Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®æ—¥ä»˜ã®å ´åˆã«åˆ©ç”¨ã™ã‚‹ã€‚)\n 'FUK_DOM': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線)-28304,306294,304559-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)\n 'FUK_DOM_NORTH': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…線北ターミナル)-28304,304559,675189-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)\n 'FUK_DOM_SOUTH': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½å†…ç·šå—ターミナル)-28304,304559,675185-0,0,0--Walk,Walk,Walk--0----',\n // ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰\n 'FUK_INT': 'P-ç¦å²¡ç©ºæ¸¯ï¼ˆå›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ï¼‰-306294,675186-0,0--Walk,Walk--0----',\n // 長崎空港\n 'NGS': 'P-長崎空港-319126,307139,815800,865041-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 五島ç¦æ±Ÿç©ºæ¸¯\n 'FUJ': 'P-五島ç¦æ±Ÿç©ºæ¸¯-五島ç¦æ±Ÿç©ºæ¸¯-0--Walk--0----',\n // ä½è³€ç©ºæ¸¯\n 'HSG': 'P-ä½è³€ç©ºæ¸¯-307158,1163127-0,0--Walk,Walk--0----',\n // 熊本空港\n 'KMJ': 'P-熊本空港-307138-0--Walk--0----',\n // 鹿å…島空港\n 'KOJ': 'P-鹿å…島空港-307142,1117457,585719,304489-0,0,0,0--Walk,Walk,Walk,Walk--0----',\n // 宮崎空港\n 'KMI': 'P-宮崎空港-28904,307141,453417-0,0,0--Walk,Walk,Walk--0----',\n // 大分空港\n 'OIT': 'P-大分空港-307140,877746-0,0--Walk,Walk--0----',\n // 那覇空港(国内線ターミナル)\n 'OKA_DOM': 'P-exit-29031,112259,1126026-0,0,0--Walk,Walk,Walk--0----',\n // 那覇空港(国際線ターミナル)\n 'OKA_INT': 'P-exit-29031,112258,1126027-0,0,0--Walk,Walk,Walk--0----',\n // å®®å¤ç©ºæ¸¯\n 'MMY': 'P-å®®å¤ç©ºæ¸¯-307497,1198940-0,0--Walk,Walk--0----',\n // 石垣空港\n 'ISG': 'P-石垣空港-307315-0--Walk--0----',\n // 天è‰ç©ºæ¸¯\n 'AXJ': 'P-天è‰ç©ºæ¸¯-307503-0--Walk--0----',\n // 種å島空港\n 'TNE': 'P-種å島空港-307493-0--Walk--0----',\n // 屋久島空港(ãƒã‚¹åœãªã—)\n 'KUM': 'P-屋久島空港-29122-0--Walk--0----',\n // 与論空港(ãƒã‚¹åœãªã—)\n 'RNJ': 'P-与論空港-29125-0--Walk--0----',\n // 喜界空港(ãƒã‚¹åœãªã—)\n 'KKX': 'P-喜界空港-29128-0--Walk--0----',\n // 沖永良部空港\n 'OKE': 'P-沖永良部空港-307470-0--Walk--0----',\n // 奄美空港\n 'ASJ': 'P-奄美空港-307474-0--Walk--0----',\n // 徳之島空港\n 'TKN': 'P-徳之島空港-307471-0--Walk--0----'\n },\n}\n","import * as React from 'react';\nimport { Grid, createStyles, makeStyles, Button, Link } from '@material-ui/core';\nimport scClick from '../../common/ScClick';\nimport { isKeyDownEnter } from '../../../utils/tabIndexList';\n\ninterface Props {\n /** 表示ã™ã‚‹ãƒãƒŠãƒ¼ç”»åƒã®ãƒ‘ス。 */\n src: string,\n /** リンク先ã®URL。 */\n url?: string,\n /** Adobe Analyticsã§ã®ã‚¯ãƒªãƒƒã‚¯æ•°ã®é›†è¨ˆç”¨ã®å称。 */\n clickName?: string,\n /** ãƒãƒŠãƒ¼ç”»åƒã®alt属性ã«æŒ‡å®šã™ã‚‹æ–‡å—列。 */\n alt: string,\n /** 境界線ãŒã‚ã‚‹ã‹ã‚’指定ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n hasBorder?: boolean,\n /** POSTメソッドã§ãƒªãƒ³ã‚¯å…ˆã¸é·ç§»ã™ã‚‹ã‹ã‚’指定ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚ */\n post?: boolean,\n /** POSTメソッドã§é€ä¿¡ã™ã‚‹ãƒ‘ラメーターã®ã‚ªãƒ–ジェクト。 */\n params?: { [key: string]: string },\n /** Cookieã‚’ä¿å˜ã™ã‚‹é–¢æ•°ã€‚ */\n saveCookie?: () => void,\n /** Cypressã§è˜åˆ¥ã™ã‚‹ãŸã‚ã®å称。 */\n cyName?: string,\n /** モーダル内ã«è¡¨ç¤ºã™ã‚‹ã‹å¦ã‹ */\n isShowModal?: boolean,\n /** URLãŒæœªè¨å®šã®éš›ã«ã‚¯ãƒªãƒƒã‚¯ã—ãŸéš›ã«ç™ºç«ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆ */\n noSetUrlOnClick?: () => void,\n /** tabIndexã®å€¤ */\n tabIndex?: number,\n /** ãƒãƒŠãƒ¼ã®ä¸Šå´ã«è¡¨ç¤ºã™ã‚‹è¦ç´ */\n topArea?: JSX.Element | string\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n image: {\n width: '100%',\n maxWidth: '640px',\n cursor: 'pointer'\n },\n imageWithBorder: {\n width: '98.76%',\n border: 'solid 2px #b2b2b2',\n maxWidth: '640px',\n cursor: 'pointer'\n },\n bannerSetMaxWidth: {\n alignSelf: 'center',\n width: '80%',\n maxWidth: '400px',\n textAlign: 'center',\n margin: 'auto'\n },\n banner: {\n alignSelf: 'center',\n textAlign: 'center',\n margin: 'auto'\n },\n topArea: {\n width: '100%',\n maxWidth: '640px',\n margin: 'auto',\n textAlign: 'left'\n },\n prFont: {\n fontSize: '0.625rem',\n color: '#6d6d6d'\n }\n }),\n);\n\n/** ãƒãƒŠãƒ¼åºƒå‘Šã®ãƒ™ãƒ¼ã‚¹ã¨ãªã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst Banner: React.FC<Props> = (props: Props) => {\n const classes = useStyles({});\n /** ãƒãƒŠãƒ¼ã‚¯ãƒªãƒƒã‚¯æ™‚ã®å‡¦ç†ã€‚ */\n const onClick = () => {\n if(props.clickName) {\n /** クリック数ã®é›†è¨ˆã€‚ */\n scClick(props.clickName);\n }\n // Cookieã‚’ä¿å˜ã™ã‚‹é–¢æ•°ãŒæ¸¡ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€3秒後ã«ãã®é–¢æ•°ã‚’実行ã™ã‚‹ã€‚\n // (リンク先ã¸ã®é·ç§»å‰ã«Cookieã®æ ¼ç´ã‚’検知ã—ã¦ã€URLã®å¤‰æ›´ãŒç™ºç«ã—ã¦ã—ã¾ã†å ´åˆãŒã‚ã‚‹ãŸã‚。)\n if (props.saveCookie) {\n setTimeout(() => {\n // ã“ã®éšŽå±¤ã§ã‚‚関数ã®å˜åœ¨ãƒã‚§ãƒƒã‚¯ã‚’ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ãŸã‚2é‡ã§åˆ¤åˆ¥ã—ã¦ã„る。\n if (props.saveCookie) { props.saveCookie(); }\n }, 3000);\n }\n if( props.noSetUrlOnClick ) {\n props.noSetUrlOnClick();\n }\n }\n return (\n <Grid container justify='center' alignItems='center' style={{ marginTop: 10 }} data-cy={props.cyName} >\n <Grid item xs={12} >\n <div className={props.isShowModal? classes.bannerSetMaxWidth: classes.banner}>\n {/** ãƒãƒŠãƒ¼ã®ä¸Šå´ã«è¡¨ç¤ºã™ã‚‹æ–‡å—を入れる */}\n <div className={classes.topArea}>\n <span className={classes.prFont}>\n {props.topArea}\n </span>\n </div>\n {/* POSTã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹å ´åˆã€‚ */}\n { (props.post && props.params) && props.url &&\n <form action={props.url} method=\"post\" target=\"_blank\">\n {\n Object.keys(props.params).map( (key: string) => {\n if (props.params) {\n // リクエストパラメーターをhiddenã‚¿ã‚°ã§åŸ‹ã‚込む。\n return ( <input key={key} type=\"hidden\" name={key} value={props.params[key]} /> )\n }\n return null;\n })\n }\n <Button\n onClick={ () => {\n if(props.clickName) {\n scClick(props.clickName)}\n }\n }\n type='submit'\n tabIndex={props.tabIndex || 0}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n if(props.clickName) {\n scClick(props.clickName)\n }\n })\n }\n }\n >\n <img\n src={props.src}\n alt={props.alt}\n className={`${props.hasBorder ? classes.imageWithBorder : classes.image}`}\n />\n </Button>\n </form>\n }\n {/* GETã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹å ´åˆã€‚ */}\n { !props.post && props.url &&\n <Link href={props.url} rel=\"noopener\" target=\"_blank\" onClick={ onClick }>\n <img\n src={props.src}\n alt={props.alt}\n className={`${props.hasBorder ? classes.imageWithBorder : classes.image}`}\n />\n </Link>\n }\n {/** URLãŒæœªè¨å®šã®å ´åˆ */}\n { !props.url &&\n <img\n src={props.src}\n alt={props.alt}\n className={`${props.hasBorder ? classes.imageWithBorder : classes.image}`}\n onClick={onClick}\n tabIndex={props.tabIndex || 0}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n onClick();\n })\n }\n }\n />\n }\n </div>\n </Grid>\n </Grid>\n )\n};\n\nexport default Banner;\n","import React from 'react';\n\nimport { createStyles, makeStyles, Button, withStyles, Link } from '@material-ui/core';\n\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport scClick from '../ScClick';\n\nexport interface Props {\n /** ボタンã«è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ™ãƒ«ã€‚ */\n label: string | React.ReactNode,\n /** リンク先ã®URL。 */\n url: string,\n /** Adobe Analyticsã§ã®ã‚¯ãƒªãƒƒã‚¯æ•°ã®é›†è¨ˆç”¨ã®å称。(ä»»æ„) */\n clickName?: string,\n /** ボタンã®èƒŒæ™¯è‰² */\n backgroundColor?: string\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n textAlign: 'center',\n width: '100%',\n height: '48px',\n marginTop: '16px',\n fontSize: '0.9rem'\n },\n link: {\n \"&:hover\": {\n textDecoration: \"none\",\n },\n },\n }),\n);\n\n/** 背景色を黄色ã€ãƒ©ãƒ™ãƒ«è‰²ã‚’é»’ã«ã—ãŸãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst YellowButton = withStyles({\n root: {\n backgroundColor: \"#FDB50A\",\n paddingTop: '4px'\n },\n label: {\n color: \"#0f0f0f\",\n textTransform: 'none',\n },\n})(Button);\n\n/** ãƒãƒƒãƒ—アップ画é¢å†…ã®é»„色ã„リンク(予約・料金確èªï¼‰ç”¨ãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst ButtonToLink: React.FC<Props> = (props: Props) => {\n const classes = useStyles({});\n\n /** ã“ã®ãƒœã‚¿ãƒ³ã‚’押ã•ã‚ŒãŸã¨ãã®å‡¦ç†ã€‚ */\n const onClick = () => {\n // クリックåç”»è¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€SCクリックを実行ã™ã‚‹ã€‚\n if (props.clickName) { scClick(props.clickName) }\n }\n\n return (\n <Link href={props.url} target=\"_blank\" className={classes.link}>\n <YellowButton\n size=\"large\"\n variant=\"contained\"\n className={classes.button}\n endIcon={<ArrowForwardIosIcon/>}\n onClick={onClick}\n style={{ backgroundColor: props.backgroundColor }}\n >\n {props.label}\n </YellowButton>\n </Link>\n)\n}\n\nexport default ButtonToLink;\n","import React from 'react';\n\nimport { createStyles, makeStyles, Typography, Grid } from '@material-ui/core';\n\nexport interface Props {\n /** 「タクシーã€ãªã©ç©ºæ¸¯é€è¿Žã‚µãƒ¼ãƒ“スã®ç¨®åˆ¥ã®å称部分ã®æ–‡å—列ã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n name: string | React.ReactNode,\n /** ä¾¡æ ¼è¨å®šéƒ¨åˆ†ã®æ–‡å—列ã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n pricing: string | React.ReactNode,\n /** ä¾¡æ ¼è¨å®šéƒ¨åˆ†2行目ã®æ–‡å—列ã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ */\n priceNotice?: string | React.ReactNode,\n /** ä¾¡æ ¼è¨å®šéƒ¨åˆ†3行目ã®æ–‡å—列ã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ */\n priceNoticeSecond?: string | React.ReactNode,\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n gridItemLeft: {\n backgroundColor: \"#FBE4D4\",\n border: \"1px solid #0f0f0f\",\n borderRight: \"0px\",\n padding: 5,\n },\n gridItemRight: {\n border: \"1px solid #0f0f0f\",\n padding: 5,\n },\n typeText: {\n color: \"#0f0f0f\",\n fontSize: \"14px\"\n },\n priceNotice: {\n fontSize: \"12px\"\n },\n typeArea: {\n marginBottom: \"10px\"\n }\n }),\n);\n\n/** 空港é€è¿Žã‚µãƒ¼ãƒ“スã®ç¨®åˆ¥ãƒ»æ–™é‡‘è¨å®šã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst Type: React.FC<Props> = (props: Props) => {\n const classes = useStyles({});\n return (\n <Grid container className={classes.typeArea}>\n {/* 種別å称ã®åˆ—。 */}\n <Grid item xs={4} sm={3} className={classes.gridItemLeft} container direction=\"column\" justify=\"center\">\n <Grid item>\n <Typography className={classes.typeText}>{props.name}</Typography>\n </Grid>\n </Grid> \n {/* ä¾¡æ ¼è¨å®šã®åˆ—。 */}\n <Grid item xs={8} sm={9} className={classes.gridItemRight}>\n <Typography color=\"error\">{props.pricing}</Typography>\n { props.priceNotice &&\n <Typography color=\"error\" className={classes.priceNotice}>{props.priceNotice}</Typography>\n }\n { props.priceNoticeSecond &&\n <Typography color=\"error\" className={classes.priceNotice}>{props.priceNoticeSecond}</Typography>\n }\n </Grid>\n </Grid>\n )\n}\n\nexport default Type;\n","import * as React from 'react';\nimport ServiceDetail, { SearviceDetailButton } from '../../../common/PopupDialog/ServiceDetail';\nimport BasicImage from '../../../ad/Banners/images/MkTaxi/popup/mktaxi_service.jpg';\nimport BarrierFreeImage from '../../../ad/Banners/images/MkTaxi/popup/BarrierFreeImage.png'\nimport MkTaxiLogo from '../../../ad/Banners/images/MkTaxi/mktaxi_logo.png';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Type from '../../../common/PopupDialog/Type';\nimport { createStyles, Grid, Link, makeStyles, Typography } from '@material-ui/core';\nimport { TaxiPrice } from '../../../../services/mktaxi/data/PriceList';\nimport { useState } from 'react';\nimport { isKeyDownEnter, TabIndexList } from '../../../../utils/tabIndexList';\nimport DateTime from '../../../../utils/dateTime';\n\ninterface Props {\n price?: TaxiPrice,\n url: string,\n /** 羽田oræˆç”°ç™ºç€ã‹ */\n isTYO: boolean,\n /** ANAマイレージクラブã«ãƒã‚°ã‚¤ãƒ³ã—ã¦äºˆç´„ã«é€²ã‚€éš›ã®URL */\n anaMileageClubURL: string,\n /** ãƒãƒªã‚¢ãƒ•ãƒªãƒ¼ç”¨ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã‹ */\n isShowBarrierFreeImage?: boolean\n}\n\ninterface ImageProps {\n maxWidth: string,\n width: string,\n height?: string,\n maxHeight?: string,\n src: string\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n mileAreaStyle: {\n width: '100%',\n marginTop: \"5px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n mileAreaBottomStyle: {\n width: '100%',\n marginTop: \"40px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n linkStyle: {\n fontWeight: 'bold',\n textDecoration: 'underline'\n }\n }),\n);\n\nconst MkTaxiService: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n interface MileProps {\n /** 羽田oræˆç”°ç™ºç€ã‹ */\n isTYO: boolean\n }\n\n const [displayCoupon, setDisplayCoupon] = React.useState<React.ReactNode[]> ([]);\n\n /** 種別・料金è¨å®šã®éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const TitleType: React.FC<Props> = (props: Props) => {\n if (props.price) {\n const priceTitle = props.price.isLabelMeter? 'メータータクシー': '空港定é¡ã‚¿ã‚¯ã‚·ãƒ¼';\n return (\n <Type\n name={priceTitle}\n pricing={`ç´„${props.price.pay.toLocaleString()}円〜`}\n priceNotice=\"※詳細ãªæ–™é‡‘㯠MKタクシーã®ã‚µã‚¤ãƒˆã«ã¦ã”確èªãã ã•ã„。\"\n priceNoticeSecond=\"※é…車対象外ã®å ´åˆã‚‚ã”ã–ã„ã¾ã™\"\n />\n )\n }\n return null;\n };\n\n /** クーãƒãƒ³éƒ¨åˆ†ï¼ˆã¾ãŸã¯ãŠå¾—ãªæƒ…å ±éƒ¨åˆ†ï¼‰ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const Coupon: React.FC<Props> = (props: Props) => {\n return (\n <>\n <Typography component=\"p\" style={{ color: \"#ff0000\", fontWeight: 'bold' }} data-cy={\"mktaxi-coupon-area\"}>\n 車種「指定ãªã—ã€ã‚’é¸æŠžã•ã‚ŒãŸæ–¹ã«<br/>\n 無料アップグレード実施ä¸ï¼<br/>\n <span style={{ fontSize: '0.8rem' }}> ※予約ã®æ··é›‘状æ³ã«ã‚ˆã£ã¦ã¯ã‚¢ãƒƒãƒ—グレード車両ã§ã®ã”案内ãŒã§ãã‹ãã‚‹å ´åˆã‚‚ã”ã–ã„ã¾ã™ã®ã§äºˆã‚ã”了承ãã ã•ã„。</span>\n </Typography>\n </>\n )\n }\n\n const Description: React.FC = () => {\n return (\n <Typography color=\"primary\" variant=\"subtitle2\" component=\"p\" style={{ marginBottom: \"5px\", padding: \"0px 5px\" }}>\n ・自宅ã€ã”希望地⇔空港ã¾ã§ç›´è¡Œã®ãƒªãƒ¼ã‚ºãƒŠãƒ–ルã§å®‰å¿ƒãªå®šé¡æ–™é‡‘を全国8空港ã§å±•é–‹ï¼ <br/>\n ・é…延ã«ã‚ˆã‚‹å¾…機料金ã€æ¬ 航ã«ã‚ˆã‚‹ã‚ャンセル料金ã¯ç™ºç”Ÿã„ãŸã—ã¾ã›ã‚“。<br/>\n ・豊富ãªè»Šç¨®ã‚’人数やè·ç‰©ã®é‡ã«ã‚ˆã£ã¦ãŠé¸ã³ã„ãŸã ã‘ã¾ã™ã€‚\n </Typography>\n );\n }\n\n /** 注æ„äº‹é …éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®Props。 */\n interface NotesProps {\n /** æˆç”°ãƒ»ç¾½ç”°ç™ºç€ï¼ˆæ±äº¬MK)ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isTYO: boolean,\n }\n /** 注æ„äº‹é …éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const Notes: React.FC<NotesProps> = (props: NotesProps) => {\n return (\n <Typography color=\"primary\" variant=\"subtitle2\" component=\"p\" style={{ marginBottom: \"5px\", padding: \"0px 5px\" }}>\n ・MKタクシーã®ã‚¦ã‚§ãƒ–サイト上ã§ã®äºˆç´„ã¨ãªã‚Šã¾ã™ã€‚<br/>\n { props.isTYO &&\n <span style={{ color: \"red\"}}>\n ・羽田ãŠã‚ˆã³æˆç”°ç©ºæ¸¯ã‚’ã”利用ã®å ´åˆã€ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã®å—付ã¯ã€ ã”利用日時ã®24時間å‰ã¾ã§ã¨ãªã‚Šã¾ã™ã€‚<br/>\n </span>\n }\n ・ãŠæ”¯æ‰•ã¯ç¾åœ°è»Šå†…ã«ã¦ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚<br/>\n ・ã”連絡ã®ãªã„ã‚ャンセルã¯100ï¼…ã®ã‚ャンセル料ãŒç™ºç”Ÿã„ãŸã—ã¾ã™ã€‚<br/>\n ・定é¡å¯¾è±¡åœ°åŸŸã¯é™ã‚‰ã‚Œã€å¯¾è±¡åœ°åŸŸä»¥å¤–ã¯ãƒ¡ãƒ¼ã‚¿ãƒ¼æ–™é‡‘ã¨ãªã‚Šã¾ã™ã€‚<br/>\n 金é¡è©³ç´°ã«ã¤ã„ã¦ã¯MKタクシーサイトã«ã¦ã”確èªãã ã•ã„。<br/>\n ・高速é“è·¯ãªã©ã®æœ‰æ–™é“路通行料/空港ãŠè¿Žãˆã”利用時ã®é§è»Šä»£/深夜早æœæ™‚間帯(22:00~翌5:00)<br/>\n 割増é‹è³ƒ(2割増)ãªã©å®šé¡æ–™é‡‘ã‹ã‚‰åˆ¥é€”料金ãŒç™ºç”Ÿã™ã‚‹å ´åˆã‚‚ã”ã–ã„ã¾ã™ã€‚<br/>\n {/* æ±äº¬MK(羽田・æˆç”°ç™ºç€ï¼‰ã®å ´åˆã®ã¿è¡¨ç¤ºã™ã‚‹æ³¨æ„äº‹é …ã€‚ */}\n { props.isTYO &&\n <>\n ・別途ã€æ™‚間指定料金や車種指定料金ãŒã‹ã‹ã‚‹å ´åˆãŒã”ã–ã„ã¾ã™ã€‚<br/>\n 金é¡è©³ç´°ã«ã¤ã„ã¦ã¯MKタクシーサイトã«ã¦ã”確èªãã ã•ã„。<br/>\n </>\n }\n ・フライトã®å¤‰æ›´ã¯è‡ªå‹•çš„ã«å¼•ã継ãŒã‚Œã¾ã›ã‚“ã®ã§ã€ã”自身ã§ç›´æŽ¥MKタクシーã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。<br/>\n ・万ãŒä¸€ã€äº¤é€šæ¸‹æ»žç‰ã§ãƒ•ãƒ©ã‚¤ãƒˆå‡ºç™ºæ™‚刻ã«é–“ã«åˆã‚ãªã„å ´åˆã‚‚ã€èˆªç©ºåˆ¸äºˆç´„ã®ä¿è¨¼ã¯ã„ãŸã—ã‹ãã¾ã™ã€‚\n </Typography>\n );\n }\n\n const NoticeMileUp: React.FC<MileProps> = (props: MileProps) => {\n return (\n <Grid container className={classes.mileAreaStyle} style={{ color: '#002596' }}>\n <Grid item style={{ fontWeight: 'bold'}}>\n ANAマイレージクラブã«ãƒã‚°ã‚¤ãƒ³ã—ã¦é€²ã‚“ã§ã„ãŸã ãã¨ãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚Šã¾ã™ï¼<br/>\n </Grid>\n { props.isTYO &&\n <Grid item style={{ fontWeight: 'bold'}}>\n ã¾ãŸã€æ±äº¬MKã®ã¿ã€ä¹—車時ã«æ–™é‡‘ã‚’ANAカードã§ãŠæ”¯æ‰•ã„ã„ãŸã ãã¨ã€ã•ã‚‰ã«ãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚Šã¾ã™ï¼\n </Grid>\n }\n </Grid>\n )\n }\n\n const NoticeMileDown: React.FC<MileProps> = (props: MileProps) => {\n const mileContactURL = \"https://www.ana.co.jp/ja/jp/site-help/share/contact/mileage_top.htm\";\n const tokyoMKTaxiURL = \"https://www.ana.co.jp/ja/jp/amc/reference/tameru/airport-access/tokyomk.html\";\n const [hyde, setHyde] = useState(true);\n const onClick = () => { setHyde(!hyde); }\n return (\n <Grid container className={classes.mileAreaBottomStyle} data-cy=\"mxtaxi-notice-area\" style={{ color: '#002596' }}>\n <Grid item xs={12} style={{ fontWeight: 'bold', textAlign: 'center' }}>\n マイルã«é–¢ã™ã‚‹ã”注æ„(必ãšã”確èªãã ã•ã„)<br/>\n </Grid>\n {!hyde &&\n <>\n <Grid item xs={12}>\n ・本ページを経由ã—ã¦ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã‚’ã”入力後ã€MKタクシーウェブサイトã«ã¦äºˆç´„・乗車・支払ã„完了ã•ã‚ŒãŸå ´åˆã«ã€ã€Œ200円(税込)ã«ã¤ã1マイルã€ã‚’ç©ç®—ã„ãŸã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯ã€ã”利用ã«ãªã‚‰ã‚Œã¦ã‚‚マイルã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。\n </Grid>\n { props.isTYO &&\n <Grid item xs={12}>\n ・æ±äº¬MKã®ã¿ã€ANAカードã§ã®ãŠæ”¯æ‰•ã„ã«ãŠã„ã¦ã€ã€Œ100円(税込)ã«ã¤ã1マイルã€ãŒåˆ¥é€”ç©ç®—ã•ã‚Œã¾ã™ã€‚\n </Grid>\n }\n <Grid item xs={12}>\n ・マイルã¯ã”利用後約1~2カ月後ã«ãŠå®¢æ§˜ã®ãƒžã‚¤ãƒ«å£åº§ã«ç©ç®—ã•ã‚Œã¾ã™ã€‚\n </Grid>\n { props.isTYO &&\n <Grid item xs={12}>\n ANAカードã§ã®ãŠæ”¯æ‰•ã„ã«ã‚ˆã‚‹ãƒžã‚¤ãƒ«ç©ç®—ã¨ã¯ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒç•°ãªã‚Šã¾ã™ã€‚\n </Grid>\n }\n <Grid item xs={12}>\n ・ã”予約æˆç«‹å¾Œã«äºˆç´„ã‚’ã‚ャンセルã•ã‚ŒãŸå ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。ã¾ãŸã€å¤‰æ›´ãƒ»å–り消ã—手数料ã¯ãƒžã‚¤ãƒ«ç©ç®—ã®å¯¾è±¡å¤–ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・ã”入力ã„ãŸã ã„ãŸANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã¨ã”å義人ãŒç•°ãªã‚‹å ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。<br/>\n ・ã”予約完了後ã®ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã®è¨‚æ£ã€äº‹å¾Œç™»éŒ²ã¯ãŠå—ã‘ã§ãã¾ã›ã‚“ã®ã§ã€ãŠç”³ã—è¾¼ã¿ã®éš›ã¯ã”注æ„ãã ã•ã„。<br/>\n ・ANAマイレージクラブã«é–¢ã™ã‚‹ãŠå•ã„åˆã‚ã›ã¯<Link href={mileContactURL} target=\"_blank\" className={classes.linkStyle}>ã“ã¡ã‚‰</Link>ã‹ã‚‰ã€‚\n { props.isTYO &&\n <><br/>・ANAカードマイルプラスã®è©³ç´°ã«ã¤ã„ã¦ã¯<Link href={tokyoMKTaxiURL} target=\"_blank\" className={classes.linkStyle}>ã“ã¡ã‚‰</Link>ã‹ã‚‰ã€‚</>\n }\n </Grid>\n </>\n }\n <Grid item style={{ width: '100%', textAlign: 'center' }}>\n {hyde?\n <ExpandMoreIcon\n onClick={onClick}\n tabIndex={TabIndexList.MK_TAXI_MILE_NOTILE}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n onClick();\n })\n }\n }\n data-cy=\"mktaxi-expand-more-button\"\n />:\n <ExpandLessIcon\n onClick={onClick}\n tabIndex={TabIndexList.MK_TAXI_MILE_NOTILE}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n onClick();\n })\n }\n }\n />\n }\n </Grid>\n </Grid>\n )\n }\n\n const button: SearviceDetailButton[] = [\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ã¦äºˆç´„ã«é€²ã‚€\"],\n url: props.anaMileageClubURL,\n scClickName: \"ana-maas_mk_book\",\n backgroundColor: '#FDB509'\n },\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ãªã„ã§äºˆç´„ã«é€²ã‚€\"],\n url: props.url,\n scClickName: \"ana-maas_mk_book\",\n backgroundColor: '#FECF60'\n }\n ];\n\n const SetImage: React.FC<ImageProps> = (props: ImageProps) => {\n return (\n <div style={{ height: props.height, maxHeight: props.maxHeight }}>\n <img src={props.src} alt=\"サービス概è¦\" style={{ maxWidth: props.maxWidth, width: props.width }}/>\n </div>\n );\n }\n\n /** 表示ã™ã‚‹ã‚¯ãƒ¼ãƒãƒ³ã‚’組ã¿ç«‹ã¦ã‚‹ */\n React.useEffect(() => {\n /** 通常ã®ã‚¯ãƒ¼ãƒãƒ³ã‚’表示ã™ã‚‹ */\n const tmpCoupon = [<Coupon {...props}/>];\n setDisplayCoupon(tmpCoupon);\n }, []);\n\n return <ServiceDetail\n coupon={displayCoupon}\n description={<Description/>}\n button={button}\n image={\n <SetImage\n src={props.isShowBarrierFreeImage? BarrierFreeImage: BasicImage}\n maxWidth=\"519px\"\n width=\"100%\"\n height=\"65vw\"\n maxHeight=\"350px\"\n />\n }\n logo={\n <SetImage\n src={MkTaxiLogo}\n maxWidth=\"468px\"\n width=\"100%\"\n />\n }\n notes={<Notes isTYO={props.isTYO}/>}\n type={<TitleType {...props}/>}\n isMileArea={true}\n noticeMileUp={\n <NoticeMileUp\n isTYO={props.isTYO}\n />\n }\n noticeMileDown={\n <NoticeMileDown\n isTYO={props.isTYO}\n />\n }\n />\n};\n\nexport default MkTaxiService;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { createStyles, makeStyles, Theme, Button, Dialog, Slide, Grid, Box } from '@material-ui/core';\nimport { TransitionProps } from '@material-ui/core/transitions';\n\nimport scClick from '../ScClick';\nimport ModalHeader from '../ModalHeader';\nimport { isKeyDownEnter } from '../../../utils/tabIndexList';\n\nexport interface Props {\n /** Dialog部分ã®ã‚¿ã‚¤ãƒˆãƒ«ã€‚ */\n title: string | React.ReactNode,\n titleLabel?: string,\n /** Dialogã‚’é–‹ããŸã‚ã®ãƒœã‚¿ãƒ³ãªã©ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n openComponent?: React.ReactNode,\n /** Dialog内ã§è¡¨ç¤ºã™ã‚‹ã‚µãƒ¼ãƒ“ス紹介部分ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®é…列。 */\n services: React.ReactNode | Array<React.ReactNode>,\n /** Adobe Analyticsã§ã®ã‚¯ãƒªãƒƒã‚¯æ•°ã®é›†è¨ˆç”¨ã®å称。(ä»»æ„) */\n clickName?: string,\n /** タイトル部分ãŒç”»åƒã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n isImageTitle?: boolean,\n /** カスタム閉ã˜ã‚‹ãƒœã‚¿ãƒ³ */\n customClosedButton?: React.ReactNode,\n /** é–‰ã˜ã‚‹ãƒœã‚¿ãƒ³ã®ä¸Šã«è¡¨ç¤ºã•ã‚Œã‚‹ã‚«ã‚¹ã‚¿ãƒ ボタン */\n customButton?: React.ReactNode,\n /** ボタンエリアãŒä¸å¤®æƒãˆã‹ */\n isButtonAreaCenter?: boolean,\n /** モーダルã®é–‹é–‰ãƒ•ãƒ©ã‚°ã‚’引数ã«ã‚ˆã‚Šåˆ¶å¾¡ã•ã›ã‚‹ */\n isOpen?: boolean,\n /** モーダルã®é–‹é–‰ãƒ•ãƒ©ã‚°ã‚’引数ã«ã‚ˆã‚Šåˆ¶å¾¡ã•ã›ã‚‹ */\n isSetOpen?: React.Dispatch<React.SetStateAction<boolean>>,\n /** tabIndex */\n tabIndex?: number,\n /** 表示ã™ã‚‹é–‹é–‰ãƒœã‚¿ãƒ³ãŒãƒãƒŠãƒ¼ã‹ã‚’判定ã™ã‚‹ */\n isBanner: boolean\n /** 表示ã™ã‚‹é–‹é–‰ãƒœã‚¿ãƒ³ã‚’最大表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹ */\n isInline?: boolean\n /** Dialog内ã®ãƒœã‚¿ãƒ³ã®ä¸‹ã«è¡¨ç¤ºã™ã‚‹ã‚µãƒ¼ãƒ“ス紹介部分ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®é…列。 */\n bottomServices?: React.ReactNode | Array<React.ReactNode>\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: theme.palette.background.paper,\n border: '2px solid #000',\n boxShadow: theme.shadows[5],\n padding: theme.spacing(2, 4, 3),\n },\n center: {\n textAlign: 'center',\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n textAlign: 'center',\n width: '80px',\n marginTop: '16px'\n },\n closeButton: {\n backgroundColor: '#808080'\n },\n customButtonArea: {\n marginBottom: '20px'\n },\n banner: {\n maxWidth: '640px',\n marginRight: 'auto',\n marginLeft: 'auto'\n },\n inline:{\n maxWidth: '640px',\n marginRight: 'auto',\n marginLeft: 'auto',\n display:\"inline\"\n }\n }),\n);\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\n/** ãƒãƒƒãƒ—アップ(SmartRydeãªã©ã®é€£æºã§åˆ©ç”¨ã™ã‚‹ï¼‰éƒ¨åˆ†ã®Dialog部分ã®ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst PopupDialog: React.FC<Props> = (props: Props) => {\n const classes = useStyles({});\n const { t } = useTranslation();\n /** Dialog部分ã®é–‹é–‰ã‚’管ç†ã™ã‚‹ãƒ•ãƒ©ã‚°ã¨ãã®é–¢æ•°ã€‚ */\n // åˆæœŸå€¤ã¯false(閉ã˜ãŸçŠ¶æ…‹ï¼‰ã¨ã™ã‚‹ã€‚\n let [isOpen, setIsOpen] = useState(false);\n /** モーダルã®é–‹é–‰ãƒ•ãƒ©ã‚°åˆ¶å¾¡ã‚’Components外ã§è¡Œã£ã¦ã„ã‚‹å ´åˆã«ã¯å¼•æ•°ã§ç½®ãæ›ãˆã‚‹ */\n if(props.isOpen !== undefined && props.isSetOpen !== undefined) {\n [isOpen, setIsOpen] = [props.isOpen, props.isSetOpen];\n }\n\n /** é–‰ã˜ã‚‹ãªã©ã®ãƒœã‚¿ãƒ³ã¯ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®ä¸å¤®æƒãˆã‹ã€å·¦æƒãˆã‹ */\n const isButtonAreaCenter: boolean = props.isButtonAreaCenter || false;\n\n /** é–‹ãボタンを押ã—ãŸã¨ãã®å‡¦ç†ã€‚ */\n const onOpen = () => {\n // 開閉フラグをfalse(Dialogã‚’é–‰ã˜ãŸçŠ¶æ…‹ï¼‰ã«ã™ã‚‹ã€‚\n setIsOpen(true);\n // クリックåãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€SCクリックを実行ã™ã‚‹ã€‚\n if (props.clickName) { scClick(props.clickName); }\n }\n\n /** é–‰ã˜ã‚‹ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¨ãã®å‡¦ç†ã€‚ */\n const onClose = () => {\n // 開閉フラグをfalse(Dialogã‚’é–‰ã˜ãŸçŠ¶æ…‹ï¼‰ã«ã™ã‚‹ã€‚\n setIsOpen(false);\n }\n\n /** 標準ã§ç”¨æ„ã•ã‚Œã¦ã„ã‚‹é–‰ã˜ã‚‹ãƒœã‚¿ãƒ³ */\n const DefaultClosedButton: React.FC = () => {\n return (\n <Button variant=\"contained\" color=\"primary\" className={classes.button} onClick={onClose}>\n {t('close')}\n </Button>\n )\n }\n\n interface SectionProps {\n /** Dialog内ã§è¡¨ç¤ºã™ã‚‹ã‚µãƒ¼ãƒ“ス紹介部分ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€ã¾ãŸã¯ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®é…列。 */\n services: React.ReactNode | Array<React.ReactNode>,\n }\n\n const SetSection: React.FC<SectionProps> = (props: SectionProps) => {\n /* 表示ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒ2件以上ã§ç”»é¢å¹…600px以上ã®å ´åˆã¯2列ã§è¡¨ç¤ºã™ã‚‹ã€‚ */\n if(props.services instanceof Array) {\n return (\n <div>\n {props.services.map((s, index) => {\n return <Grid key={index} item xs={12} sm={6}>{s}</Grid>\n })};\n </div>\n )\n }\n /* 表示ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒ1件ã®å ´åˆï¼ˆé…列ã§ã¯ãªã„å ´åˆï¼‰ã¯å¸¸ã«1列ã§è¡¨ç¤ºã™ã‚‹ã€‚ */\n return <Grid item>{props.services}</Grid>\n }\n\n let className = ''\n if(props.isInline && props.isBanner){\n className = classes.inline\n }else if(props.isBanner){\n className = classes.banner\n }\n\n return (\n <>\n {/* Dialogã‚’é–‹ã部分ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */}\n {props.openComponent &&\n <div\n onClick={onOpen}\n onKeyDown={props.isSetOpen? undefined: (e)=>{\n isKeyDownEnter(e, onOpen);\n }}\n className={className}\n >\n {props.openComponent}\n </div>\n }\n {/* 以é™ãŒå®Ÿéš›ã®Dialogã®éƒ¨åˆ†ã€‚ */}\n <Dialog fullScreen open={isOpen} onClose={onClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={onClose}\n title={props.title}\n titleLabel={props.titleLabel}\n />\n <Box style={{ padding: 10 }}>\n <Grid container spacing={1}>\n {/* 表示ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒ2件以上ã§ç”»é¢å¹…600px以上ã®å ´åˆã¯2列ã§è¡¨ç¤ºã™ã‚‹ã€‚ */}\n {\n (props.services instanceof Array) && props.services.map((s, index) => {\n return <Grid key={index} item xs={12} sm={6}>{s}</Grid>\n })\n }\n {/* 表示ã™ã‚‹ã‚µãƒ¼ãƒ“スãŒ1件ã®å ´åˆï¼ˆé…列ã§ã¯ãªã„å ´åˆï¼‰ã¯å¸¸ã«1列ã§è¡¨ç¤ºã™ã‚‹ã€‚ */}\n {\n !(props.services instanceof Array) &&\n <Grid item xs={12}>{props.services}</Grid>\n }\n </Grid>\n <Grid container className={(isButtonAreaCenter && classes.center) || ''}>\n {/** カスタムボタンãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã¯è¡¨ç¤ºã™ã‚‹ */}\n <Grid item xs={12} className={classes.customButtonArea}>\n {props.customButton &&\n <div>\n {props.customButton}\n </div>\n }\n </Grid>\n {/** é–‰ã˜ã‚‹ãƒœã‚¿ãƒ³ã‚’表示ã™ã‚‹ */}\n <Grid item xs={12} onClick={onClose}>\n {props.customClosedButton &&\n <>\n {props.customClosedButton}\n </>\n }\n {!props.customClosedButton &&\n <DefaultClosedButton/>\n }\n </Grid>\n </Grid>\n {props.bottomServices &&\n <Grid container spacing={1}>\n <SetSection\n services={props.bottomServices}\n />\n </Grid>\n }\n </Box>\n </Dialog>\n </>\n )\n}\n\nexport default PopupDialog;\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { createStyles, makeStyles, Theme, Grid, Link } from '@material-ui/core';\n\nimport TopImage from '../../Banners/images/nearMe/popup/service4.png';\nimport NearmeLog from '../../Banners/images/nearMe/logo_black.png';\nimport Type from '../../../common/PopupDialog/Type';\nimport { useTranslation } from 'react-i18next';\nimport ServiceDetail, { SearviceDetailButton } from '../../../common/PopupDialog/ServiceDetail';\nimport { useState } from 'react';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { State } from '../../../../reducers';\nimport DateTime from '../../../../utils/dateTime';\n\nexport interface NearMePopUpProps {\n /** 出発案内ã‹å¦ã‹ */\n isDeparture: boolean,\n /** 出発・到ç€ç©ºæ¸¯å */\n targetAirport?: string,\n /** NearMeã®åˆ©ç”¨æ–™é‡‘ */\n fare?: number,\n /** éžãƒã‚°ã‚¤ãƒ³URL */\n noLoginURL: string,\n /** ãƒã‚°ã‚¤ãƒ³URL */\n loginURL: string,\n /** Adobe Analyticsã§ã®ãƒãƒŠãƒ¼ã‚¯ãƒªãƒƒã‚¯æ•°é›†è¨ˆç”¨ã®å‡¦ç†ã®é–¢æ•°ã€‚ */\n scClick: string,\n /** 料金ã«ä»˜å±žã™ã‚‹æ–‡è¨€ */\n addFeeLabel: string\n}\n\nexport const useStylesNearMeBody = makeStyles((theme: Theme) =>\n createStyles({\n topImage: {\n width: '100%',\n maxWidth: '640px'\n },\n logoImage: {\n width: '50vw',\n maxWidth: '320px',\n marginBottom: '1vw'\n },\n textBody: {\n fontSize: '13px',\n [theme.breakpoints.up('sm')]: {\n fontSize: '18px',\n }\n },\n ul1st: {\n paddingLeft: '20px'\n },\n ul2nd: {\n paddingLeft: '0px',\n listStyleType: 'none'\n },\n ulNotice: {\n paddingLeft: '12px'\n },\n reservationArea: {\n color: '#FF0000',\n fontSize: '12px',\n backgroundColor: '#fff2cc',\n paddingTop: '10px',\n paddingBottom: '10px',\n marginTop: '10px',\n marginBottom: '10px',\n [theme.breakpoints.up('sm')]: {\n fontSize: '16px'\n }\n },\n triipleMileCampaignArea: {\n color: '#FF0000',\n fontSize: '12px',\n backgroundColor: '#fff2cc',\n paddingTop: '10px',\n paddingBottom: '10px',\n marginTop: '10px',\n marginBottom: '10px',\n [theme.breakpoints.up('sm')]: {\n fontSize: '16px'\n }\n },\n textLine: {\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '5px'\n },\n reservationNotice: {\n fontSize: '12px',\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '5px',\n [theme.breakpoints.up('sm')]: {\n fontSize: '16px',\n }\n },\n reservationButton: {\n fontSize: '11px',\n paddingLeft: '4px',\n paddingRight: '4px',\n paddingTop: '10px',\n paddingBottom: '10px',\n marginRight: '4px',\n width: '100%',\n backgroundColor: '#FDB50A',\n color: '#000000',\n textTransform: 'none',\n [theme.breakpoints.up('sm')]: {\n fontSize: '16px',\n paddingBottom: '15px'\n }\n },\n reservationButtonPTag: {\n marginTop: '0px',\n marginBottom: '0px',\n },\n reservationTitle: {\n fontSize: '18px',\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '5px',\n fontWeight: 'bold'\n },\n noticeArea: {\n fontSize: '12px',\n [theme.breakpoints.up('sm')]: {\n fontSize: '16px',\n },\n marginTop: '10px',\n },\n noticePTag: {\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '2px'\n },\n noticePTagRed: {\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '2px',\n color: 'red'\n },\n noticePTagBold: {\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '2px',\n fontWeight: 'bold'\n },\n reservationButtonLine: {\n marginTop: '0px',\n marginBottom: '0px',\n fontSize: '1rem',\n fontWeight: 'bold'\n },\n bigFont: {\n fontSize: '14px',\n color: '#0000ff',\n fontWeight: 'bold',\n [theme.breakpoints.up('sm')]: {\n fontSize: '20px',\n }\n },\n redBold: {\n color: '#ff0000',\n fontWeight: 'bold'\n },\n arrowForwardIosIcon: {\n fontSize: '1rem',\n verticalAlign: 'middle',\n marginTop: '0.3rem'\n },\n linkStyle: {\n fontWeight: 'bold',\n textDecoration: 'underline'\n },\n mileAreaStyle: {\n width: '100%',\n marginTop: \"5px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n mileAreaBottomStyle: {\n width: '100%',\n marginTop: \"40px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n typeArea: {\n height: '50px',\n marginBottom: '10px'\n },\n bonusMileCampaign: {\n border: 'solid red',\n marginTop: '16px'\n },\n bold: {\n fontWeight: 'bold'\n }\n }),\n);\n\nconst NearMeServiceBody: React.FC<NearMePopUpProps> = (props: NearMePopUpProps) => {\n const { t } = useTranslation();\n const classes = useStylesNearMeBody({});\n const priceLabel = props.fare? `${props.addFeeLabel} ${props.fare.toLocaleString()}円/人〜`: '';\n const tripleMileCampaignURL = 'https://www.ana.co.jp/ja/jp/amc/reference/tameru/airport-access/nearmesmartshuttle.html';\n\n /** ボタンã«ã‚»ãƒƒãƒˆã™ã‚‹SCクリック値 */\n const setSCClick = props.scClick || 'ana-maas_nearme_book';\n interface NearMeLinkProps {\n href: string\n }\n\n const NearMeLink: React.FC<NearMeLinkProps> = (props: NearMeLinkProps) => {\n return (\n <Link\n href={props.href}\n target=\"_blank\"\n className={classes.linkStyle}\n >\n ã“ã¡ã‚‰\n </Link>\n )\n }\n\n /** 薄黄色背景ã®ãƒˆãƒªãƒ—ルマイルã‚ャンペーン概è¦è¡¨ç¤ºæ¬„ */\n const TripleMileCampaignArea: React.FC = () => {\n return (\n <Grid container className={classes.triipleMileCampaignArea}>\n <Grid item xs={12}>\n <p className={classes.reservationTitle}>ã‚ã‚ã›ã¦ãƒ€ãƒ–ルマイルï¼</p>\n <p className={classes.reservationNotice}>\n 「空港アクセスナビ(本画é¢ï¼‰ã€ã‚’経由ã—ã€nearMe.Airportサービスをã”予約・ã”乗車ã„ãŸã ãã¨ã€é€šå¸¸ã€ã”利用金é¡200円(税込)ã«ã¤ã1マイルã®ã¨ã“ã‚ã€1マイルプラスã®ã€200円(税込)ã«ã¤ãåˆè¨ˆ2マイル貯ã¾ã‚Šã¾ã™ã€‚\n </p>\n <p className={classes.reservationNotice}>\n *nearMe.Airportウェブサイトã«ã¦ANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã‚’ã”入力ã„ãŸã ãå¿…è¦ãŒã”ã–ã„ã¾ã™ã€‚\n </p>\n <p className={classes.reservationNotice}>\n *本画é¢çµŒç”±ã§è²¯ã¾ã‚‹ãƒžã‚¤ãƒ«ã¯æ±ºæ¸ˆå®Œäº†ã‹ã‚‰ç´„1~2ã‹æœˆå¾Œã®ç©ç®—ã¨ãªã‚Šã€é€šå¸¸ã®ç©ç®—ã¨ã¯ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒç•°ãªã‚Šã¾ã™ã®ã§ã”注æ„ãã ã•ã„。\n </p>\n <p className={classes.reservationNotice}>\n <NearMeLink href={tripleMileCampaignURL} />ã‚‚ä½µã›ã¦ã”確èªãã ã•ã„。\n </p>\n </Grid>\n </Grid>\n )\n }\n\n /** NearMe全体ã«é–¢ã™ã‚‹æ³¨æ„äº‹é …ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ */\n const Description: React.FC = () => {\n return (\n <>\n <Grid item xs={12} className={classes.textBody}>\n <ul className={classes.ul1st}>\n {(props.targetAirport !== undefined && props.fare !== undefined) &&\n <li>空港定é¡ï¼š{props.targetAirport}便ã¯ç‰‡é“ {priceLabel}</li>\n }\n <li>オンライン事å‰æ±ºæ¸ˆã€å®Œå…¨äºˆç´„制(å‰æ—¥15時ã¾ã§ï¼‰</li>\n <li>\n 新型コãƒãƒŠå¯¾ç–ã¨ã—ã¦ä»¥ä¸‹å®Ÿæ–½\n <ul className={classes.ul2nd}>\n <li>{'> '}少人数制(最大9人乗り車両ã§6åã¾ã§ï¼‰</li>\n <li>{'> '}車内æ›æ°—ã€ä¹—車後ã®æ¸…掃ã¨ã‚¢ãƒ«ã‚³ãƒ¼ãƒ«æ¶ˆæ¯’</li>\n <li>{'> '}全乗務員ã®é‹è¡Œå‰æ¤œæ¸©ã¨ãƒžã‚¹ã‚¯ã®ç€ç”¨</li>\n <li>{'> '}利用客ã¸ã®ãƒžã‚¹ã‚¯ç€ç”¨ã®ä¾é ¼</li>\n </ul>\n </li>\n </ul>\n </Grid>\n <Grid item xs={12} className={classes.textBody}>\n <TripleMileCampaignArea/>\n </Grid>\n <Grid item xs={12} className={classes.textBody}>\n ※å‚åŠ ç™»éŒ²ã®ãŸã‚ã€ä¸€åº¦ãƒã‚°ã‚¤ãƒ³ç”»é¢ã«ã¦ãƒã‚°ã‚¤ãƒ³ã‚’ã„ãŸã ãã¾ã™ãŒã€ãƒžã‚¤ãƒ«ç©ç®—ã«ã¯ãŠæ‰‹æ•°ã§ã™ãŒ<span className={classes.redBold}>nearMe.Airportページã«ã¦å†åº¦ANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã‚’ã”入力ã„ãŸã ãå¿…è¦ãŒã”ã–ã„ã¾ã™ã€‚</span>\n </Grid>\n </>\n )\n }\n\n /** NearMe全体ã®æ³¨æ„äº‹é … */\n const Notes: React.FC = () => {\n return (\n <Grid item xs={12} className={classes.textBody}>\n <p className={classes.textLine}>(ï¼ï¼‰ã”注æ„</p>\n <ul className={classes.ulNotice}>\n <li>\n <p className={classes.noticePTagBold}>é…車対象エリアãŒé™ã‚‰ã‚Œã¾ã™ã®ã§ã€è©³ç´°ã¯nearMe.Airportウェブサイトã«ã¦ã”確èªãã ã•ã„。</p>\n </li>\n <li>\n <p className={classes.noticePTagBold}>nearMe.Airportウェブサイト上ã§ã®äºˆç´„・購入ã¨ãªã‚Šã¾ã™ã€‚</p>\n <p className={classes.noticePTag}>ã”æ乗便ã®å¤‰æ›´ç‰ã¯è‡ªå‹•ã§å¼•ã継ãŒã‚Œã¾ã›ã‚“ã®ã§ã”注æ„ãã ã•ã„。</p>\n </li>\n <li>\n <p className={classes.noticePTagRed}>\n 予約リクエストãŒå®Œäº†ã—ã¦ã‚‚予約ãŒç¢ºå®šã—ãŸã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。nearMeã‹ã‚‰ã®ã€Œç¢ºå®šãƒ¡ãƒ¼ãƒ«ã€ã‚’ã‚‚ã£ã¦äºˆç´„ã®ç¢ºå®šã¨ã—ã¦ã„ã¾ã™ã€‚ã‚らã‹ã˜ã‚ã”了承ãã ã•ã„。\n </p>\n </li>\n <li>\n <p className={classes.noticePTag}>フライトé…å»¶ãƒ»æ¬ èˆªã«ã‚ˆã‚‹ã‚ャンセルã®å ´åˆã¯è«‹æ±‚ã•ã‚Œã¾ã›ã‚“。</p>\n <p className={classes.noticePTag}>(ã”自身ã«ã¦NearMeã«ç›´æŽ¥ãŠå•ã„åˆã‚ã›ã„ãŸã ãå¿…è¦ãŒã‚ã‚Šã¾ã™ï¼‰</p>\n </li>\n <li>\n <p className={classes.noticePTag}> åŒä¹—ã®ãŠå®¢æ§˜ã‚‚ã„らã£ã—ゃるãŸã‚ã€äºˆç´„時間ã¨ãªã‚Šã¾ã—ãŸã‚‰ç™ºè»Šã„ãŸã—ã¾ã™ã®ã§ã”了承ãã ã•ã„。(フライトé…延時å«ã‚€ï¼‰</p>\n </li>\n <li>\n <p className={classes.noticePTag}>万ãŒä¸€ã€äº¤é€šæ¸‹æ»žç‰ã§ãƒ•ãƒ©ã‚¤ãƒˆå‡ºç™ºæ™‚刻ã«é–“ã«åˆã‚ãªã„å ´åˆã‚‚ã€èˆªç©ºåˆ¸äºˆç´„ã®ä¿è¨¼ã¯ã„ãŸã—ã‹ãã¾ã™ã€‚</p>\n </li>\n <li>\n <p className={classes.noticePTag}>ã”乗車ã®å‰æ—¥15時ãŒäºˆç´„å—ä»˜ç· åˆ‡ã¨ãªã‚Šã¾ã™ã€‚</p>\n </li>\n </ul>\n </Grid>\n )\n }\n\n /** マイルã«é–¢ã™ã‚‹æ³¨æ„äº‹é …ã€‚ï¼ˆä¸‹æ®µï¼‰ */\n const MileDownArea: React.FC = () => {\n const mileContactURL = \"https://www.ana.co.jp/ja/jp/site-help/share/contact/mileage_top.html\";\n const [hyde, setHyde] = useState(true);\n\n return (\n <Grid container className={classes.mileAreaBottomStyle}>\n <Grid item xs={12} style={{ fontWeight: 'bold', textAlign: 'center' }}>\n マイルã«é–¢ã™ã‚‹ã”注æ„(必ãšã”確èªãã ã•ã„)<br/>\n </Grid>\n {!hyde &&\n <Grid item xs={12} className={classes.noticeArea}>\n ・本ページを経由ã—ã¦nearMe.Airportウェブサイトã«ã¦äºˆç´„・乗車・支払ã„完了ã€ã‹ã¤ã€ãƒ•ãƒ©ã‚¤ãƒˆç•ªå·æ¬„ã«ANAã®ä¾¿åã‚‚ã—ãã¯AIRDOã®ä¾¿åã€ã¾ãŸãƒžã‚¤ãƒ¬ãƒ¼ã‚¸ç•ªå·æ¬„ã«ANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã‚’ã”入力ã•ã‚ŒãŸå ´åˆã«ã€é€šå¸¸ã”利用金é¡200円(税込)ã«ã¤ã1マイルã®ã¨ã“ã‚ã€1マイルプラスã®ã€200円(税込)ã«ã¤ãåˆè¨ˆ2マイルをç©ç®—ã„ãŸã—ã¾ã™ã€‚<br/>\n ・å‚åŠ ç™»éŒ²ã®ãŸã‚一度ãƒã‚°ã‚¤ãƒ³ç”»é¢ã«ã¦ãƒã‚°ã‚¤ãƒ³ã‚’ã„ãŸã ãã¾ã™ãŒã€ãƒžã‚¤ãƒ«ç©ç®—ã«ã¯ãŠæ‰‹æ•°ã§ã™ãŒnearMe.Airportウェブサイトã«ã¦å†åº¦ANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã‚’ã”入力ã„ãŸã ãå¿…è¦ãŒã”ã–ã„ã¾ã™ã€‚<br/>\n ・本画é¢ã‹ã‚‰ã®ã‚ャンペーンマイル(200円(税込)ã«ã¤ã1マイル分)ã¯æ±ºæ¸ˆå®Œäº†ã‹ã‚‰ç´„1~2ã‹æœˆå¾Œã®ç©ç®—ã¨ãªã‚Šã€é€šå¸¸ã®ç©ç®—ã¨ã¯ã‚¿ã‚¤ãƒŸãƒ³ã‚°ãŒç•°ãªã‚Šã¾ã™ã®ã§ã”注æ„ãã ã•ã„。<br/>\n ・ã”予約æˆç«‹å¾Œã«äºˆç´„ã‚’ã‚ャンセルã•ã‚ŒãŸå ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。ã¾ãŸã€å¤‰æ›´ãƒ»å–り消ã—手数料ã¯ãƒžã‚¤ãƒ«ç©ç®—ã®å¯¾è±¡å¤–ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・ã”入力ã„ãŸã ã„ãŸANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã¨ã”å義人ãŒç•°ãªã‚‹å ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。<br/>\n ・ã”予約完了後ã®ANAマイレージクラブãŠå®¢æ§˜ç•ªå·ï¼ˆ10æ¡ï¼‰ã®è¨‚æ£ã€äº‹å¾Œç™»éŒ²ã¯ãŠå—ã‘ã§ãã¾ã›ã‚“ã®ã§ã€ãŠç”³ã—è¾¼ã¿ã®éš›ã¯ã”注æ„ãã ã•ã„。<br/>\n ・ANAマイレージクラブã«é–¢ã™ã‚‹ãŠå•ã„åˆã‚ã›ã¯<Link href={mileContactURL} target=\"_blank\" className={classes.linkStyle}>ã“ã¡ã‚‰</Link>ã‹ã‚‰ã€‚<br/>\n </Grid>\n }\n <Grid item style={{ width: '100%', textAlign: 'center' }}>\n {hyde?\n <ExpandMoreIcon onClick={ () => { setHyde(!hyde); } } />:\n <ExpandLessIcon onClick={ () => { setHyde(!hyde); } } />\n }\n </Grid>\n </Grid>\n )\n }\n\n const button: SearviceDetailButton[] = [\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ã¦äºˆç´„ã«é€²ã‚€\"],\n url: props.loginURL,\n scClickName: setSCClick,\n backgroundColor: '#FDB509'\n },\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ãªã„ã§äºˆç´„ã«é€²ã‚€\"],\n url: props.noLoginURL,\n scClickName: setSCClick,\n backgroundColor: '#FECF60'\n }\n ];\n\n return <ServiceDetail\n description={<Description/>}\n image={<img src={TopImage} className={classes.topImage} alt='NearMeトップ画åƒ' />}\n logo={<img src={NearmeLog} className={classes.logoImage} alt='NearMeãƒã‚´ç”»åƒ' />}\n notes={<Notes/>}\n type={\n <div className={classes.typeArea}>\n <Type\n name={t('rideshare_service')}\n pricing={priceLabel}\n />\n </div>\n }\n button={button}\n noticeMileDown={<MileDownArea/>}\n />\n\n}\n\nexport default NearMeServiceBody;\n","import { Lang } from \"../../../../states/query\";\nimport FlightInfo from \"../../../../services/ana/models/flightInfo\";\nimport { differenceInCalendarDays } from \"date-fns\";\nimport Place from \"../../../../services/google/Place\";\nimport Airlines, { AirlineList } from \"../../../../utils/Airlines\";\nimport targetLocalityList from \"./data/TargetLocality.json\";\nimport airportParamsList from \"./data/airportParams.json\";\nimport TargetPrefecture from \"./data/TargetPrefecture.json\";\nimport FareTable from \"./data/Fare.json\";\n\nconst TargetLocalityList: { [key in NearMeAirport]: string[] } = targetLocalityList;\n\nexport enum NearMeAirport {\n /** æˆç”°ç©ºæ¸¯ */\n NRT = 'NRT',\n /** 羽田空港 */\n HND = 'HND',\n /** 那覇空港 */\n OKA = 'OKA',\n /** ç¦å²¡ç©ºæ¸¯ */\n FUK = 'FUK',\n /** 伊丹空港 */\n ITM = 'ITM',\n /** 関西国際空港 */\n KIX = 'KIX',\n /** æ–°åƒæ³ç©ºæ¸¯ */\n CTS = 'CTS',\n /** ä¸éƒ¨å›½éš›ç©ºæ¸¯ */\n NGO = 'NGO',\n /** é’森空港 */\n AOJ = 'AOJ',\n /** 徳島空港 */\n TKS = 'TKS',\n /** 北ä¹å·žç©ºæ¸¯ */\n KKJ = 'KKJ'\n}\n\nexport type Direction = 'from' | 'to';\n\ninterface NearMeParams {\n direction: string,\n airport: string,\n year: string,\n month: string,\n day: string,\n hour: string,\n minute: string,\n flight: string,\n utm_source: string;\n utm_medium: string;\n utm_campaign: string;\n [key: string]: string\n}\n\nexport default class NearMeLogic {\n /** 空港è¨å®š */\n airport: NearMeAirport;\n /** ベースURL */\n baseURL: string;\n /** 言語è¨å®š */\n lang: Lang;\n /** 出発・目的地 */\n address: string;\n /** 空港ã‹ã‚‰/空港ã¾ã§ */\n direction: Direction;\n /** 希望空港出発/到ç€æ™‚刻 */\n hopeAirportDate: {\n date: Date | null,\n year: string,\n month: string,\n day: string,\n hour: string,\n minute: string\n };\n /** æ乗便ã®ãƒ•ãƒ©ã‚¤ãƒˆãƒŠãƒ³ãƒãƒ¼ */\n flightNumber: string;\n /** ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ± */\n terminal: number | null;\n\n // 英語版ãŒå¾©æ´»ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€è‹±èªžç”¨URLを残ã—ã¦ãŠã\n static baseURLList = {\n ja: \"https://app.nearme.jp/airport-shuttle/\",\n en: \"https://app.nearme.jp/en_us/airport-shuttle/\"\n }\n\n static mileLogingHostList = {\n test: \"https://stg.test.cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp\",\n prod: \"https://cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp\"\n };\n\n static utm_source = 'online';\n static utm_medium = 'web';\n static utm_campaign = 'ana2020';\n\n /**\n * 料金をå–å¾—ã™ã‚‹\n * @param airport 対象空港\n * @returns NearMe乗車料金\n */\n static getStaticFare(airport: NearMeAirport) {\n return FareTable[airport];\n }\n\n /**\n * ãƒã‚°ã‚¤ãƒ³çŠ¶æ…‹ã®é·ç§»URLã‚’å–å¾—ã™ã‚‹\n * @param isTest テスト環境ã«é·ç§»ã•ã›ã‚‹ã‹\n * @returns ãƒã‚°ã‚¤ãƒ³çŠ¶æ…‹ã®é·ç§»URL\n */\n static getLoginURL(isTest: boolean, noLoginURL: string) {\n const params = {\n domid: \"se_lp\",\n seUrl: noLoginURL,\n companyid: \"nearme\"\n }\n const host = isTest? NearMeLogic.mileLogingHostList.test: NearMeLogic.mileLogingHostList.prod;\n return `${host}?${new URLSearchParams(params).toString()}`;\n }\n\n /**\n * 固定ページã«ãŠã‘ã‚‹éžãƒã‚°ã‚¤ãƒ³URLã‚’å–å¾—ã™ã‚‹\n */\n static getStandPageNoLoginURL() {\n const params = {\n direction: 'to',\n airport: 'haneda',\n utm_source: this.utm_source,\n utm_medium: this.utm_medium,\n utm_campaign: 'anatravel',\n };\n const allParams = new URLSearchParams(params);\n return `${NearMeLogic.baseURLList.ja}?${allParams.toString()}`;\n }\n\n // 目的・出発地ã®ç©ºæ¸¯ã‚’割り出ã™\n static getAirportFromFlightinfo(flight: FlightInfo, isDepartureGuide: boolean) {\n const airport = isDepartureGuide? flight.depAirportCode: flight.arrAirportCode;\n switch(airport){\n case 'HND':\n case 'TYO':\n return NearMeAirport.HND;\n case 'NRT':\n return NearMeAirport.NRT;\n case 'OKA':\n return NearMeAirport.OKA;\n case 'FUK':\n return NearMeAirport.FUK;\n case 'ITM':\n return NearMeAirport.ITM;\n case 'KIX':\n return NearMeAirport.KIX;\n case 'SPK':\n case 'CTS':\n return NearMeAirport.CTS;\n case 'NGO':\n return NearMeAirport.NGO;\n case 'AOJ':\n return NearMeAirport.AOJ;\n case 'TKS':\n return NearMeAirport.TKS;\n case 'KKJ':\n return NearMeAirport.KKJ;\n default:\n return null;\n }\n }\n /**\n * NearMeã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判別ã™ã‚‹é–¢æ•°\n * @param flightStatus 検索用ã«å–å¾—ã—ãŸADç”¨ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param isDepartureGuide 出発案内ã‹\n * @param date 検索ã§æŒ‡å®šã—ãŸæ—¥ä»˜\n * @param place ユーザãŒæŒ‡å®šã—ãŸåœ°ç‚¹æƒ…å ±\n */\n static isDisplayNearMe(flightStatus: FlightInfo, isDepartureGuide: boolean, date: Date, place: Place | null, lang: Lang) {\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™ã“ã¨ï¼ˆ2020/11/30ç¾åœ¨ï¼‰\n // 1.発ç€ç©ºæ¸¯ãŒæˆç”°ãƒ»ç¾½ç”°ãƒ»é‚£è¦‡ãƒ»ç¦å²¡ãƒ»å¤§é˜ª\n // 2.出発・目的地ãŒæŒ‡å®šã™ã‚‹åŒºå†…\n // 3.検索日ãŒæä¹—æ—¥ã®å‰ã€…æ—¥ã¾ã§\n // 7. 検索画é¢:クエリ or ANA APIよりé‹è¡Œæƒ…å ±ãŒå–å¾—ã§ãã¦ã„ã‚‹\n // SearchAdよりã€æŒ‡å®šã—ãŸæ—¥ä»˜ã§æ¤œç´¢ã§ããªã„å ´åˆã«ã¯ flightStatus ã«åˆæœŸå€¤ãŒæ¸¡ã•ã‚Œã‚‹ãŸã‚\n // 別途æ¡ä»¶ã‚’指定ã—ãªãã¦ã‚‚ 1. ã®æ¡ä»¶ã§å¼¾ã‹ã‚Œã‚‹\n // 8. æ乗便ãŒæ¬ 航ã—ã¦ã„ãªã„(検索画é¢ï¼‰\n // 9. 日本語版ã®å ´åˆ\n\n // 1.発ç€ç©ºæ¸¯ãŒæˆç”°ãƒ»ç¾½ç”°ãƒ»é‚£è¦‡ãƒ»ç¦å²¡ãƒ»å¤§é˜ª\n const targetAirport = NearMeLogic.getAirportFromFlightinfo(flightStatus, isDepartureGuide);\n if(!targetAirport || place === null) {\n return false;\n }\n // 2.出発・目的地ãŒæŒ‡å®šã™ã‚‹åŒºå†…\n if(!this.isDisplayArea(place, targetAirport)) {\n return false;\n }\n\n // 3.検索日ãŒæä¹—æ—¥ã®å‰æ—¥ã®15時ã¾ã§\n // NearMeを使ã†ã®ã¯åˆ°ç€æ¡ˆå†…ãªã‚‰åˆ°ç€æ—¥ã€å‡ºç™ºæ¡ˆå†…ãªã‚‰å‡ºç™ºæ—¥ã¨ãªã‚‹ã®ã§æ¤œç´¢ã§æŒ‡å®šã—ãŸæ—¥ä»˜ã‚’ãã®ã¾ã¾ä½¿ãˆã‚‹\n const now = new Date();\n const diffDays = differenceInCalendarDays(date, now);\n if(diffDays < 1) {\n return false;\n }\n else if(diffDays === 1) {\n // å‰æ—¥15時以é™ãªã‚‰é€£æºãƒªãƒ³ã‚¯ã‚’表示ã—ãªã„\n if(now.getHours() >= 15) {\n return false;\n }\n }\n\n // 8. æ乗便ãŒæ¬ 航ã—ã¦ã„ãªã„(検索画é¢ï¼‰\n if(flightStatus.isCanceled()) {\n return false;\n }\n\n // 9. 日本語版ã®å ´åˆ\n if(lang !== Lang.ja) {\n return false;\n }\n\n return true;\n }\n /**\n * 市区町æ‘ã®æ–‡å—列を入れã€å¯¾è±¡å†…ã‹ã‚’判定ã™ã‚‹åˆ¤å®š\n * @params locality 市区町æ‘ã®æ–‡å—列\n * @params area 目的地ã¨ãªã‚‹ç©ºæ¸¯ãŒã‚るエリア\n */\n static isDisplayArea(place: Place, airportCode: NearMeAirport) {\n const locality = place.city;\n const targetList = TargetLocalityList[airportCode];\n const prefectureList: string[] = TargetPrefecture[airportCode];\n // 沖縄ã®å ´åˆã€é¦–里駅ã§æ¤œç´¢ã—ãŸéš›ã«ã€Œå³¶å°»éƒ¡é‚£è¦‡å¸‚ã€ã¨ãªã‚‹ãŸã‚部分一致ã«ã¦æ¤œç´¢ã‚’ã‹ã‘ã‚‹\n return targetList.find((name)=>{ return locality.indexOf(name) !== -1 }) && prefectureList.includes(place.prefecture);\n }\n\n /**\n * NearMe連æºã®ãƒã‚¸ãƒƒã‚¯å‘¨ã‚Šã‚’処ç†ã™ã‚‹\n * @param airport é€è¿Žå¯¾è±¡ã®ç©ºæ¸¯ï¼ˆç¾½ç”°ãƒ»æˆç”°ãƒ»é‚£è¦‡ãƒ»ç¦å²¡ãƒ»ä¼Šä¸¹ãƒ»é–¢ç©ºï¼‰\n * @param lang 表示ã™ã‚‹è¨€èªž\n * @param isDepartureGuide 空港ã¾ã§ã®æ¤œç´¢ã‹\n * @param address 出発・目的地点å\n * @param hopeAirportDate 希望ã™ã‚‹ç©ºæ¸¯åˆ°ç€æ™‚間(出発案内ã®ã¿ï¼‰\n * @param userSetDate ユーザーãŒæ¤œç´¢æ¬„ã«å…¥åŠ›ã—ãŸæ—¥ä»˜\n * @param flightInfo æä¹—ä¾¿æƒ…å ±\n * @param isAirdo AIRDOモードã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n */\n constructor(airport: NearMeAirport, isDepartureGuide: boolean, address: string, hopeAirportDate: (Date | null), flightInfo: FlightInfo, targetAirline: AirlineList) {\n const flightDate = flightInfo.getFlightTimeDate(isDepartureGuide);\n\n this.baseURL = NearMeLogic.baseURLList.ja;\n // 空港ã‹ã‚‰ã®å ´åˆ\n if (isDepartureGuide) {\n this.direction = 'to';\n } else {\n this.direction = 'from';\n }\n this.address = address;\n this.airport = airport;\n // 英語版è¨å®šãŒå¾©æ´»ã—ãŸã‚‰å¼•æ•°ã‚’ã‚‚ãŸã›ã¦å‡¦ç†ã™ã‚‹\n this.lang = Lang.ja;\n this.hopeAirportDate = {\n date: hopeAirportDate || flightDate,\n year: (hopeAirportDate? hopeAirportDate: flightDate).getFullYear().toString(),\n month: ((hopeAirportDate? hopeAirportDate: flightDate).getMonth()+1).toString(),\n day: (hopeAirportDate? hopeAirportDate: flightDate).getDate().toString(),\n hour: hopeAirportDate? hopeAirportDate.getHours().toString(): '',\n minute: hopeAirportDate? hopeAirportDate.getMinutes().toString(): ''\n };\n /** 航空会社コード。 */\n const airlineCode = Airlines.getAirlineThreeLetterCode(targetAirline);\n this.flightNumber = airlineCode + flightInfo.flightNumber;\n // 羽田空港ã®å ´åˆã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«å称ã«å¿œã˜ã¦ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åを決定\n if(this.airport === NearMeAirport.HND) {\n const HNDterminal = flightInfo.getHNDTerminal(isDepartureGuide);\n // ターミナル未確定ã®å ´åˆã«ã¯ä»®ã§nullã¨ã—ã¦ã„ã‚‹\n if(typeof HNDterminal === \"string\" && HNDterminal === \"2_3\") {\n this.terminal = null;\n } else {\n this.terminal = HNDterminal;\n }\n }\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’指定ã™ã‚‹\n else if(this.airport === NearMeAirport.NRT) {\n this.terminal = 1;\n }\n else {\n this.terminal = null;\n }\n }\n /** éžãƒã‚°ã‚¤ãƒ³çŠ¶æ…‹ã®é·ç§»URLã‚’å–å¾—ã™ã‚‹ */\n getNoLoginURL() {\n const allParams = new URLSearchParams(this.getParams());\n return `${this.baseURL}?${allParams.toString()}`;\n }\n\n /** リンクã«å¿…è¦ãªãƒ‘ラメータを返㙠*/\n getParams(): NearMeParams {\n let params: NearMeParams = {\n direction: this.direction,\n airport: airportParamsList[this.airport],\n year: this.hopeAirportDate.year,\n month: this.hopeAirportDate.month,\n day: this.hopeAirportDate.day,\n hour: this.hopeAirportDate.hour,\n minute: this.hopeAirportDate.minute,\n flight: this.flightNumber,\n utm_source: NearMeLogic.utm_source,\n utm_medium: NearMeLogic.utm_medium,\n utm_campaign: NearMeLogic.utm_campaign\n };\n if(this.terminal) {\n params.terminal = this.terminal.toString()\n }\n return params;\n }\n\n /** ヘッダー部分ã®æ–‡è¨€ã‚’返㙠*/\n getHeaderMessage(targetKu: string, airportName: string, lang: Lang, t: any){\n if(lang === Lang.ja) {\n return this.direction === 'from' ? `${airportName}ã‹ã‚‰${targetKu}ã¾ã§`: `${targetKu}ã‹ã‚‰${airportName}ã¾ã§`;\n } else {\n return this.direction === 'from' ? `From ${airportName} To ${t(targetKu)}`: `From ${t(targetKu)} To ${airportName}`;\n }\n }\n\n /** 料金を返㙠*/\n getFare() {\n return FareTable[this.airport];\n }\n}\n","import * as React from 'react';\nimport { Button, createMuiTheme, makeStyles, ThemeProvider, Typography, useMediaQuery, Theme, Grid } from '@material-ui/core';\nimport scClick from '../../common/ScClick';\n\ninterface Props {\n /** Cypressã§è˜åˆ¥ã™ã‚‹ãŸã‚ã®å称。 */\n cyName: string,\n /** ボタンã®ãƒ©ãƒ™ãƒ«ã®è¡Œæ•° */\n labels: (string | React.ReactNode)[],\n /** ボタンã®èƒŒæ™¯è‰²ã€‚ */\n backgroundColor?: string,\n /** ボタンã®æ–‡å—色。 */\n color?: string,\n /** ボタンã®è¦‹ãŸç›®ã®ç¨®åˆ¥ã€‚ */\n variant?: 'text' | 'outlined' | 'contained' | undefined,\n /** ボタンã®ç¨®åˆ¥ã€‚ */\n type?: 'submit' | 'reset' | 'button',\n /** ボタンã®é«˜ã•ã€‚ */\n minHeight?: string,\n /** SCクリック(計測)ã§åˆ©ç”¨ã™ã‚‹å称。 */\n clickName?: string,\n /** ボタンã®å·¦ç«¯ã«è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¤ã‚³ãƒ³ */\n startIcon?: React.ReactNode,\n /** ボタンã®å³ç«¯ã«è¡¨ç¤ºã™ã‚‹ã‚¢ã‚¤ã‚³ãƒ³ */\n endIcon?: React.ReactNode\n}\n\n/** ã“ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆç”¨ã«ä¸Šæ›¸ãã—ãŸMaterial UIã®ãƒ†ãƒ¼ãƒžã€‚ */\nconst theme = createMuiTheme({\n overrides: {\n MuiButton: {\n root: {\n borderRadius: '2px',\n minHeight: '54px',\n },\n contained: {\n padding: '6px 8px',\n },\n outlined: {\n padding: '6px 8px',\n },\n iconSizeMedium: {\n \"& > *:first-child\": {\n fontSize: '0.6rem',\n }\n }\n }\n }\n});\n\n/** デフォルトã®ãƒœã‚¿ãƒ³ã®èƒŒæ™¯è‰²ï¼ˆã‚ªãƒ¬ãƒ³ã‚¸è‰²ï¼‰ã®ã‚«ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã€‚ */\nconst defaultBackgroundColor = '#eb7309';\n\nconst useStylesWithProps = makeStyles({\n root: (props: Props) => ({\n // propsã§èƒŒæ™¯è‰²ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãã®è‰²ã‚’ã€æœªæŒ‡å®šã®å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚ªãƒ¬ãƒ³ã‚¸è‰²ã‚’è¨å®šã™ã‚‹ã€‚\n background: props.backgroundColor ? props.backgroundColor: defaultBackgroundColor,\n // propsã§æ–‡å—色ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãã®è‰²ã‚’ã€æœªæŒ‡å®šã®å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ç™½è‰²ã‚’è¨å®šã™ã‚‹ã€‚\n color: props.color ? props.color : '#FFFFFF',\n marginTop: '10px',\n textTransform: 'none',\n width: '100%',\n minHeight: props.minHeight ? props.minHeight : '54px',\n '&:hover': {\n // propsã§èƒŒæ™¯è‰²ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ãã®è‰²ã‚’ã€æœªæŒ‡å®šã®å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚ªãƒ¬ãƒ³ã‚¸è‰²ã‚’è¨å®šã™ã‚‹ã€‚\n backgroundColor: props.backgroundColor ? props.backgroundColor: defaultBackgroundColor,\n }\n }),\n label: {\n fontSize: '0.875rem',\n fontWeight: 'bold',\n }\n});\n\n/** 区間(Section)ã§è¡¨ç¤ºã™ã‚‹ãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst ButtonOfSection: React.FC<Props> = (props: Props) => {\n const classes = useStylesWithProps(props);\n /** ボタンã®ç¨®åˆ¥ã€‚ */\n const type = props.type ? props.type : 'button';\n /** ボタンã®è¦‹ãŸç›®ã®ç¨®åˆ¥ã€‚ */\n const variant = props.variant ? props.variant : 'contained';\n /** ボタンã®å¢ƒç•Œç·šã®ã‚«ãƒ©ãƒ¼ã‚³ãƒ¼ãƒ‰ã€‚ */\n const borderColor = (props.variant === 'outlined' && props.color) ? props.color: undefined;\n\n /** ボタンをクリックã—ãŸæ™‚ã®å‡¦ç†ã€‚ */\n const onClick = () => {\n // クリックåãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿ã€SCクリックを実行ã™ã‚‹ã€‚\n if (props.clickName) { scClick(props.clickName); }\n }\n\n return (\n <ThemeProvider theme={theme}>\n <Button\n type={type}\n variant={variant}\n onClick={onClick}\n className={classes.root}\n data-cy={props.cyName}\n endIcon={props.endIcon}\n style={{ borderColor }}\n startIcon={props.startIcon}\n >\n { props.labels.length <= 1 &&\n // ボタンã®ãƒ©ãƒ™ãƒ«ãŒ1è¡Œã§ã‚ã‚‹å ´åˆã€‚\n <Typography className={classes.label}>{props.labels[0]}</Typography>\n }\n { props.labels.length > 1 &&\n // ボタンã®ãƒ©ãƒ™ãƒ«ãŒ2行以上ã§ã‚ã‚‹å ´åˆã€‚\n <div>\n { props.labels.map((label, id)=>{\n return (\n <Typography key={id} className={classes.label}>{label}</Typography>\n )\n })}\n </div>\n }\n </Button>\n </ThemeProvider>\n )\n};\n\nexport default ButtonOfSection;\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { State } from '../../../../reducers';\nimport { Slide, Theme, makeStyles, createStyles, Button, Dialog, List, ListItem } from '@material-ui/core';\nimport NearMeServiceBody from './NearMeServiceBody';\nimport { useTranslation } from 'react-i18next';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport NearMeLogic, { NearMeAirport } from './NearMeLogic';\nimport scClick from '../../../common/ScClick';\nimport { useLocation } from 'react-router-dom';\nimport ModalHeader from '../../../common/ModalHeader';\nimport { getNearMeAddFeeLabel } from './NearMeModalButton';\n\ninterface Props {\n openDialog: boolean,\n onClose: VoidFunction,\n}\n\nconst Transition = React.forwardRef<unknown, TransitionProps>(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n button: {\n boxShadow: '0 2px 2px 0 rgba(0,0,0,0.30)',\n borderRadius: '2px',\n }\n }),\n);\n\n/** NearMeã®ãƒãƒŠãƒ¼ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst NearMeDialog: React.FC<Props> = (props: Props) => {\n const lang = useSelector((state: State) => state.condition.query.lang);\n const { t } = useTranslation();\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n /** ç¾åœ¨ã®ãƒ‘ス。 */\n const location = useLocation();\n const pathName = location.pathname;\n const classes = useStyles({});\n\n // 使用ã™ã‚‹ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const flightStatusForSeachAd = useSelector((state: State) => state.condition.flightStatusForSeachAd);\n // TODO: Path Classを使ã£ã¦æ›¸ãç›´ã™\n const isSearch = pathName === '/' || pathName === '/search';\n const useFlightStatus = isSearch? flightStatusForSeachAd: flightStatus;\n // 使用ã™ã‚‹ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±ãŒä½¿ç”¨ã§ãã‚‹ã‹\n const isUseTodayFlightInfo: boolean = (useFlightStatus.eta.getTime() === 0 || useFlightStatus.etd.getTime() === 0);\n // 地点å\n const point = useSelector((state: State) => state.condition.point);\n // 使用ã™ã‚‹åŒºå\n const cityName = useSelector((state: State) => state.condition.cityName);\n // 空港到ç€æ™‚é–“\n const arrivalTimeToAirport = useSelector((state: State) => state.condition.arrivalTimeToAirport);\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = useSelector((state: State) => state.condition.targetAirLine);\n // 空港到ç€ãƒ»å‡ºç™ºæ™‚刻\n let hopeAirportDate = (isDepartureGuide && !isUseTodayFlightInfo)? useFlightStatus.getSearchTime(isDepartureGuide, arrivalTimeToAirport): null;\n // NearMeAirportåž‹ã§å®šç¾©ã•ã‚Œã‚‹ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n const airportCode: NearMeAirport | null = NearMeLogic.getAirportFromFlightinfo(useFlightStatus, isDepartureGuide);\n\n if(!airportCode) {\n return null;\n }\n\n // 表示ã§å‡ºã¦ãる空港ã®å称\n const airportName: string = t(airportCode);\n\n const nearMeLogic = new NearMeLogic(\n airportCode,\n isDepartureGuide,\n point,\n hopeAirportDate,\n useFlightStatus,\n targetAirline\n );\n\n /** ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ */\n const handleClose = () => {\n props.onClose();\n };\n\n const scClickValue = 'ana-maas_nearme_book';\n\n const noLoginURL = nearMeLogic.getNoLoginURL();\n const loginURL = NearMeLogic.getLoginURL(false, noLoginURL);\n\n return (\n <Dialog fullScreen open={props.openDialog} onClose={handleClose} TransitionComponent={Transition} scroll='body'>\n <ModalHeader\n handleClose={handleClose}\n title={nearMeLogic.getHeaderMessage(cityName, airportName, lang, t)}\n />\n <List>\n <ListItem>\n <NearMeServiceBody\n isDeparture={isDepartureGuide}\n targetAirport={airportName}\n fare={nearMeLogic.getFare()}\n noLoginURL={noLoginURL}\n loginURL={loginURL}\n scClick={scClickValue}\n addFeeLabel={getNearMeAddFeeLabel(airportCode)}\n />\n </ListItem>\n <ListItem>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.button}\n onClick={handleClose}\n >\n {t('close')}\n </Button>\n </ListItem>\n </List>\n </Dialog>\n )\n};\n\nexport default NearMeDialog;\n","import { subDays, setHours, isAfter, isBefore, setMinutes } from \"date-fns\";\nimport { point, polygon } from \"@turf/helpers\";\nimport booleanPointInPolygon from \"@turf/boolean-point-in-polygon\";\n\nimport sagaSouthAreaPolygon from './data/saga_south_area.json';\n\n/** ä½è³€ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼ã«é–¢ã™ã‚‹å‡¦ç†ã®ã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class SagaAirportTaxi {\n\n /** 表示対象ã®å¸‚区町æ‘ã®å称。 */\n static readonly MUNICIPALITIES = [\n 'ä½è³€çœŒé³¥æ –市',\n 'ä½è³€çœŒå¤šä¹…市',\n 'ä½è³€çœŒæ¦é›„市',\n 'ä½è³€çœŒé¹¿å³¶å¸‚',\n 'ä½è³€çœŒå°åŸŽå¸‚',\n 'ä½è³€çœŒå¬‰é‡Žå¸‚',\n 'ä½è³€çœŒç¥žåŸ¼å¸‚',\n 'ä½è³€çœŒç¥žåŸ¼éƒ¡å‰é‡Žãƒ¶é‡Œç”º',\n 'ä½è³€çœŒä¸‰é¤ŠåŸºéƒ¡åŸºå±±ç”º',\n 'ä½è³€çœŒä¸‰é¤ŠåŸºéƒ¡ä¸Šå³°ç”º',\n 'ä½è³€çœŒä¸‰é¤ŠåŸºéƒ¡ã¿ã‚„ã町',\n 'ä½è³€çœŒè¥¿æ¾æµ¦éƒ¡æœ‰ç”°ç”º',\n 'ä½è³€çœŒæµå³¶éƒ¡å¤§ç”ºç”º',\n 'ä½è³€çœŒæµå³¶éƒ¡æ±ŸåŒ—町',\n 'ä½è³€çœŒæµå³¶éƒ¡ç™½çŸ³ç”º',\n 'ä½è³€çœŒè—¤æ´¥éƒ¡å¤ªè‰¯ç”º',\n 'ç¦å²¡çœŒä¹…留米市',\n 'ç¦å²¡çœŒå¤§ç‰Ÿç”°å¸‚',\n 'ç¦å²¡çœŒæŸ³å·å¸‚',\n 'ç¦å²¡çœŒå¤§å·å¸‚',\n 'ç¦å²¡çœŒç‘後市',\n 'ç¦å²¡çœŒã¿ã‚„ã¾å¸‚',\n 'ç¦å²¡çœŒä¸‰æ½´éƒ¡å¤§æœ¨ç”º',\n ];\n\n /**\n * ä½è³€ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼ã®ãƒªãƒ³ã‚¯ã‚’表示å¯èƒ½ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param flightDate æ乗便ã®ç™ºç€æ—¥æ™‚。\n * @param address 発ç€åœ°ã®å¸‚区町æ‘ã¾ã§ã®ä½æ‰€ã€‚(例.ä½è³€çœŒé³¥æ –市)\n * @param lat 発ç€åœ°ã®ç·¯åº¦ã€‚\n * @param lng 発ç€åœ°ã®çµŒåº¦ã€‚\n */\n static isDisplayable(flightDate: Date, address: string, lat: number | null, lng: number | null) {\n // 下記ã®3ã¤ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹ã€‚\n // 1. ç¾åœ¨æ—¥æ™‚ãŒè¡¨ç¤ºæœŸé™ï¼ˆ2021/04/01 0:00 JST)よりå‰ã§ã‚ã‚‹ã“ã¨ã€‚\n // 2. ç¾åœ¨æ—¥æ™‚ãŒäºˆç´„å¯èƒ½ãªæœŸé™ï¼ˆæ乗便ã®ç™ºç€æ—¥ã®å‰æ—¥15:00)より後ã§ã‚ã‚‹ã“ã¨ã€‚\n // 3. æ乗便ã®ç™ºç€æ—¥ãŒå¯¾è±¡æœŸé–“内(2021/08/01 ~ 2022/03/31ã¾ã§ï¼‰ã§ã‚ã‚‹ã“ã¨ã€‚\n // 4. 発ç€åœ°ã®ä½æ‰€ãŒå¯¾è±¡ã®å¸‚区町æ‘ã€ã¾ãŸã¯ä½è³€å¸‚å—エリア内ã®ç·¯åº¦çµŒåº¦ã§ã‚ã‚‹ã“ã¨ã€‚\n return this.isBeforeDeadline() &&\n this.isReservable(flightDate) &&\n this.isTargetPeriod(flightDate) &&\n (this.isTargetAddress(address) || this.isWithinSagaSouthArea(lat, lng));\n }\n\n /** ç¾åœ¨æ—¥æ™‚ãŒè¡¨ç¤ºæœŸé™ã‚ˆã‚Šå‰ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚ */\n static isBeforeDeadline() {\n /** 表示期é™ã€‚(2021/04/01 0:00 JST) */\n const deadline = 1648738800000;\n /** ç¾åœ¨æ—¥æ™‚ã®ã‚¿ã‚¤ãƒ スタンプ。 */\n const now = new Date().getTime();\n // ç¾åœ¨æ—¥æ™‚ãŒè¡¨ç¤ºæœŸé™ã‚ˆã‚Šå‰ï¼ˆ2021/04/01 0:00以å‰ï¼‰ã®å ´åˆã€trueã‚’è¿”ã™ã€‚\n return now < deadline;\n }\n\n /**\n * æ乗便ã®ç™ºç€æ—¥æ™‚ã‚’å…ƒã«äºˆç´„期é™ã‚’å–å¾—ã™ã‚‹é–¢æ•°ã€‚\n * @param flightDate æ乗便ã®ç™ºç€æ—¥æ™‚。\n */\n static getReservableDeadline(flightDate: Date) {\n /** æ乗便ã®ç™ºç€æ—¥ã®å‰æ—¥ã€‚(1æ—¥å‰ï¼‰ */\n const previousDay = subDays(flightDate, 1);\n /** æ乗便ã®ç™ºç€æ—¥ã®å‰æ—¥ã®æ—¥æ™‚ã®ã€Œæ™‚ã€ã‚’15時å°ã«è¨å®šã—ãŸå€¤ã€‚ */\n const modifiedHour = setHours(previousDay, 15);\n /** æ乗便ã®ç™ºç€æ—¥ã®å‰æ—¥ã®æ—¥æ™‚ã®ã€Œåˆ†ã€ã‚’0分ã«è¨å®šã—ãŸå€¤ã€‚ */\n const modifiedMinutes = setMinutes(modifiedHour, 0);\n // æ乗便ã®ç™ºç€æ—¥æ™‚ã®å‰æ—¥15:00ã®æ—¥æ™‚ã‚’è¿”ã™ã€‚\n return modifiedMinutes;\n }\n\n /**\n * ç¾åœ¨æ—¥æ™‚ãŒäºˆç´„å¯èƒ½ãªæ—¥æ™‚ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param flightDate æ乗便ã®ç™ºç€æ—¥æ™‚。\n */\n static isReservable(flightDate: Date) {\n /** 予約å¯èƒ½ã§ã‚る期é™ã€‚(æä¹—æ—¥ã®å‰æ—¥15:00ã¾ã§ï¼‰ */\n const deadline = this.getReservableDeadline(flightDate);\n /** ç¾åœ¨æ—¥æ™‚ã®ã‚¿ã‚¤ãƒ スタンプ。 */\n const now = new Date();\n // ç¾åœ¨æ—¥æ™‚ãŒäºˆç´„å¯èƒ½ãªæ—¥æ™‚以é™ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n return isBefore(now, deadline);\n }\n\n /**\n * æ乗便ã®ç™ºç€æ—¥æ™‚ãŒå¯¾è±¡æœŸé–“ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param flightDate æ乗便ã®ç™ºç€æ—¥æ™‚。\n */\n static isTargetPeriod(flightDate: Date) {\n /** 対象期間ã®é–‹å§‹æ—¥æ™‚。(2021/07/01 0:00) */\n const startDate = new Date(2021, 6, 31, 23, 59);\n /** 対象期間ã®çµ‚了日時。(2022/04/01 0:00) */\n const endDate = new Date(2022, 3, 1, 0, 0);\n // æ乗日時ãŒå¯¾è±¡æœŸé–“内(2021/08/01 ~ 2022/03/31ã¾ã§ï¼‰ã§ã‚ã‚‹ã“ã¨ã€‚\n return isAfter(flightDate, startDate) && isBefore(flightDate, endDate);\n }\n\n /**\n * 指定ã—ãŸç·¯åº¦çµŒåº¦ãŒä½è³€å¸‚å—エリア内ã§ã‚ã‚‹ã‹ã‚’判定ã™ã‚‹ã€‚\n * @param lat 緯度。\n * @param lng 経度。\n */\n static isWithinSagaSouthArea(lat: number | null, lng: number | null) {\n // 緯度経度ã®ã„ãšã‚Œã‹ãŒnullã¾ãŸã¯æ•°å€¤ã§ã¯ãªã„å ´åˆã¯falseã‚’è¿”ã™ã€‚\n if (lat === null || lng === null || isNaN(lat) || isNaN(lng)) {\n return false;\n }\n /** エリア内ã§ã‚ã‚‹ã‹åˆ¤å®šã—ãŸã„地点。 */\n const p = point([lng, lat]);\n /** ä½è³€å¸‚å—エリアã®ãƒãƒªã‚´ãƒ³ã€‚ */\n const southAreaPolygon = polygon(sagaSouthAreaPolygon.features[0].geometry.coordinates);\n // ä½è³€å¸‚å—エリアã®ãƒãƒªã‚´ãƒ³å†…ã«æŒ‡å®šã•ã‚ŒãŸåœ°ç‚¹ã®åº§æ¨™ãŒå«ã¾ã‚Œã‚‹ã‹åˆ¤å®šã—ãŸå€¤ã‚’è¿”ã™ã€‚\n return booleanPointInPolygon(p, southAreaPolygon);\n }\n\n /**\n * 発ç€åœ°ãŒè¡¨ç¤ºå¯¾è±¡ã®ä½æ‰€ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param adress 市区町æ‘ã¾ã§ã®ä½æ‰€ã®æ–‡å—列。(例.ä½è³€çœŒé³¥æ –市)\n */\n static isTargetAddress(adress: string) {\n return this.MUNICIPALITIES.some(m => adress.includes(m));\n }\n}\n","import React from 'react';\nimport { makeStyles, createStyles, Link } from '@material-ui/core';\nimport scClick from '../../../common/ScClick';\nimport { useSelector } from 'react-redux';\nimport { State } from '../../../../reducers';\nimport ButtonOfSection from '../../../result/sections/ButtonOfSection';\nimport { isEnglish } from '../../../../utils/lang';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n link: {\n textTransform: 'none',\n '&:hover': {\n textDecoration: 'none',\n }\n },\n textInlineBlock: {\n display: 'inline-block',\n },\n }),\n);\n\n/** ä½è³€ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼ã®ãƒœã‚¿ãƒ³ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\nconst ButtonSagaAirportTaxi: React.FC = () => {\n const classes = useStyles();\n /** 言語è¨å®šã€‚ */\n const lang = useSelector((state: State) => state.condition.query.lang);\n /** 英語版ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isEn = isEnglish(lang);\n /** リンク先URL。 */\n // 英語版ã®å ´åˆã¯è‹±èªžç‰ˆURLã‚’ã€ãれ以外(日本語版)ã®å ´åˆã¯æ—¥æœ¬èªžç‰ˆãƒšãƒ¼ã‚¸ã®URLã‚’è¨å®šã™ã‚‹ã€‚\n const url = isEn ?\n 'https://sagaap-limousinetaxi.com/?lang=en' :\n 'https://sagaap-limousinetaxi.com/?lang=jp';\n /** ボタン内ã§è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ™ãƒ«ã€‚ */\n const label = isEn ?\n // 英語版ã®ãƒ©ãƒ™ãƒ«ã€‚\n ['Airport Limousine Taxi', 'Flat rate Â¥1,500〜'] :\n // 日本語版ã®ãƒ©ãƒ™ãƒ«ã€‚\n // 改行ãŒç™ºç”Ÿã™ã‚‹å ´åˆã€Œãƒªãƒ ジンã€ãƒ»ã€Œã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã§åŒºåˆ‡ã‚‹ã‚ˆã†ã‚¹ã‚¿ã‚¤ãƒ«è¨å®šã—ãŸçŠ¶æ…‹ã§ãƒœã‚¿ãƒ³ä¸Šã«å±•é–‹ã™ã‚‹ã€‚\n [\n <>\n <span key={1} className={classes.textInlineBlock}>リムジン</span>\n <span key={2} className={classes.textInlineBlock}>タクシー予約</span>\n </>,\n <span key={3}>å®šé¡ 1,500円〜</span>\n ];\n /** リンクボタンをクリックã—ãŸã¨ãã®å‡¦ç†ã€‚ */\n const onClick = () => {\n // SCクリックを実行ã™ã‚‹ã€‚\n scClick('ana-maas_sagataxi_button_result');\n }\n\n return (\n <Link\n href={url}\n target='_blank'\n className={classes.link}\n onClick={onClick}\n >\n <ButtonOfSection\n labels={label}\n backgroundColor='#FDB50A'\n color='#0f0f0f'\n cyName='button_saga_taxi'\n />\n </Link>\n )\n}\n\nexport default ButtonSagaAirportTaxi;\n","import { Grid, Link, makeStyles } from \"@material-ui/core\";\nimport React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSelector } from \"react-redux\";\nimport { State } from \"../../../reducers\";\nimport { getClosedGeocode } from \"../../../services/google/api\";\nimport Place from \"../../../services/google/Place\";\nimport { convertStringToTaxiCompany, TaxiCompanyList, TaxiFareSummary } from \"../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams\";\nimport { CommonTaxiUtils } from \"../../ad/OtherServices/CommonTaxi/CommonTaxiDateUtils\";\nimport scClick from \"../../common/ScClick\";\nimport ButtonOfSection from \"../sections/ButtonOfSection\";\nimport { toLuxonDateTimeFronJSDate } from \"../../../utils/luxonUtil\";\n\ninterface Props {\n // タクシー料金\n fee: TaxiFareSummary,\n // ãŠè¿Žãˆæ™‚間(タクシー区間ã®å‡ºç™ºæ™‚間)\n depTime?: Date,\n // タクシー会社å表示 Add 2022.10.12\n displayTaxiCompany?: boolean,\n // é‹è³ƒãƒ©ãƒ™ãƒ«æŒ‡å®š\n labelFare?: string\n}\n\nconst useStyles = makeStyles(() => ({\n summary: {\n color: '#0B308E'\n },\n alink: {\n textDecoration: \"none\"\n },\n}));\n\n// タクシー予約ボタン\nexport const TaxiReserversButton: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const point = useSelector((state: State) => state.condition.point);\n const flight = useSelector((state: State) => state.condition.flight);\n const place = useSelector((state: State) => state.condition.place);\n const lang = useSelector((state: State) => state.condition.query.lang);\n const taxiCompanyConfigurations = useSelector((state: State) => state.general.taxiCompanyConfigurations);\n const airportCode = flightStatus.getFixTerminalCode(isDepartureGuide);\n const isDomestic = flightStatus.isDomestic;\n const [ url, setURL ] = useState('');\n const { t } = useTranslation();\n /** 対象ã®ä¼šç¤¾ */\n const company: TaxiCompanyList | null = convertStringToTaxiCompany(props.fee.companyCode)\n /** ç·¯åº¦ã€‚ï¼ˆåœ°ç‚¹æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã¯nullを代入ã™ã‚‹ã€‚) */\n const lat = place ? Number.parseFloat(place.lat) : null;\n /** çµŒåº¦ã€‚ï¼ˆåœ°ç‚¹æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã¯nullを代入ã™ã‚‹ã€‚) */\n const lng = place ? Number.parseFloat(place.lng) : null;\n\n // URLをセットã™ã‚‹\n const generateURL = (localLangPlace?: Place) => {\n if(props.fee === undefined || lat === null || lng === null || place === null || !props.depTime) {\n return '';\n }\n /** 空港å´ã®åº§æ¨™æƒ…å ± */\n // TODO: 型を定義ã™ã‚‹\n let paramsObj: any = {\n isDeparture: isDepartureGuide.toString(),\n // 英語版ã§ã¯è‹±èªžã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¨å®šã™ã‚‹\n pointAddress: localLangPlace? localLangPlace.getFullAddress(lang): place.getFullAddress(lang),\n pointName: point,\n pointLat: lat.toString(),\n pointLng: lng.toString(),\n isDomestic: isDomestic.toString(),\n terminal: flightStatus.getTerminal(isDepartureGuide).toString(),\n gate: flightStatus.bordingGate,\n airportCode: airportCode,\n flightNumber: flight,\n flightDate: flightStatus.getFlightTimeDate(isDepartureGuide).getTime().toString(),\n rideDate: props.depTime.getTime().toString(),\n company: company,\n referrer: 'airport_access',\n lang: lang,\n pointJPAddress: place.getFullAddress(),\n pointJPName: place.name || ''\n }\n const mode = props.fee.mode;\n if(mode && mode !== '') {\n paramsObj = {\n ...paramsObj,\n mode: mode\n }\n }\n const params = new URLSearchParams(paramsObj);\n const url = `/booking-taxi/?${params.toString()}`;\n setURL(url);\n }\n\n useEffect(() => {\n generateURL();\n // ç¾åœ°èªžã®ä½æ‰€ã‚’å–å¾—ã—ã¦å…¥ã‚Œè¾¼ã‚€ï¼ˆå ´æ‰€ã¯ã“ã“ã§æ£ã—ã„ã‹ç¢ºèªã™ã‚‹å¿…è¦ã‚り)\n getClosedGeocode(`${lat},${lng}`, lang)\n .then((places) => {\n const enPlace: Place = places[0];\n generateURL(enPlace);\n })\n }, []);\n\n if(company === null || taxiCompanyConfigurations === undefined) {\n return null;\n }\n\n const taxiCompanyConfiguration = taxiCompanyConfigurations[company];\n const limit = taxiCompanyConfiguration.limit;\n /** 対象ã¨ãªã‚‹ç©ºæ¸¯å */\n const targetAirport = isDepartureGuide? flightStatus.depAirportCode: flightStatus.arrAirportCode;\n const commonTaxiUtils = new CommonTaxiUtils(limit.limitDays, limit.limitHours, company, targetAirport);\n\n /** 宮交タクシーãŒåˆ©ç”¨å¯èƒ½ãªçµŒè·¯ã‹ã‚’判別ã™ã‚‹ã€‚ */\n const isAvalableMiyakoTaxi = (() => {\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã€åˆ©ç”¨å¯èƒ½ã¨ã—ã¦æ‰±ã†ã€‚\n // 1. ã“ã®çµŒè·¯ãŒã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã‹ã¤ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æƒ…å ±ï¼ˆéŽåŽ»ã®æ¤œç´¢ï¼‰ã§ã¯ãªã„ã“ã¨ã€‚\n // 2. ç¾åœ¨æ—¥æ™‚ãŒå®®äº¤ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„å¯èƒ½ãªæ—¥ä»˜ï¼ˆæä¹—æ—¥ã®3æ—¥å‰ã®17時よりå‰ï¼‰ã§ã‚ã‚‹ã“ã¨ã€‚\n // 3. 日本語版ã§ã‚ã‚‹ã“ã¨ã€‚\n // 4. 宮交タクシーã®æ–™é‡‘ãŒå–å¾—ã§ãã‚‹ã‹\n // 5-1. 出発案内ã®å ´åˆã¯å‡ºç™ºç©ºæ¸¯ãŒå®®å´Žç©ºæ¸¯ã§ã‚ã‚‹ã“ã¨ã€‚\n // 5-2. ã¾ãŸã¯åˆ°ç€æ¡ˆå†…ã®å ´åˆã¯åˆ°ç€ç©ºæ¸¯ãŒå®®å´Žç©ºæ¸¯ã§ã‚ã‚‹ã“ã¨ã€‚\n return ((isDepartureGuide && flightStatus.depAirportCode === \"KMI\") ||\n (isDepartureGuide === false && flightStatus.arrAirportCode === \"KMI\"));\n })();\n /** タクシーãŒåˆ©ç”¨å¯èƒ½ã‹ã‚’判別ã™ã‚‹ */\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã€åˆ©ç”¨å¯èƒ½ã¨ã—ã¦æ‰±ã†ã€‚\n // 1. ã“ã®çµŒè·¯ãŒã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã‹ã¤ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æƒ…å ±ï¼ˆéŽåŽ»ã®æ¤œç´¢ï¼‰ã§ã¯ãªã„ã“ã¨ã€‚\n // 2. ç¾åœ¨æ—¥æ™‚ãŒã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„å¯èƒ½ãªæ—¥ä»˜ï¼ˆæä¹—æ—¥ã®Xæ—¥å‰ã®XX時よりå‰ï¼‰ã§ã‚ã‚‹ã“ã¨ã€‚\n // 3. 日本語版ã§ã‚ã‚‹ã“ã¨ã€‚\n // 料金や座標・出発時刻・Placeæƒ…å ±ãŒå–ã‚Œãªã„時ã«ã¯ãƒœã‚¿ãƒ³ã‚’出ã•ãªã„\n if(props.fee === undefined || lat === null || lng === null || place === null || !props.depTime) {\n return null;\n }\n // 予約å¯èƒ½ãªæ—¥ä»˜ã§ãªã„å ´åˆã«ã¯å‡ºã•ãªã„\n const isAvalableDateTaxi = commonTaxiUtils.isAvalable(\n toLuxonDateTimeFronJSDate(\n flightStatus.getFlightTimeDate(isDepartureGuide)\n )\n )\n if(!isAvalableDateTaxi) {\n return null;\n }\n // 宮交連æºã‹ã¤ã€å®®äº¤ã‚¿ã‚¯ã‚·ãƒ¼åˆ©ç”¨å¯èƒ½æ¡ä»¶ã‚’満ãŸã•ãªã„å ´åˆã«ã¯è¡¨ç¤ºã—ãªã„\n if(company === TaxiCompanyList.miyakou && !isAvalableMiyakoTaxi ) {\n return null;\n }\n // 料金をå–å¾—ã§ããªã„å ´åˆã«ã¯å‡ºã•ãªã„\n if(!props.fee.fareInfo.totalValue) {\n return null;\n }\n // 伊予鉄タクシーãŒã‚ャンペーン期間ä¸ã‹åˆ¤å®šã™ã‚‹\n const isIyotetsuMileageCampaign = ((flightDate: Date) => {\n // æä¹—æ—¥ãŒ22/12/08~23/2/28ã®æ–¹ã®ã¿æ–‡è¨€ã‚’変ãˆã‚‹\n const start = new Date('2022-12-07T23:59+09:00');\n const end = new Date('2023-03-01T00:00+09:00');\n if(flightDate.getTime() > start.getTime() && flightDate.getTime() < end.getTime()) {\n return true\n }\n return false\n })\n\n const flightDate = flightStatus.getFlightTimeDate(isDepartureGuide);\n let fareLabel = props.fee.fareInfo.fareLabel;\n\n // é‹è³ƒãƒ©ãƒ™ãƒ«æ–‡è¨€æŒ‡å®š Add 2022.10.12\n if (props.labelFare) {\n fareLabel = props.labelFare\n }\n\n /** タクシー予約ボタンã®1行目ã«è¡¨ç¤ºã™ã‚‹ãƒ©ãƒ™ãƒ« */\n const firstLabel = (()=>{\n // タクシー会社å表示 Add 2022.10.12\n if (props.displayTaxiCompany) {\n return (taxiCompanyConfigurations[company].displayName) + (props.labelFare ? 'ã®' : '')\n }\n const taxiCompanyFirstLabel: { [key in TaxiCompanyList]: string } = {\n // 那覇ãƒã‚¤ãƒ¤ãƒ¼ã®å ´åˆã«ã¯ã€Œãƒã‚¤ãƒ¤ãƒ¼äºˆç´„ã€ã«ã™ã‚‹\n nahahire: t('taxi:reserve_hire'),\n // イースタンã®å ´åˆã«ã¯ãƒ©ãƒ™ãƒ«ãªã—ã«ã™ã‚‹\n limoTaxi: '',\n iyotetsutaxi: '',\n // 伊予鉄タクシーメーターã®å ´åˆã«ã¯ã€Œãƒžã‚¤ãƒ«ã‚‚貯ã¾ã‚‹ï¼ã€ã®æ–‡è¨€ã‚’入れる\n // ダブルマイルã‚ャンペーンä¸ã¯æ–‡è¨€ã‚’変ãˆã‚‹\n iyotetsuTaxi2: isIyotetsuMileageCampaign(flightDate) ? t('taxi:double_mile_campaign') : t('taxi:save_mile'),\n // 函館タクシー・æ—å·ä¸å¤®äº¤é€šã®å ´åˆã«ã¯ã€Œãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚‹ï¼ã€ã®æ–‡è¨€ã‚’入れる\n Asahikawachuuo: t('taxi:mile_ga_tamaru'),\n hakodateTaxi: t('taxi:mile_ga_tamaru'),\n // ç¦å³¶ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼éƒ¡ã§ã¯ã€Œä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã¨å…¥ã‚Œã‚‹\n daiwaj: t('taxi:noriai_taxi_reserve'),\n kitafukushima: t('taxi:noriai_taxi_reserve'),\n fukushimachuo: t('taxi:noriai_taxi_reserve'),\n iwakiTaxi: t('taxi:noriai_taxi_reserve'),\n 'uchi-go': t('taxi:noriai_taxi_reserve'),\n tajimaTaxi: t('taxi:noriai_taxi_reserve'),\n kinugawaTaxi: t('taxi:noriai_taxi_reserve'),\n hokutocab: t('taxi:noriai_taxi_reserve'),\n yotoTaxi: t('taxi:noriai_taxi_reserve'),\n // ãã®ä»–ã®ã‚¿ã‚¯ã‚·ãƒ¼ã§ã¯ã€Œã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã¨å…¥ã‚Œã‚‹\n miyakou: t('taxi:reserve_taxi'),\n ubeSanden: t('taxi:reserve_taxi'),\n eastern: t('taxi:reserve_taxi'),\n hinomaru: t('taxi:reserve_taxi'),\n nangoku: t('taxi:reserve_taxi'),\n gotaku: t('taxi:reserve_taxi'),\n ishikawakotsu: t('taxi:reserve_taxi'),\n // 土電ãƒã‚¤ãƒ¤ãƒ¼ã§ã¯ã€Œãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚‹ï¼ã€ã¨å…¥ã‚Œã‚‹\n toden: t('taxi:mile_ga_tamaru'),\n // ã‚ングタクシーã¯ã€Œä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã€ã¨å…¥ã‚Œã‚‹\n kingTaxi: t('taxi:noriai_taxi_reserve'),\n kingTaxi2: t('taxi:noriai_taxi_reserve'),\n // 宇部構内タクシーã§ã¯ã€Œãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚‹ï¼ã€ã¨å…¥ã‚Œã‚‹\n ubeKounai: t('taxi:mile_ga_tamaru'),\n // 通津タクシーã§ã¯ã€Œãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚‹ï¼ã€ã¨å…¥ã‚Œã‚‹\n tsuzutaxi: t('taxi:mile_ga_tamaru'),\n // 酒田タクシーã§ã¯ã€Œä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã€ã¨å…¥ã‚Œã‚‹\n sakataNo1Taxi: t('taxi:noriai_taxi_reserve'),\n //庄交ãƒã‚¤ãƒ¤ãƒ¼ã§ã¯ã€Œä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ã€\n shokoHire: t('taxi:noriai_taxi_reserve'),\n // 秋田エアãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒŠãƒ¼ã§ã¯ã€Œå®šé¡ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã¨å…¥ã‚Œã‚‹\n airport_liner: t('taxi:fixed_fare_noriai_taxi_reserve'),\n // ã«ã‹ã»GOã§ã¯ã€Œå®šé¡ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã¨å…¥ã‚Œã‚‹\n nikaho_go: t('taxi:fixed_fare_noriai_taxi_reserve'),\n // 検証用ã®å ´åˆã«ã¯ã€Œã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„検証用ã€ã¨å…¥ã‚Œã‚‹\n dummyVal: 'タクシー予約検証用'\n }\n return taxiCompanyFirstLabel[company];\n })()\n\n /** タクシー予約2行目ã®ãƒ©ãƒ™ãƒ«ã‚’入れる */\n const secondLabel = (()=>{\n switch(company) {\n case TaxiCompanyList.iyotetsutaxi:\n // 伊予鉄ã®å ´åˆã«ã¯ã€Œãƒžã‚¤ãƒ«ã‚‚貯ã¾ã‚‹ï¼ 空港é€è¿Žãƒã‚¤ãƒ¤ãƒ¼ã€ã¨è¡¨ç¤ºã™ã‚‹\n if((company === TaxiCompanyList.iyotetsutaxi)) {\n // ダブルマイルã‚ャンペーンä¸ã¯æ–‡è¨€ã‚’変ãˆã‚‹\n if(isIyotetsuMileageCampaign(flightDate)){\n return t('taxi:double_mile_campaign');\n }\n return t('taxi:save_mile');\n }\n else {\n return '';\n }\n // 伊予鉄タクシーメーターã®å ´åˆã«ã¯ã€Œãƒžã‚¤ãƒ«ã‚‚貯ã¾ã‚‹ï¼ã€ã®æ–‡è¨€ã‚’入れる\n case TaxiCompanyList.iyotetsuTaxi2:\n return t('taxi:reserve_taxi');\n case TaxiCompanyList.limoTaxi:\n case TaxiCompanyList.eastern:\n // マイルãŒè²¯ã¾ã‚‹ï¼\n const targetAirportMileGaTamaru = [\"HND\",\"NRT\",\"TYO\"];\n // マイル連æºã‚ã‚Š\n const targetAirportMileRenkeiAri = [\"KIX\",\"ITM\",\"UKB\"];\n if(targetAirportMileGaTamaru.includes(airportCode)) {\n // æ乗日㌠3/9 - 4/30: 「今ãªã‚‰ãƒ€ãƒ–ルマイルï¼ã€\n const start = new Date('2022-03-09T00:00+09:00');\n const end = new Date('2022-05-01T00:00+09:00');\n // 端末日付㌠3/9 15:00 以é™\n const nowTimeStart = new Date('2022-03-09T15:00+09:00');\n const now = new Date();\n if(flightDate.getTime() > start.getTime() && flightDate.getTime() < end.getTime() && now.getTime() > nowTimeStart.getTime() ) {\n return t('taxi:double_mile');\n }\n return t('taxi:mile_ga_tamaru')\n }\n // マイル連æºã‚ã‚Š\n if(targetAirportMileRenkeiAri.includes(airportCode)) {\n return t('taxi:have_mile')\n }\n return '';\n // 函館タクシー・æ—å·ä¸å¤®äº¤é€šã®å ´åˆã«ã¯ã€Œã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ã€ã®æ–‡è¨€ã‚’入れる\n case TaxiCompanyList.Asahikawachuuo:\n case TaxiCompanyList.hakodateTaxi:\n return t('taxi:reserve_taxi');\n default:\n return '';\n }\n })();\n\n const labels = [\n firstLabel,\n secondLabel,\n // イースタンã®å ´åˆã«ã¯ã€Œç©ºæ¸¯é€è¿Žãƒã‚¤ãƒ¤ãƒ¼ã€ã¨è¡¨ç¤ºã™ã‚‹\n ([TaxiCompanyList.limoTaxi, TaxiCompanyList.iyotetsutaxi].includes(company))? t('taxi:airport_hire'): '',\n fareLabel\n ]\n\n const cyName = taxiCompanyConfiguration? taxiCompanyConfiguration.cyName.result: '';\n // çµæžœç”»é¢ã§äºˆç´„ボタンを押ã—ãŸæ™‚ã®SCクリック値\n const scClickValue = taxiCompanyConfiguration? taxiCompanyConfiguration.scClick.result: '';\n const onClick = () => {\n if(scClickValue !== '' || company !== TaxiCompanyList.dummyVal) {\n scClick(scClickValue);\n }\n }\n\n return (\n <Grid item className={classes.summary}>\n <Link\n href={url}\n target='_blank'\n className={classes.alink}\n onClick={onClick}\n >\n <ButtonOfSection\n cyName={cyName}\n backgroundColor='#fdb409'\n color='#000000'\n labels={labels}\n />\n </Link>\n </Grid>\n )\n}\n","import { addMinutes, format, subMinutes } from \"date-fns\";\nimport { UniversalMaaSQuery } from \"../../states/universalMaaSQuery\";\nimport { ArrivalGateToStation } from \"../ana/data/arrivalGateToStation\";\nimport { ArrivalGateToStationInt } from \"../ana/data/arrivalGateToStationInt\";\nimport FlightInfo from \"../ana/models/flightInfo\";\nimport Place from \"../google/Place\";\n\nexport interface MkTaxiParams {\n landmark: string,\n lat: string,\n lng: string,\n agent: string,\n dpdate: string,\n pattern: string,\n flno: string,\n fldate: string,\n // サãƒãƒ¼ãƒˆãƒªã‚¯ã‚¨ã‚¹ãƒˆID\n other2?: string,\n // 車椅å区分\n other3?: string,\n // Universal Access code\n uaccess?: string\n}\nexport interface MkTaxiUMParams {\n // 車椅å区分\n other3?: string\n}\nexport interface CarLoadingLimit{\n // 奥行最大(ds6)\n DepthLimit: number,\n // 横幅最大(ds7)\n WidthLimit: number,\n // 高ã•æœ€å¤§ï¼ˆds8)\n HeightLimit: number,\n // 乗車定員(um3)\n PassengerLimit: number,\n // é‡é‡æœ€å¤§(ds10)\n WeightLimit: number,\n}\n\nexport default class MKTaxiClass {\n static baseURL: any = {\n 'dev': 'https://taxism02w.meitetsucom.co.jp/mk/AirportTransferOrdering/',\n 'prod': 'https://secure2.mk-group.co.jp/AirportTransferOrdering/'\n }\n static ANAMileageClubURL: any = {\n 'dev': 'https://stg.test.cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp',\n 'prod': 'https://cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp'\n }\n static HireURL: string = 'https://secure.mk-group.co.jp/airport-hire.ana/';\n static landmarkAirportList: string[] = ['SPK', 'NGO', 'ITM', 'KIX', 'UKB', 'FUK', '', 'NRT', 'HND'];\n\n static getHost = () => {\n return MKTaxiClass.baseURL.prod;\n }\n\n static getANAMileageClubHost = () => {\n return MKTaxiClass.ANAMileageClubURL.prod;\n }\n\n static SerenaLimit: CarLoadingLimit ={\n DepthLimit: 124.5,\n WidthLimit: 66,\n HeightLimit: 118,\n PassengerLimit: 4,\n WeightLimit: 325\n }\n\n static AlphardLimit: CarLoadingLimit ={\n DepthLimit: 115,\n WidthLimit: 33,\n HeightLimit: 96,\n PassengerLimit: 5,\n WeightLimit: 390\n }\n\n /**\n * 空港コードよりã€æ±äº¬å‘¨è¾ºã®ç©ºæ¸¯ï¼ˆç¾½ç”°ãƒ»æˆç”°ï¼‰ã§ã‚ã‚‹ã“ã¨ã‚’判定ã™ã‚‹\n * @param airportCode 判別ã™ã‚‹ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n * @returns\n */\n static isTYO = (airportCode: string) => {\n return airportCode === 'HND' || airportCode === 'NRT' || airportCode === 'TYO';\n }\n\n /** ãƒã‚¤ãƒ¤ãƒ¼ã®æ–™é‡‘ã‚’å–å¾—ã™ã‚‹ï¼ˆæš«å®šçš„) */\n static getHirePrice = (place: Place, airportCode: string) => {\n // ãƒã‚¤ãƒ¤ãƒ¼ã¯ç¾½ç”°ã€æˆç”°ã¨ã‚‚ã«ã€åˆ°ç€åœ°ï¼ˆãƒãƒŠãƒ¼ã®å ´åˆã¯å‡ºç™ºåœ°ã‚‚)ã¯ã€Œæ±äº¬ã€åƒè‘‰ã€ç¥žå¥ˆå·ã€åŸ¼çŽ‰ã€èŒ¨åŸŽã€ã®å ´åˆã®ã¿ã€ãƒœã‚¿ãƒ³ã¨ãƒãƒŠãƒ¼ã«é‡‘é¡è¡¨ç¤ºã™ã‚‹\n const targetPrefectureList = ['æ±äº¬éƒ½', 'åƒè‘‰çœŒ', '神奈å·çœŒ', '埼玉県', '茨城県'];\n if(targetPrefectureList.includes(place.prefecture)) {\n // 羽田ã§ã¯13000円\n if(airportCode === 'HND') {\n return 13000;\n }\n else {\n // æˆç”°ã§ã¯\n // åƒè‘‰çœŒã®å ´åˆã¯ã‚¨ãƒªã‚¢åˆ¤åˆ¥ã—ã¦=「10,000円~ã€\n // 「æ±äº¬ã€ç¥žå¥ˆå·ã€åŸ¼çŽ‰ã€èŒ¨åŸŽã€ï¼ã€Œ30,000円~ã€\n return place.prefecture === 'åƒè‘‰çœŒ'? 10000: 30000;\n }\n }\n return 0;\n }\n /** ãƒã‚¤ãƒ¤ãƒ¼ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹åˆ¤å®š */\n static isHireCar = (flightStatus: FlightInfo, isDepartureGuide: boolean, isBanner: boolean)=> {\n // const targetAirports = ['TYO', 'NRT', 'HND'];\n // // 羽田ã¾ãŸã¯æˆç”°ã®å›½éš›ç·šã®å ´åˆ\n // // 国際線ã®åˆ°ç€æ™‚ã¯ãƒãƒŠãƒ¼ãƒ»ãƒœã‚¿ãƒ³ä¸¡æ–¹ã¨ã‚‚ãƒã‚¤ãƒ¤ãƒ¼\n // // 国際線ã®å‡ºç™ºæ™‚ã¯ãƒãƒŠãƒ¼ã¯ãƒã‚¤ãƒ¤ãƒ¼ã§ãƒœã‚¿ãƒ³ã¯ã‚¿ã‚¯ã‚·ãƒ¼\n // if (targetAirports.indexOf(flightStatus.arrAirportCode) && !flightStatus.isDomestic) {\n // if(isDepartureGuide) {\n // return isBanner;\n // }\n // else {\n // return true;\n // }\n // }\n // 2022/04/26: ç„¡æ¡ä»¶ã§ã‚¿ã‚¯ã‚·ãƒ¼ã‚’表示ã™ã‚‹\n return false;\n }\n /** MKタクシーã®ANAマイレージクラブãƒã‚°ã‚¤ãƒ³ç”¨URLã‚’è¨å®šã™ã‚‹ */\n static MKTaxiANAMileageClubURL = (mkTaxiURL: string, airportCode: string): string => {\n const targetAirports = ['TYO', 'NRT', 'HND'];\n const useUrl = MKTaxiClass.getANAMileageClubHost();\n const params = {\n domid: 'se_lp',\n seUrl: mkTaxiURL,\n companyid: (targetAirports.indexOf(airportCode) !== -1)? 'tokyomk': 'mktaxi'\n }\n return `${useUrl}?${new URLSearchParams(params)}`;\n }\n /**\n * MKタクシーã®é·ç§»å…ˆURLã‚’è¨å®šã™ã‚‹\n * @param flightStatus æ乗便ã®é‹èˆªæƒ…å ±ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n * @param arrivalTimeToAirport 空港到ç€æ™‚間。\n * @param place 発ç€åœ°æƒ…å ±ã€‚\n * @param isHire ãƒã‚¤ãƒ¤ãƒ¼ã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n * @param airlineCode 航空会社コード。\n * */\n static getMkTaxiUrl = (flightStatus: FlightInfo, isDepartureGuide: boolean, arrivalTimeToAirport: number, place: Place, isHire: boolean, airlineCode: string, other3?: string) => {\n if (isHire) {\n return MKTaxiClass.HireURL;\n }\n\n const airportName = isDepartureGuide ? flightStatus.depAirportName : flightStatus.arrAirportName;\n let airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n\n // 空港コードãŒTYOã®å ´åˆ\n if (airportCode === 'TYO') {\n if (airportName.includes('Haneda')) {\n // HanedaãŒå«ã¾ã‚Œã¦ã„ãŸã‚‰ã€ç¾½ç”°ç©ºæ¸¯ã¨ã™ã‚‹\n airportCode = 'HND';\n } else if (airportName.includes('Narita')) {\n // NaritaãŒå«ã¾ã‚Œã¦ã„ãŸã‚‰ã€æˆç”°ç©ºæ¸¯ã¨ã™ã‚‹\n airportCode = 'NRT';\n }\n }\n\n // æ–°åƒæ³ç©ºæ¸¯ãŒã€CTSã®å ´åˆãŒã‚ã‚‹ãŸã‚ã€SPKã¨ã™ã‚‹\n if (airportCode === 'CTS') {\n airportCode = 'SPK';\n }\n\n const landmark = MKTaxiClass.landmarkAirportList.indexOf(airportCode);\n\n // é…車日時\n const departureTime: Date = flightStatus.getFlightTimeDate(isDepartureGuide);\n const flightTime = format(departureTime, 'yyyyMMddHHmm');\n\n let depDate = departureTime;\n if (departureTime.toString() !== 'Invalid Date') {\n if (isDepartureGuide) {\n // 便出発時間 - ãŠå®¢æ§˜ãŒå…¥åŠ›ã—ãŸåˆ°ç€å¸Œæœ›æ™‚é–“ - 1時間\n depDate = subMinutes(departureTime, arrivalTimeToAirport + 60);\n } else {\n // 空港ã‹ã‚‰æ¤œç´¢\n // 便到ç€æ™‚é–“ + アクセスナビã®æ¤œç´¢è¨å®šæ™‚é–“\n //(国内ã¯ç¾½ç”°ã€æˆç”°ã€ä¼Šä¸¹ã€é–¢è¥¿ã€ç¦å²¡ã€åƒæ³ã€ä¸éƒ¨ã€é‚£è¦‡ãŒ30分ã€ãれ以外ã¯20分ã€å›½éš›ã¯HND:40分 NRT:60分 KIX:40分)\n let minutes = 0;\n // 国内線ã®å ´åˆã€‚\n if (flightStatus.isDomestic) {\n minutes = ArrivalGateToStation[airportCode];\n // 国際線ã®å ´åˆã€‚\n } else {\n // 指定ã•ã‚ŒãŸç©ºæ¸¯ã ã£ãŸå ´åˆã¯åˆ¥ãƒ•ã‚¡ã‚¤ãƒ«ã§è¨å®šã•ã‚ŒãŸç©ºæ¸¯ã”ã¨ã®å€¤ã‚’å‚ç…§ã—ã€æŒ‡å®šå¤–ã®ç©ºæ¸¯ã®å ´åˆã¯0ã¨ã™ã‚‹ã€‚\n // minutes = SPECFIED_AIRPORTS_INT.includes(this.arrAirportCode) ? this.getArrivalGateToStationInt() : 0;\n minutes = ArrivalGateToStationInt[airportCode];\n }\n if(minutes !== undefined) {\n depDate = addMinutes(departureTime, minutes);\n }\n }\n }\n\n /** 便å。 */\n const flightNumber = `${airlineCode}${flightStatus.flightNumber}`;\n\n let params: MkTaxiParams = {\n landmark: String(landmark + 1),\n lat: place.lat,\n lng: place.lng,\n agent: 'ana',\n dpdate: format(depDate, 'yyyyMMdd'),\n pattern: isDepartureGuide? \"0\": \"1\",\n flno: flightNumber,\n fldate: flightTime,\n uaccess: other3 !== undefined? '1': '0'\n }\n if(other3){\n params.other3 = other3;\n }\n return MKTaxiClass.generateMkTaxiParamsToURL(params)\n }\n\n static generateMkTaxiParamsToURL = (params: MkTaxiParams) => {\n // eslint-disable-next-line\n return `${MKTaxiClass.getHost()}?${new URLSearchParams(<string><unknown>params)}`\n }\n\n static generateMkTaxiUMParamsToURL = (params: MkTaxiUMParams) => {\n // eslint-disable-next-line\n return `${MKTaxiClass.getHost()}?${new URLSearchParams(<string><unknown>params)}`\n }\n static landmarkToAirportCode = (landmark: number) => {\n return MKTaxiClass.landmarkAirportList[landmark];\n }\n // å„車種ã®åˆ¶é™ã‚’超ãˆã‚‹ã‹\n static getIsOverCarLoading = (umQuery: UniversalMaaSQuery, carLimit:CarLoadingLimit, um2:string) => {\n if(!umQuery.ds6 || !umQuery.ds7 || !umQuery.ds8 || !umQuery.ds9 || !umQuery.ds10 || !umQuery.ds11 || !um2) {\n return null;\n }\n // cmã«å¤‰æ›\n const toCm = (length: string, unit: string) => {\n if(unit === '1') {\n return Number(length);\n }\n else {\n return Number(length) * 2.54;\n }\n }\n // kgã«å¤‰æ›\n const toKg = (weight: string, unit: string) => {\n if(unit === '1') {\n return Number(weight);\n }\n else {\n return Number(weight) * 0.45359237;\n }\n }\n // 乗車人数最大\n const PassengerLimit = carLimit.PassengerLimit\n // 乗車人数\n const passengers = parseInt(um2)\n // 奥行最大(ds6)\n const DepthLimit = carLimit.DepthLimit;\n // 横幅最大(ds7)\n const WidthLimit = carLimit.WidthLimit;\n // 高ã•æœ€å¤§ï¼ˆds8)\n const HeightLimit = carLimit.HeightLimit;\n // é‡é‡æœ€å¤§(ds10)\n const WeightLimit = carLimit.WeightLimit - (55 * (passengers + 1));\n // 奥行\n const depth = toCm(umQuery.ds6, umQuery.ds9);\n // 横幅\n const width = toCm(umQuery.ds7, umQuery.ds9);\n // 高ã•\n const height = toCm(umQuery.ds8, umQuery.ds9);\n // é‡é‡\n const weight = toKg(umQuery.ds10, umQuery.ds11);\n // ã©ã‚Œã‹åˆ¶é™ã‚’超éŽã—ã¦ã„ãŸã‚‰ã«ã¯Trueã‚’è¿”ã™\n return (depth > DepthLimit) ||\n (width > WidthLimit) ||\n (height > HeightLimit) ||\n (weight > WeightLimit) ||\n (passengers > PassengerLimit);\n }\n\n static getOther3ByBinary = (umQuery: UniversalMaaSQuery) => {\n if(!umQuery.ds1 || !umQuery.ds3) {\n return null;\n }\n const um1 = umQuery.um1 || '0';\n const um2 = umQuery.um2 || '0';\n const um3 = umQuery.um3 || '0';\n // ãŠå®¢æ§˜ã®ç‰¹æ€§æƒ…å ±\n const other3Part0 = umQuery.ds1;\n // 車ã„ã™åŒºåˆ†\n let other3Part1;\n let isTargetUser = false;\n if(umQuery.ds1){\n const ds1List = umQuery.ds1.split(\"_\");\n for(const ds1 of ds1List){\n if(['1', '2', '3'].includes(ds1)) {\n isTargetUser = true;\n }\n }\n }\n other3Part1 = '0';\n if(umQuery.ds4 && (['E', 'M'].includes(umQuery.ds4)) && isTargetUser) {\n other3Part1 = umQuery.ds4;\n }\n // 車種区分\n let binary1 = '0';\n let binary2 = '0';\n let binary3 = '0';\n let binary4 = '0';\n\n // ds3=1(折り畳ã¿å¯)ã‹ã¤ã€ds6~ds11ãŒã‚¢ãƒ«ãƒ•ã‚¡ãƒ¼ãƒ‰ä¹—車制é™å†…ã®å ´åˆã€binary4ã«1ã‚’è¨å®šã™ã‚‹\n const isOverAlphard = MKTaxiClass.getIsOverCarLoading(umQuery, MKTaxiClass.AlphardLimit, um2);\n // å¿…è¦ãƒ‘ラメーターãŒè¶³ã‚Šãªã„ã¨ãã«ã¯ç©ºæ–‡å—ã‚’è¿”ã™\n if(isOverAlphard === null){\n return null;\n }\n if(umQuery.ds3 === '1' && !isOverAlphard){\n binary4 = '1';\n }\n // ds3=0(折り畳ã¿ä¸å¯)ã‹ã¤ã€ds6~ds11ãŒã‚»ãƒ¬ãƒŠä¹—車制é™å†…ã®å ´åˆã€binary3ã«1ã‚’è¨å®šã™ã‚‹\n const isOverSerena = MKTaxiClass.getIsOverCarLoading(umQuery, MKTaxiClass.SerenaLimit, um2);\n // å¿…è¦ãƒ‘ラメーターãŒè¶³ã‚Šãªã„ã¨ãã«ã¯ç©ºæ–‡å—ã‚’è¿”ã™\n if(isOverSerena === null){\n return null;\n }\n if(umQuery.ds3 === '0' && !isOverSerena){\n binary3 = '1';\n }\n // ds3=1(折り畳ã¿å¯èƒ½)ã®å ´åˆã¨è»Šã„ã™ãƒ¦ãƒ¼ã‚¶ä»¥å¤–ã®å ´åˆã€binary2ã«1ã‚’è¨å®šã™ã‚‹\n if((umQuery.ds3 === '1' || !isTargetUser) && (!isOverAlphard || !isOverSerena)){\n binary2 = '1';\n }\n // 上記ã™ã¹ã¦ã®å€¤ãŒ0ã®æ™‚ã€binary1ã«1ã‚’è¨å®šã™ã‚‹\n if(binary2 === '0' && binary3 === '0' && binary4 === '0'){\n binary1 = '1';\n }\n // binary5~binary1ã¾ã§ã‚’2進数ã®æ¡ã¨ã—ã¦10進数ã«å¤‰æ›ã™ã‚‹(一æ¡ã®å ´åˆã¯0を補完ã™ã‚‹)\n let other3Part2: any = parseInt(binary4 + binary3 + binary2 + binary1, 2);\n if(other3Part2 < 10){\n other3Part2 = '0' + other3Part2;\n } else {\n other3Part2 = other3Part2.toString();\n }\n const other3: string = other3Part0 + other3Part1 + other3Part2 + um1 + um2 + um3;\n return other3;\n }\n\n static switchTextUmQuery = (umQuery: UniversalMaaSQuery) => {\n const umQueryText = {\n ds1: [''],\n ds3: '',\n ds4: '',\n ds9: '',\n ds11: '',\n um1: '',\n um2: '',\n um3: ''\n }\n if(umQuery.ds1){\n const ds1List = umQuery.ds1.split(\"_\");\n let ds1TextList:string[] = []\n for(const ds1 of ds1List){\n ds1TextList.push((()=>{\n switch(ds1) {\n case '1': return '階段ã®æ˜‡ã‚Šé™ã‚Šã¯ã§ãã‚‹ãŒã€é•·è·é›¢ã®æ©è¡Œã¯ã§ããªã„';\n case '2': return '機内ã®ç§»å‹•ã¯ã§ãã‚‹ãŒã€éšŽæ®µã®æ˜‡ã‚Šé™ã‚Šã¯ã§ããªã„';\n case '3': return 'æ©è¡ŒãŒã§ããªã„(機内ã®åº§å¸è¿‘ãã¾ã§è»Šã„ã™ã‚’利用ã—ã€ç§»ä¹—ã®ä»‹åŠ©ãŒå¿…è¦)';\n case '4': return 'ç›®ã«ä¸è‡ªç”±ãŒã‚ã‚‹';\n case '5': return '耳や言葉ã«ä¸è‡ªç”±ãŒã‚ã‚‹';\n case '6': return '機内ã§åŒ»ç™‚ç”¨é…¸ç´ ãƒœãƒ³ãƒ™ãƒ»é…¸ç´ æ¿ƒç¸®å™¨ãƒ»äººå·¥å‘¼å¸å™¨ã®ä½¿ç”¨ãŒå¿…è¦ã§ã‚ã‚‹(診æ–書ãŒå¿…è¦)';\n case '7': return 'å¦Šå¨ ä¸ã§å‡ºç”£äºˆå®šæ—¥ã‚’å«ã‚28日以内ã®ã”æä¹—ã§ã‚ã‚‹(診æ–書ãŒå¿…è¦)';\n default: return '';\n }\n })())\n }\n const isAllBlank = (ds1Text: string) => ds1Text === '';\n if(ds1TextList.every(isAllBlank)){\n ds1TextList = ['-'];\n }\n umQueryText.ds1 = ds1TextList;\n }\n const toText = (val: string | undefined, case1: string, case2: string, text1: string, text2: string):string => {\n switch(val) {\n case case1: return text1;\n case case2: return text2;\n default: return '-';\n }\n }\n umQueryText.ds3 = toText(umQuery.ds3,'0','1','ã„ã„ãˆ','ã¯ã„');\n umQueryText.ds4 = toText(umQuery.ds4,'M','E','手動','電動');\n umQueryText.ds9 = toText(umQuery.ds9,'1','2','cm','inch');\n umQueryText.ds11 = toText(umQuery.ds11,'1','2','kg','lb');\n umQueryText.um1 = (()=>{\n switch(umQuery.um1) {\n case '1': return 'ã‚ã‚Š';\n case '2': return 'ãªã—';\n case undefined: return '-';\n default: return 'ä¸æ˜Ž';\n }\n })()\n umQueryText.um2 = umQuery.um2 === undefined? '-': umQuery.um2.toString();\n umQueryText.um3 = (()=>{\n switch(umQuery.um3) {\n case '1': return '座å¸ä¹—車';\n case '2': return '車椅åã®ã¾ã¾ä¹—車';\n case undefined: return '-';\n default: return 'ä¸æ˜Ž';\n }\n })()\n return umQueryText\n }\n}\n","import React, { useState } from 'react';\nimport { createStyles, Grid, AppBar, makeStyles, Theme, Modal, Toolbar, Typography, Button, Checkbox, FormGroup, FormControlLabel, Link } from '@material-ui/core';\nimport { TaxiPrice } from '../../../../services/mktaxi/data/PriceList';\nimport { State } from \"../../../../reducers\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport MkTaxiService from './MkTaxiService';\nimport FlightInfo from '../../../../services/ana/models/flightInfo';\nimport Place from '../../../../services/google/Place';\n\nimport MKTaxiClass, { MkTaxiParams } from '../../../../services/mktaxi/util';\nimport { switchIsShowUMModal } from '../../../../actions/conditionAction';\nimport ModalHeader from '../../../common/ModalHeader';\n\ninterface Props {\n price?: TaxiPrice,\n flightStatus: FlightInfo,\n isDepartureGuide: boolean,\n arrivalTimeToAirport: number,\n place: Place\n isHireLink: boolean,\n airlineCode: string,\n airportCode: string,\n /** 羽田oræˆç”°ç™ºç€ã‹ */\n isTYO: boolean,\n /** ãƒãƒªã‚¢ãƒ•ãƒªãƒ¼ç”¨ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã‹ */\n isShowBarrierFreeImage?: boolean,\n /** モーダルã®é–‹é–‰ãƒ•ãƒ©ã‚°ã‚’引数ã«ã‚ˆã‚Šåˆ¶å¾¡ã•ã›ã‚‹ */\n isOpen: boolean,\n /** モーダルã®é–‹é–‰ãƒ•ãƒ©ã‚°ã‚’引数ã«ã‚ˆã‚Šåˆ¶å¾¡ã•ã›ã‚‹ */\n isSetOpen: React.Dispatch<React.SetStateAction<boolean>>,\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n width: '100%',\n height: '100%',\n maxWidth: '100%',\n maxHeight: '100%',\n backgroundColor: theme.palette.background.paper,\n overflowY: 'scroll'\n },\n container: {\n padding: theme.spacing(2, 2, 3)\n },\n subContainer: {\n margin: theme.spacing(1, 3)\n },\n input: {\n marginLeft: '12px'\n },\n list: {\n width: '100%',\n border: '1px solid #CBD2E3',\n marginTop: '5px'\n },\n listStyle: {\n listStyle: 'none'\n },\n border: {\n width: '85px',\n border: 'solid',\n },\n button: {\n marginTop: \"auto\",\n marginBottom: theme.spacing(5),\n width: \"50%\",\n margin: theme.spacing(1),\n background: '#d74100',\n '&:hover': {\n background: '#d74100',\n }\n },\n closeButton: {\n marginTop: \"auto\",\n marginBottom: theme.spacing(5),\n margin: theme.spacing(1),\n },\n mileAreaStyle: {\n width: '100%',\n marginTop: \"5px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n mileAreaBottomStyle: {\n width: '100%',\n marginTop: \"40px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n linkStyle: {\n fontWeight: 'bold',\n textDecoration: 'underline'\n },\n quesText: {\n color: \"red\",\n fontWeight: 'bold',\n fontSize: '1.2rem'\n },\n text: {\n color: \"#0B308E\"\n },\n textDecoration: {\n textDecoration: \"underline\",\n textDecorationColor: \"#0B308E\"\n },\n bar: {\n alignItems: 'center',\n fontSize: '1.2rem'\n }\n }),\n);\n\nconst MkTaxiAgreementService: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const isShowUMModal = useSelector((state: State) => state.condition.isShowUMModal);\n const umQuery = useSelector((state: State) => state.general.universalMaaSQuery);\n\n // UMæƒ…å ±é€£æºç”¨MKTaxiURL\n const other3 = MKTaxiClass.getOther3ByBinary(umQuery);\n let umTaxiUrl: string ;\n let umAnaMileageClubURL: string ;\n if(other3) {\n umTaxiUrl = MKTaxiClass.getMkTaxiUrl(props.flightStatus, props.isDepartureGuide, props.arrivalTimeToAirport, props.place, props.isHireLink, props.airlineCode, other3);\n umAnaMileageClubURL = MKTaxiClass.MKTaxiANAMileageClubURL(umTaxiUrl, props.airportCode);\n } else {\n umTaxiUrl = MKTaxiClass.getMkTaxiUrl(props.flightStatus, props.isDepartureGuide, props.arrivalTimeToAirport, props.place, props.isHireLink, props.airlineCode);\n umAnaMileageClubURL = MKTaxiClass.MKTaxiANAMileageClubURL(umTaxiUrl, props.airportCode);\n }\n\n let [isAgree, setIsAgree] = useState(true);\n const umText = MKTaxiClass.switchTextUmQuery(umQuery);\n const privacyUrl = 'https://www.ana.co.jp/ja/jp/guide/terms/privacy/'\n\n const onClose = () => {\n props.isSetOpen(false);\n dispatch(switchIsShowUMModal(false));\n }\n return (\n <>\n {/* // Modalコンãƒãƒ¼ãƒãƒ³ãƒˆã®ã€ŒdisableAutoFocusã€ã€ŒdisableEnforceFocusã€ã®2オプションをè¨å®šã—ã¦ã„ãªã„å ´åˆã€\n // é¸æŠžçŠ¶æ…‹ã®é’æž ãŒè¡¨ç¤ºã•ã‚Œã¦ã—ã¾ã†ãŸã‚オプションをè¨å®šã—ã¦ã„る。 */}\n <Modal open={isShowUMModal} disableAutoFocus disableEnforceFocus>\n <div className={classes.paper}>\n <ModalHeader\n handleClose={onClose}\n title=\"「車ã„ã™å¯¾å¿œè»Šä¸¡ã€ã®ã‚¿ã‚¯ã‚·ãƒ¼æ‰‹é…\"\n />\n <div className={classes.container}>\n <Grid container spacing={2} direction=\"column\">\n <Grid item>\n <Typography className={classes.quesText}>\n 車両手é…ã‚’è¡Œã†ã«ã‚ãŸã‚Šã€ANAã®èˆªç©ºåˆ¸äºˆç´„時ã«ã”登録ã„ãŸã ã„ãŸä»¥ä¸‹ã€Œã‚µãƒãƒ¼ãƒˆæƒ…å ±ã€ã‚’ã€MKタクシーã«å…±æœ‰ã—ã¦ã‚‚よã„ã§ã™ã‹ï¼Ÿ\n </Typography>\n </Grid>\n <Grid item className={classes.subContainer}>\n <AppBar position=\"static\" color=\"primary\" className={classes.bar}>\n <Toolbar >ã”登録内容</Toolbar>\n </AppBar>\n <Grid item className={classes.list}>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.ds1.map((ds1) => {\n return <li className={classes.listStyle} key={ds1}>{ds1}</li>\n })}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 車ã„ã™ã¯æŠ˜ã‚Šç•³ã¿å¼ã§ã‚ã‚‹\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.ds3}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 車ã„ã™ã®ç¨®é¡ž\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.ds4}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 奥行\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umQuery.ds6? umQuery.ds6:'-'}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 横幅\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umQuery.ds7? umQuery.ds7:'-'}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 高ã•\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umQuery.ds8? umQuery.ds8:'-'}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 車ã„ã™ã‚µã‚¤ã‚ºå˜ä½\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.ds9}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n é‡é‡\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umQuery.ds10? umQuery.ds10:'-'}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 車ã„ã™é‡é‡å˜ä½\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.ds11}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 介助者åŒè¡Œæœ‰ç„¡\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.um1}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n 乗車予定人数\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.um2}\n </Typography>\n </Toolbar>\n </AppBar>\n <AppBar position=\"static\" color=\"inherit\">\n <Toolbar variant=\"dense\">\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\n ä¹—è»Šæƒ…å ±\n </Typography>\n </Toolbar>\n <Toolbar variant=\"dense\">\n <Typography color=\"inherit\" component=\"div\">\n {umText.um3}\n </Typography>\n </Toolbar>\n </AppBar>\n </Grid>\n </Grid>\n <Grid item>\n <Link href={privacyUrl} rel=\"noopener\" target=\"_blank\" className={classes.textDecoration}>\n プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼\n </Link>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox color=\"primary\"\n onClick={()=>{\n setIsAgree(!isAgree)\n }}\n />\n }\n className={classes.text}\n label='上記プライãƒã‚·ãƒ¼ãƒãƒªã‚·ãƒ¼ã«åŒæ„ã—ã€ã‹ã¤ã€ä¸Šè¨˜ã€Œã‚µãƒãƒ¼ãƒˆæƒ…å ±ã€ã‚’MKタクシーã«å…±æœ‰ã™ã‚‹' />\n </FormGroup>\n </Grid>\n <Grid item>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onClose}\n className={classes.closeButton}\n >\n <div>é–‰ã˜ã‚‹</div>\n </Button>\n <Button\n disabled={isAgree}\n color=\"primary\"\n variant=\"contained\"\n onClick={()=>{\n dispatch(switchIsShowUMModal(false));\n }}\n className={classes.button}\n >\n <div>åŒæ„ã—ã¦æ¬¡ã¸</div>\n </Button>\n </Grid>\n </Grid>\n </div>\n </div>\n </Modal>\n <MkTaxiService\n price={props.price}\n url={umTaxiUrl}\n isTYO={props.isTYO}\n anaMileageClubURL={umAnaMileageClubURL}\n isShowBarrierFreeImage={true}\n />\n </>\n )\n};\n\nexport default MkTaxiAgreementService;\n","import { Grid, Link, makeStyles, Theme, useMediaQuery } from '@material-ui/core';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { State } from '../../../reducers';\nimport { getTargetAirportName, getTargetTaxiPrice } from '../../../services/mktaxi/data/PriceList';\nimport scClick from '../../common/ScClick';\nimport ButtonOfSection from '../sections/ButtonOfSection';\nimport PopupDialog from '../../common/PopupDialog';\nimport MkTaxiService from '../../ad/OtherServices/MkTaxi/MkTaxiService';\nimport MkTaxiAgreementService from '../../ad/OtherServices/MkTaxi/MkTaxiAgreementService';\nimport MkHireService from '../../ad/OtherServices/MkTaxi/MkHireService';\nimport FlightInfo from '../../../services/ana/models/flightInfo';\nimport DateTime from '../../../utils/dateTime';\nimport MKTaxiClass from '../../../services/mktaxi/util';\nimport Airlines from '../../../utils/Airlines';\nimport { switchIsShowUMModal } from '../../../actions/conditionAction';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport wheelChairLogo from '../sections/images/cc.jpg';\n\ninterface Props {\n /** ãŠè¿Žãˆæ™‚間(タクシー区間ã®å‡ºç™ºæ™‚間) */\n depTime?: Date\n}\n\ninterface MkTaxiReserveButtonProps {\n /** ãŠè¿Žãˆæ™‚間(タクシー区間ã®å‡ºç™ºæ™‚間) */\n depTime?: Date,\n /** UniversalMaaS用MKタクシー予約ボタン㋠*/\n isUniversalMaaS: boolean\n}\n\nexport const useTaxiButtonStyles = makeStyles(() => ({\n summary: {\n color: '#0B308E'\n },\n alink: {\n textDecoration: \"none\"\n },\n wheelChairLogoSmall: {\n maxHeight: \"3em\",\n position: 'absolute',\n right: '5px',\n top: '18px'\n },\n wheelChairLogoMiddle: {\n maxHeight: \"3.5em\",\n position: 'absolute',\n right: '5px',\n top: '15px'\n },\n wheelChairLogoLarge: {\n maxHeight: \"4em\",\n position: 'absolute',\n right: '10px',\n top: '10px'\n },\n arrowForwardIosIcon: {\n paddingTop: \"1em\"\n }\n}));\n\nexport const getMkTaxiModalTitle = (isDepartureGuide: boolean, flightStatus: FlightInfo, airportCode: string) => {\n const airportName = isDepartureGuide ? flightStatus.depAirportName : flightStatus.arrAirportName;\n\n // 表示ã§å‡ºã¦ãる空港ã®å称\n const displayAirportName: string = getTargetAirportName(airportCode, airportName);\n return isDepartureGuide ? `${displayAirportName}ã¾ã§`: `${displayAirportName}ã‹ã‚‰`;\n}\n\nexport const MkTaxiReserveButton: React.FC<MkTaxiReserveButtonProps> = (props: MkTaxiReserveButtonProps) => {\n const dispatch = useDispatch();\n const classes = useTaxiButtonStyles();\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const place = useSelector((state: State) => state.condition.place);\n /** 駅ã™ã±ã‚ã¨ã‹ã‚‰å–å¾—ã—ãŸçµŒè·¯å…¨ä½“。 */\n const courses = useSelector((state: State) => state.condition.course);\n const courseIndex = useSelector((state: State) => state.condition.courseIndex);\n const date = useSelector((state: State) => state.condition.date);\n\n const isSmallSize = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down('xs')\n );\n const isMiddleSize = useMediaQuery((theme: Theme) =>\n theme.breakpoints.down('sm')\n );\n\n const { t } = useTranslation();\n\n if(place === null) {\n return null;\n }\n\n /** TODO: 2021/09/21 今後ã®å‹•å‘ã«ã‚ˆã£ã¦MKãƒã‚¤ãƒ¤ãƒ¼ã‚’éžè¡¨ç¤ºåŒ–ã™ã‚‹ */\n const isShowMKHireServiceString = process.env['REACT_APP_IS_SHOW_MK_HIRE'] as string;\n const isShowMKHireService = isShowMKHireServiceString === 'true';\n const isHireLink = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, false);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode: flightStatus.arrAirportCode;\n const hirePrice = MKTaxiClass.getHirePrice(place, airportCode);\n\n /** ãƒã‚¤ãƒ¤ãƒ¼ã‹ã¤MKãƒã‚¤ãƒ¤ãƒ¼éžè¡¨ç¤ºåŒ–ã®å ´åˆã«ã¯äºˆç´„ボタンを表示ã—ãªã„ */\n if(!isShowMKHireService && isHireLink) {\n return null;\n }\n const hirePriceLabel = (hirePrice === 0)? 'ãŠè¦‹ç©ã‚Š': `${hirePrice.toLocaleString()}円~`;\n if(place === null || courses.length === 0 ) {\n return null;\n }\n /** é¸æŠžã—ã¦ã„る経路。 */\n const course = courses[courseIndex];\n\n /** é¸æŠžã—ã¦ã„る経路ã§æœ€åˆã®Lineè¦ç´ 。 */\n const firstLine = course.Route.Line[0];\n /** é¸æŠžã—ã¦ã„る経路ã®æœ€åˆã®åŒºé–“ã®å‡ºç™ºæ™‚刻。 */\n const firstDepartureTime = new Date(firstLine.DepartureState.Datetime.text);\n\n const price = getTargetTaxiPrice(flightStatus, isDepartureGuide, place, isHireLink);\n if(!price) {\n return null;\n }\n const labels = [\n '空港定é¡ã‚¿ã‚¯ã‚·ãƒ¼',\n `目安 ç´„${price.pay.toLocaleString()}円~`\n ]\n\n if (isHireLink) {\n labels[0] = '空港é€è¿Žãƒã‚¤ãƒ¤ãƒ¼äºˆç´„';\n labels[1] = hirePriceLabel;\n }\n else {\n if (price.isLabelMeter) {\n labels[0] = 'メータータクシー';\n }\n // MKタクシーã®å ´åˆã«ã¯ã€Œãƒžã‚¤ãƒ«ã‚‚ãŸã¾ã‚‹ï¼ã€ã‚’è¿½åŠ \n const unshiftString = t('rideshare_service_button_label_1');\n labels.unshift(unshiftString);\n }\n const scClickName = isHireLink? \"ana-maas_mklimo_button\": \"ana-maas_mk_button\";\n\n /** 予約ボタンã®å³å´ã«è¡¨ç¤ºã™ã‚‹ãƒãƒªã‚¢ãƒ•ãƒªãƒ¼ã‚¢ã‚¤ã‚³ãƒ³ */\n const MKTaxiButtonIcon: React.ReactNode[] = (()=>{\n const wheelChairAlt = '車ã„ã™ãƒžãƒ¼ã‚¯';\n const rightIcons: React.ReactNode[] = [\n <ArrowForwardIosIcon\n className={classes.arrowForwardIosIcon}\n />\n ]\n /** UniversalMaaS用ã§ãªã„å ´åˆã«ã¯è»Šã‚¤ã‚¹ãƒžãƒ¼ã‚¯ã‚’出ã•ãªã„ */\n if(!props.isUniversalMaaS) {\n return rightIcons;\n }\n /** 車椅åアイコンã«é©ç”¨ã™ã‚‹Class */\n const wheelChairLogoClass = (()=>{\n if(isSmallSize) {\n return classes.wheelChairLogoSmall;\n }\n else if(isMiddleSize) {\n return classes.wheelChairLogoMiddle\n }\n return classes.wheelChairLogoLarge\n })()\n rightIcons.push(\n <img\n src={wheelChairLogo}\n alt={wheelChairAlt}\n className={wheelChairLogoClass}\n />\n )\n return rightIcons;\n })()\n\n return (\n <Grid item className={classes.summary} onClick={()=>{\n scClick(scClickName);\n dispatch(switchIsShowUMModal(true));\n }}>\n <Link\n className={classes.alink}\n >\n <ButtonOfSection\n labels={labels}\n cyName='mk_taxi_reserve_button'\n backgroundColor='#fdb409'\n color='#000000'\n endIcon={MKTaxiButtonIcon}\n />\n </Link>\n </Grid>\n )\n}\n\n\n/** MKタクシーã®äºˆç´„モーダルä¸èº« */\nconst MKTaxiReserveBodyComponent: React.FC<Props> = (props: Props) => {\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const place = useSelector((state: State) => state.condition.place);\n const courseIndex = useSelector((state: State) => state.condition.courseIndex);\n const arrivalTimeToAirport = useSelector((state: State) => state.condition.arrivalTimeToAirport);\n /** 駅ã™ã±ã‚ã¨ã‹ã‚‰å–å¾—ã—ãŸçµŒè·¯å…¨ä½“。 */\n const courses = useSelector((state: State) => state.condition.course);\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = useSelector((state: State) => state.condition.targetAirLine);\n const date = useSelector((state: State) => state.condition.date);\n\n if(place === null) {\n return null;\n }\n\n /** é¸æŠžã—ã¦ã„る経路。 */\n const course = courses[courseIndex];\n\n /** é¸æŠžã—ã¦ã„る経路ã§æœ€åˆã®Lineè¦ç´ 。 */\n const firstLine = course.Route.Line[0];\n /** é¸æŠžã—ã¦ã„る経路ã®æœ€åˆã®åŒºé–“ã®å‡ºç™ºæ™‚刻。 */\n const firstDepartureTime = new Date(firstLine.DepartureState.Datetime.text);\n const isHireLink = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, false);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n /** 3æ–‡å—ã®èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ã€‚ */\n const airlineCode = Airlines.getAirlineThreeLetterCode(targetAirline);\n const hirePrice = MKTaxiClass.getHirePrice(place, airportCode);\n const price = getTargetTaxiPrice(flightStatus, isDepartureGuide, place, isHireLink);\n const taxiUrl = MKTaxiClass.getMkTaxiUrl(flightStatus, isDepartureGuide, arrivalTimeToAirport, place, isHireLink, airlineCode);\n const anaMileageClubURL: string = MKTaxiClass.MKTaxiANAMileageClubURL(taxiUrl, airportCode);\n /** TODO: 2021/09/21 今後ã®å‹•å‘ã«ã‚ˆã£ã¦MKãƒã‚¤ãƒ¤ãƒ¼ã‚’éžè¡¨ç¤ºåŒ–ã™ã‚‹ */\n const isShowMKHireServiceString = process.env['REACT_APP_IS_SHOW_MK_HIRE'] as string;\n const isShowMKHireService = isShowMKHireServiceString === 'true';\n\n if(isHireLink && isShowMKHireService) {\n return (\n <MkHireService\n price={hirePrice}\n url={taxiUrl}\n />\n )\n }\n // 定é¡ã‚¿ã‚¯ã‚·ãƒ¼ã®ãƒãƒƒãƒ—アップページ\n return (\n <MkTaxiService\n price={price}\n url={taxiUrl}\n isTYO={MKTaxiClass.isTYO(airportCode)}\n anaMileageClubURL={anaMileageClubURL}\n />\n )\n}\n\n/**\n * UniversalMaaS用MKタクシーボタンコンãƒãƒ¼ãƒãƒ³ãƒˆ\n * @param props\n * @returns\n */\nexport const UniversalMaaSMKTaxiButton: React.FC<Props> = (props: Props) => {\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const place = useSelector((state: State) => state.condition.place);\n const arrivalTimeToAirport = useSelector((state: State) => state.condition.arrivalTimeToAirport);\n /** 駅ã™ã±ã‚ã¨ã‹ã‚‰å–å¾—ã—ãŸçµŒè·¯å…¨ä½“。 */\n const courses = useSelector((state: State) => state.condition.course);\n const courseIndex = useSelector((state: State) => state.condition.courseIndex);\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = useSelector((state: State) => state.condition.targetAirLine);\n const date = useSelector((state: State) => state.condition.date);\n\n /** ãƒãƒªã‚¢ãƒ•ãƒªãƒ¼æƒ…å ±å…±æœ‰åŒæ„ç”»é¢ã®é–‹é–‰ã€‚ */\n const [isOpen, setIsOpen] = React.useState(false);\n\n if(place === null) {\n return null;\n }\n\n /** é¸æŠžã—ã¦ã„る経路。 */\n const course = courses[courseIndex];\n /** é¸æŠžã—ã¦ã„る経路ã§æœ€åˆã®Lineè¦ç´ 。 */\n const firstLine = course.Route.Line[0];\n /** é¸æŠžã—ã¦ã„る経路ã®æœ€åˆã®åŒºé–“ã®å‡ºç™ºæ™‚刻。 */\n const firstDepartureTime = new Date(firstLine.DepartureState.Datetime.text);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n const MkTaxiModalTitle: string = getMkTaxiModalTitle(isDepartureGuide, flightStatus, airportCode);\n const isHireLink = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, false);\n const price = getTargetTaxiPrice(flightStatus, isDepartureGuide, place, isHireLink);\n /** 3æ–‡å—ã®èˆªç©ºä¼šç¤¾ã‚³ãƒ¼ãƒ‰ã€‚ */\n const airlineCode = Airlines.getAirlineThreeLetterCode(targetAirline);\n\n return (\n <PopupDialog\n title={MkTaxiModalTitle}\n openComponent={\n <MkTaxiReserveButton\n depTime={props.depTime}\n isUniversalMaaS={true}\n />\n }\n services={\n <MkTaxiAgreementService\n price={price}\n flightStatus={flightStatus}\n isDepartureGuide={isDepartureGuide}\n arrivalTimeToAirport={arrivalTimeToAirport}\n place={place}\n isHireLink={isHireLink}\n airlineCode={airlineCode}\n airportCode={airportCode}\n isTYO={MKTaxiClass.isTYO(airportCode)}\n isOpen={isOpen}\n isSetOpen={setIsOpen}\n />\n }\n isBanner={false}\n isOpen={isOpen}\n isSetOpen={setIsOpen}\n />\n )\n}\n\n/**\n * 通常ã®MKタクシーボタンコンãƒãƒ¼ãƒãƒ³ãƒˆ\n * @param props\n * @returns\n */\nexport const MKTaxiButton: React.FC<Props> = (props: Props) => {\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n\n const MkTaxiModalTitle: string = getMkTaxiModalTitle(isDepartureGuide, flightStatus, airportCode);\n return (\n <PopupDialog\n title={MkTaxiModalTitle}\n openComponent={\n <MkTaxiReserveButton\n depTime={props.depTime}\n isUniversalMaaS={false}\n />\n }\n services={\n <MKTaxiReserveBodyComponent\n depTime={props.depTime}\n />\n }\n isBanner={false}\n />\n )\n}","import { Grid, Link, makeStyles, Theme, useMediaQuery } from '@material-ui/core';\nimport * as React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { State } from '../../../reducers';\nimport { getTargetAirportName, getTargetTaxiPrice } from '../../../services/mktaxi/data/PriceList';\nimport NearMeDialog from '../../ad/OtherServices/NearMe/NearMeDialog';\nimport ButtonOfSection from '../sections/ButtonOfSection';\nimport PopupDialog from '../../common/PopupDialog';\nimport FlightInfo from '../../../services/ana/models/flightInfo';\nimport DateTime from '../../../utils/dateTime';\nimport SagaAirportTaxi from '../../ad/OtherServices/SagaAirportTaxi';\nimport ButtonSagaAirportTaxi from '../../ad/OtherServices/SagaAirportTaxi/Button';\nimport { TaxiFareSummary } from '../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { TaxiReserversButton } from './TaxiReserversButton';\nimport MKTaxiClass from '../../../services/mktaxi/util';\nimport NearMeModalButton from '../../ad/OtherServices/NearMe/NearMeModalButton';\nimport { convertStringToTaxiCompany, TaxiCompanyList } from \"../../../services/taxi/GetDirectionAndFare/models/getFareSamplesParams\";\nimport { CommonTaxiUtils } from \"../../ad/OtherServices/CommonTaxi/CommonTaxiDateUtils\";\nimport { MKTaxiButton, UniversalMaaSMKTaxiButton } from './UniversalMaaSMKTaxiButton';\nimport Environment from '../../../utils/environment';\nimport { toLuxonDateTimeFronJSDate } from '../../../utils/luxonUtil';\n\ninterface Props {\n // ãŠè¿Žãˆæ™‚間(タクシー区間ã®å‡ºç™ºæ™‚間)。\n depTime?: Date\n}\n\nexport const useTaxiButtonStyles = makeStyles(() => ({\n summary: {\n color: '#0B308E'\n },\n section: {\n display: 'inline-block',\n marginRight: '10px'\n },\n alink: {\n textDecoration: \"none\"\n },\n buttonSagaAirportTaxi: {\n margin: '5px 0px',\n }\n}));\n\nexport const getMkTaxiModalTitle = (isDepartureGuide: boolean, flightStatus: FlightInfo, airportCode: string) => {\n const airportName = isDepartureGuide ? flightStatus.depAirportName : flightStatus.arrAirportName;\n\n // 表示ã§å‡ºã¦ãる空港ã®å称\n const displayAirportName: string = getTargetAirportName(airportCode, airportName);\n return isDepartureGuide ? `${displayAirportName}ã¾ã§`: `${displayAirportName}ã‹ã‚‰`;\n}\n\n/**\n * MKタクシー・ãƒã‚¤ãƒ¤ãƒ¼ã®ãƒœã‚¿ãƒ³ãƒªãƒ³ã‚¯ã«é–¢ã™ã‚‹ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆ\n * タクシーã®è·é›¢ãƒ»æ‰€è¦æ™‚é–“ãªã©ã®æ¦‚è¦æƒ…å ±ã¯ TaxiSummary ã«ã¦è¡¨ç¤ºã™ã‚‹\n * @param props\n */\nconst TaxiReserversAllButtons: React.FC<Props> = (props: Props) => {\n const classes = useTaxiButtonStyles();\n\n // const dispatch = useDispatch();\n const flightStatus = useSelector((state: State) => state.condition.flightStatus);\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const place = useSelector((state: State) => state.condition.place);\n const { t } = useTranslation();\n /** Reduxã«ä¿å˜ã—ãŸã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘æƒ…å ±ã®ä¸€è¦§ */\n const taxiFareSummaries = useSelector((state: State) => state.condition.taxiFareSummaries);\n /** Add 2022.10.12 タクシー会社è¨å®š */\n const taxiCompanyConfigurations = useSelector((state: State) => state.general.taxiCompanyConfigurations);\n /** UniversalMaaSQuery */\n const umQuery = useSelector((state: State) => state.general.universalMaaSQuery);\n /** 市区町æ‘ã¾ã§ã®ä½æ‰€ã€‚ */\n const address = place ? place.prefecture + place.city : '';\n /** ç·¯åº¦ã€‚ï¼ˆåœ°ç‚¹æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã¯nullを代入ã™ã‚‹ã€‚) */\n const lat = place ? Number.parseFloat(place.lat) : null;\n /** çµŒåº¦ã€‚ï¼ˆåœ°ç‚¹æƒ…å ±ãŒå˜åœ¨ã—ãªã„å ´åˆã¯nullを代入ã™ã‚‹ã€‚) */\n const lng = place ? Number.parseFloat(place.lng) : null;\n /** ãƒãƒªã‚¢ãƒ•ãƒªãƒ¼æƒ…å ±ãƒ•ãƒ©ã‚°ã€‚ */\n const isShowBarrierFreeInfo = useSelector((state: State) => state.general.mode.isShowBarrierFreeInfo);\n try {\n const [openNearMeDialog, setOpenNearMeDialog] = React.useState(false);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n\n if(place === null) {\n return null;\n }\n\n const isHireLink = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, false);\n /** TODO: 2021/09/21 今後ã®å‹•å‘ã«ã‚ˆã£ã¦MKãƒã‚¤ãƒ¤ãƒ¼ã‚’éžè¡¨ç¤ºåŒ–ã™ã‚‹ */\n const isShowMKHireServiceString = process.env['REACT_APP_IS_SHOW_MK_HIRE'] as string;\n const isShowMKHireService = isShowMKHireServiceString === 'true';\n\n /** ダイアãƒã‚°ã‚’é–‰ã˜ã‚‹å ´åˆ */\n const handleClose = () => {\n setOpenNearMeDialog(false);\n };\n\n const flightDate = flightStatus.getFlightTimeDate(isDepartureGuide);\n const isTYO = MKTaxiClass.isTYO(airportCode);\n // MKタクシーã¨MKãƒã‚¤ãƒ¤ãƒ¼ã§è¡¨ç¤ºã™ã‚‹ãƒªãƒŸãƒƒãƒˆæ™‚刻ãŒé•ã†ã®ã§åˆ¤å®šæ¡ä»¶ã‚’求ã‚ã¦ãŠã\n const isShowDate = (()=>{\n if(isHireLink) {\n return DateTime.isMkHire(flightDate)\n }\n return isTYO? DateTime.isMkTaxiTYO(flightDate): DateTime.isMkTaxi(flightDate);\n })()\n /** MKタクシーã®äºˆç´„ボタンを出ã™ã‹ã®åˆ¤å®š */\n const isShowMKTaxiButton: boolean = (() => {\n if(!isShowDate) {\n return false;\n }\n if(isHireLink && !isShowMKHireService) {\n return false;\n }\n return true;\n })();\n\n /** UniversalMaaS用MKタクシーボタンを表示ã™ã‚‹ã‹ */\n const isShowUniversalMaaSMKTaxi = (() => {\n if(!isShowBarrierFreeInfo) {\n return false;\n }\n const airportCode = isDepartureGuide? flightStatus.depAirportCode: flightStatus.arrAirportCode;\n /**\n * æ–°åƒæ³ç©ºæ¸¯ã®å ´åˆ:\n * 1. ds3=1ã§ã‚ã‚‹ã“ã¨\n *\n * 伊丹/ç¦å²¡ç©ºæ¸¯ã®å ´åˆ:\n * 1. ds1=1or2or3ã§ã‚ã‚‹ã“ã¨\n */\n switch(airportCode) {\n case 'CTS':\n case 'SPK':\n return umQuery.dr3 === '1';\n case 'ITM':\n case 'FUK':\n // ds1クエリä¸ã«1, 2, 3ãŒå«ã¾ã‚Œã‚‹å ´åˆtrueã«ã™ã‚‹\n return (umQuery.ds1 || '').split(\"_\").some((x)=>{\n return ['1','2','3'].includes(x)\n });\n default:\n return false;\n }\n })();\n\n // タクシー予約ボタン複数表示対応(ç¦å³¶ç©ºæ¸¯å°‚用)\n const isFukusimApirport = airportCode === \"FKS\";\n // タクシー予約ボタン表示ãƒã‚§ãƒƒã‚¯ï¼ˆTaxiReserversButton.tsxより抽出)\n const checkTaxiButton = (props: { fee: TaxiFareSummary, depTime?: Date }) => {\n /** 対象ã®ä¼šç¤¾ */\n const company: TaxiCompanyList | null = convertStringToTaxiCompany(props.fee.companyCode)\n if(company === null || taxiCompanyConfigurations === undefined) {\n return null;\n }\n\n const taxiCompanyConfiguration = taxiCompanyConfigurations[company];\n const limit = taxiCompanyConfiguration.limit;\n /** 対象ã¨ãªã‚‹ç©ºæ¸¯å */\n const targetAirport = isDepartureGuide? flightStatus.depAirportCode: flightStatus.arrAirportCode;\n const commonTaxiUtils = new CommonTaxiUtils(limit.limitDays, limit.limitHours, company, targetAirport);\n\n /** タクシーãŒåˆ©ç”¨å¯èƒ½ã‹ã‚’判別ã™ã‚‹ */\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã€åˆ©ç”¨å¯èƒ½ã¨ã—ã¦æ‰±ã†ã€‚\n // 1. ã“ã®çµŒè·¯ãŒã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã‹ã¤ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æƒ…å ±ï¼ˆéŽåŽ»ã®æ¤œç´¢ï¼‰ã§ã¯ãªã„ã“ã¨ã€‚\n // 2. ç¾åœ¨æ—¥æ™‚ãŒã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„å¯èƒ½ãªæ—¥ä»˜ï¼ˆæä¹—æ—¥ã®Xæ—¥å‰ã®XX時よりå‰ï¼‰ã§ã‚ã‚‹ã“ã¨ã€‚\n // 3. 日本語版ã§ã‚ã‚‹ã“ã¨ã€‚\n // 料金や座標・出発時刻・Placeæƒ…å ±ãŒå–ã‚Œãªã„時ã«ã¯ãƒœã‚¿ãƒ³ã‚’出ã•ãªã„\n if(props.fee === undefined || lat === null || lng === null || place === null || !props.depTime) {\n return null;\n }\n // 予約å¯èƒ½ãªæ—¥ä»˜ã§ãªã„å ´åˆã«ã¯å‡ºã•ãªã„\n const isAvalableDateTaxi = commonTaxiUtils.isAvalable(\n toLuxonDateTimeFronJSDate(\n flightStatus.getFlightTimeDate(isDepartureGuide)\n )\n );\n if(!isAvalableDateTaxi) {\n return null;\n }\n // 料金をå–å¾—ã§ããªã„å ´åˆã«ã¯å‡ºã•ãªã„\n if(!props.fee.fareInfo.totalValue) {\n return null;\n }\n return true;\n }\n\n // タクシー予約ボタン表示件数\n const taxiButtonCount = (() => {\n const buttonStatus = taxiFareSummaries.map((taxiFareSummary:TaxiFareSummary )=>{\n return checkTaxiButton({ fee: taxiFareSummary, depTime: props.depTime})\n })\n return buttonStatus.filter((v) => v===true).length\n })();\n\n // (ç¦å³¶ç©ºæ¸¯å°‚用)最低定é¡é‹è³ƒã‚¿ã‚¯ã‚·ãƒ¼æŠ½å‡º\n const minFareTaxi = (() => {\n if(isFukusimApirport){\n return taxiFareSummaries.filter((v)=>v.fareInfo.fareType=='fixed')\n .reduce((v1: TaxiFareSummary, v2: TaxiFareSummary)=>{\n return (v1.fareInfo.totalValue<v2.fareInfo.totalValue) ? v1 : v2\n })\n }\n return null\n })()\n\n // (ç¦å³¶ç©ºæ¸¯å°‚用)複数タクシー予約ボタンã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒœã‚¿ãƒ³\n const FukusimaAirportTaxiButtonComponent: React.FC = () => {\n return (\n <Link\n className={classes.alink}\n >\n <ButtonOfSection\n cyName=\"button_fixed_taxies\"\n backgroundColor='#fdb409'\n color='#000000'\n labels={[t('taxi:noriai_taxi_reserve'), `${minFareTaxi?.fareInfo.fareLabel}`]}\n />\n </Link>\n )\n }\n\n // タクシー予約ボタン\n const TaxiButtonsComponent: React.FC<{popupMode?: boolean}> = (myProps: {popupMode?: boolean}) => {\n if (myProps.popupMode) {\n // Popup表示内容\n return (\n <div style={{\n width:\"100%\",\n height:\"auto\",\n display:\"flex\",\n flexDirection:\"column\",\n justifyContent:\"center\"\n }}\n >\n <div>\n <p>\n ãŠä¸€äººæ§˜ã‹ã‚‰ã®äºˆç´„制ã§ã€è‡ªå®…や会社ã¨ç©ºæ¸¯é–“ã‚’é€è¿Žã—ã¾ã™ï¼ˆç¦å³¶çœŒå¤–ã¯æŒ‡å®šå ´æ‰€ã¨ç©ºæ¸¯é–“ã‚’é€è¿Žï¼‰ã€‚\n </p>\n </div>\n <div style={{ border:\"2px solid #ddd\", width:\"calc(100% - 30px)\", padding:\"12px\" }}>\n <p>\n タクシー会社をé¸æŠžã—ã€äºˆç´„ã«ãŠé€²ã¿ãã ã•ã„。\n </p>\n {taxiFareSummaries.map((taxiFareSummary:TaxiFareSummary, idx: number)=>(\n <div key={idx}>\n <TaxiReserversButton\n fee={taxiFareSummary}\n depTime={props.depTime}\n displayTaxiCompany={true}\n labelFare=\"予約ã¸é€²ã‚€\"\n />\n </div>\n ))}\n </div>\n <div>\n <p>\n (ï¼ï¼‰ã”注æ„<br/>\n <br/>\n ・é‹è³ƒã¯ã€å¤§äººãƒ»åã©ã‚‚åŒé¡ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・è¦æˆ’区域ç‰ã€ä¸€éƒ¨é€šè¡Œã§ããªã„地域ãŒã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€äºˆç´„状æ³ã«ã‚ˆã£ã¦ã¯ã€ãŠè¿Žãˆã®å ´æ‰€ãƒ»æ™‚間を予ã‚指定ã•ã›ã¦ã„ãŸã ãå ´åˆãŒã‚ã‚‹ä»–ã€ã”予約をãŠå—ã‘ã§ããªã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚詳ã—ãã¯ã€é‹è¡Œä¼šç¤¾ã«ãŠå•åˆã›ä¸‹ã•ã„。<br/>\n ・ã”予約をã‚ャンセルã™ã‚‹å ´åˆã¯ã€å‰æ—¥ã¾ã§ã«ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾ã¸ç›´æŽ¥ã”連絡をãŠé¡˜ã„ã—ã¾ã™ã€‚当日ã€ãŠè¿Žãˆã«ä¸ŠãŒã£ã¦ã‹ã‚‰ã®ã‚ャンセルã¯ã€é‹è³ƒã®å…¨é¡ã‚’ãŠæ”¯æ‰•ã„ã„ãŸã ãã“ã¨ã¨ãªã‚Šã¾ã™ã€‚\n </p>\n </div>\n </div>\n )\n } else {\n // ボタン1ã¤ã®å ´åˆ\n return (\n <>\n {taxiFareSummaries.map((taxiFareSummary:TaxiFareSummary, idx: number)=> {\n // 本番環境ã‹ã¤ dummyValãªã‚‰è¿”ã•ãªã„\n const env = process.env['REACT_APP_STAGE_ENV'] || 'dev';\n const isProd = Environment.isProduction(env);\n if(isProd && taxiFareSummary.companyCode === TaxiCompanyList.dummyVal) {\n return null;\n }\n return (\n <div key={idx}>\n <TaxiReserversButton\n fee={taxiFareSummary}\n depTime={props.depTime}\n // ボタンã«ã‚¿ã‚¯ã‚·ãƒ¼ä¼šç¤¾åãŒå¿…è¦ãªã‘ã‚Œã°ä»¥ä¸‹ã‚’falseã«ã™ã‚‹\n displayTaxiCompany={false}\n />\n </div>\n )\n })}\n </>\n )\n }\n }\n return (\n <Grid container direction='column' data-cy={\"taxi_reserve_all_button\"} >\n {/* UniversalMaaS用 MKタクシーã®äºˆç´„ボタン */}\n { (isShowUniversalMaaSMKTaxi && isShowMKTaxiButton) &&\n <UniversalMaaSMKTaxiButton\n depTime={props.depTime}\n />\n }\n {/* NearMeã®ãƒœã‚¿ãƒ³ */}\n <NearMeModalButton\n setOpenNearMeDialog={setOpenNearMeDialog}\n />\n {/** NearMe用ã®ãƒ€ã‚¤ã‚¢ãƒã‚° */}\n <NearMeDialog\n openDialog={ openNearMeDialog }\n onClose={ handleClose }\n />\n {/* MKタクシーã®äºˆç´„ボタン */}\n { (!isShowUniversalMaaSMKTaxi && isShowMKTaxiButton) &&\n <MKTaxiButton\n depTime={props.depTime}\n />\n }\n {/* ä½è³€ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼ã®è¡¨ç¤ºæ¡ä»¶ã‚’満ãŸã™å ´åˆã®ã¿ã€ãƒœã‚¿ãƒ³ã‚’表示ã™ã‚‹ã€‚ */}\n { SagaAirportTaxi.isDisplayable(flightStatus.getFlightTimeDate(isDepartureGuide), address, lat, lng) && (\n <div className={classes.buttonSagaAirportTaxi}>\n <ButtonSagaAirportTaxi />\n </div>\n )\n }\n {/* 予約ãŒã§ãるタイプã®ã‚¿ã‚¯ã‚·ãƒ¼äºˆç´„ボタン */}\n {/** イースタン・宮交タクシー・宇部山電 */}\n { /* Del 2022.10.12 (既å˜ãƒã‚¸ãƒƒã‚¯å‰Šé™¤ï¼‰-----------\n taxiFareSummaries.map((taxiFareSummary:TaxiFareSummary, idx: number)=>{\n return (\n <div key={idx}>\n <TaxiReserversButton\n fee={taxiFareSummary}\n depTime={props.depTime}\n />\n </div>\n )\n })}*/}\n\n {/* Add 2022.10.12 ----------------------------- */}\n {\n (isFukusimApirport && taxiButtonCount > 1) ?\n // ç¦å³¶ç©ºæ¸¯ã‚¿ã‚¯ã‚·ãƒ¼ãƒœã‚¿ãƒ³å‡¦ç†\n <PopupDialog\n title=\"ç¦å³¶ç©ºæ¸¯ä¹—åˆã‚¿ã‚¯ã‚·ãƒ¼ï¼ˆäºˆç´„制)\"\n openComponent={<FukusimaAirportTaxiButtonComponent />}\n services={<TaxiButtonsComponent popupMode={true} />}\n isBanner={false}\n />\n :\n // 通常タクシーボタン処ç†\n <TaxiButtonsComponent />\n }\n </Grid>\n )\n }\n catch (e){\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n return <></>\n }\n};\n\nexport default TaxiReserversAllButtons;\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { createStyles, Grid, Link, makeStyles, Typography } from '@material-ui/core';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ServiceDetail, { SearviceDetailButton } from '../../../common/PopupDialog/ServiceDetail';\nimport Type from '../../../common/PopupDialog/Type';\nimport { TaxiPrice } from '../../../../services/mktaxi/data/PriceList';\nimport { isKeyDownEnter, TabIndexList } from '../../../../utils/tabIndexList';\nimport KyotoImage from '../../../ad/Banners/images/MkTaxi/popup/mktaxi_kyoto_service.jpg'\nimport MkTaxiLogo from '../../../ad/Banners/images/MkTaxi/mktaxi_logo.png';\nimport { State } from '../../../../reducers';\nimport { format } from 'date-fns';\nimport DateTime from '../../../../utils/dateTime';\n\ninterface Props {\n price?: TaxiPrice\n}\n\ninterface ImageProps {\n maxWidth: string,\n width: string,\n height?: string,\n maxHeight?: string,\n src: string\n}\n\nconst useStyles = makeStyles(() =>\n createStyles({\n mileAreaStyle: {\n width: '100%',\n marginTop: \"5px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n mileAreaBottomStyle: {\n width: '100%',\n marginTop: \"40px\",\n marginBottom: \"5px\",\n padding: \"0px 5px\",\n fontSize: '0.875rem'\n },\n linkStyle: {\n fontWeight: 'bold',\n textDecoration: 'underline'\n }\n }),\n);\n\nconst MkTaxiKyotoService: React.FC<Props> = (props: Props) => {\n const classes = useStyles();\n const isDepartureGuide = useSelector((state: State) => state.condition.isDepartureGuide);\n const flight = useSelector((state: State) => state.condition.flightStatus);\n /** フライトã®æ—¥ä»˜ */\n const flightDate = flight.getFlightTimeDate(isDepartureGuide);\n const flightDateString = format(flightDate, 'yyyyMMdd');\n /** ãƒã‚°ã‚¤ãƒ³ãƒ»éžãƒã‚°ã‚¤ãƒ³ç”¨ã®é·ç§»URLã‚’è¨å®šã™ã‚‹ */\n const normalURL = `https://secure.mk-group.co.jp/iframe/ana/lp-sight.html?fldate=${flightDateString}`;\n const loginParams = {\n domid: 'se_lp',\n seUrl: normalURL,\n companyid: 'mktourism'\n }\n const loginBaseURL = {\n test: 'https://stg.test.cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp',\n prod: 'https://cam.ana.co.jp/psz/fwd/jsp/login_cooperation/shareEcoLoginJa.jsp'\n }\n const loginURL = `${loginBaseURL.prod}?${new URLSearchParams(loginParams)}`;\n /** ãƒã‚°ã‚¤ãƒ³ãƒ»éžãƒã‚°ã‚¤ãƒ³ç”¨ã®é·ç§»URLã‚’è¨å®šã“ã“ã¾ã§ */\n\n const [displayCoupon, setDisplayCoupon] = React.useState<React.ReactNode[]> ([]);\n\n /** 種別・料金è¨å®šã®éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const TitleType: React.FC<Props> = (props: Props) => {\n const priceTitle = '観光貸切タクシー';\n return (\n <Type\n name={priceTitle}\n pricing={'3時間スタンダード車両 18,200円〜'}\n priceNotice=\"※ã”予約ã®æ™‚é–“ãŒ30分å˜ä½ã§ã€ã”指定ã„ãŸã ã‘ã¾ã™\"\n priceNoticeSecond=\"※モデルコースã¯ã€æ™‚é–“ã«å¿œã˜ãŸæ–™é‡‘ã¨ãªã£ã¦ã„ã¾ã™ã€‚\"\n />\n )\n };\n\n /** クーãƒãƒ³éƒ¨åˆ†ï¼ˆã¾ãŸã¯ãŠå¾—ãªæƒ…å ±éƒ¨åˆ†ï¼‰ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const Coupon: React.FC<Props> = (props: Props) => {\n return (\n <Typography component=\"p\" style={{ color: \"#ff0000\", fontWeight: 'bold', border: 'solid #ff0000 1px', padding: \"0px 5px\"}} data-cy={\"mktaxi-coupon-double-mile\"}>\n 下記期間ã«ã”乗車ã„ãŸã ã„ãŸãŠå®¢æ§˜ã«ç©ç®—マイルãŒï¼•å€ã«ãªã‚‹ã‚ャンペーン実施ï¼<br/>\n <span style={{ paddingLeft: \"10px\" }}>期間:2022å¹´12月19日(月)~2023å¹´2月28日(ç«ï¼‰</span><br/>\n <span style={{ fontSize: '0.8rem' }}> ※今後もåŒæ§˜ã®ã‚ャンペーンを実施ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™</span>\n </Typography>\n )\n }\n\n const Description: React.FC = () => {\n return (\n <Typography color=\"primary\" variant=\"subtitle2\" component=\"p\" style={{ marginBottom: \"5px\", padding: \"0px 5px\" }}>\n ・京都を知り尽ãã—ãŸãƒ‰ãƒ©ã‚¤ãƒãƒ¼ãŒã”案内。ãŠå®¢æ§˜ã®ã€Œã—ãŸã„ã€ã‚’å¶ãˆã€æ—…ã®å¿«é©ã¨ç´ 敵ãªæƒ³ã„出を約æŸã—ã¾ã™ã€‚<br/>\n ・時間内ã§ã‚ã‚Œã°æ–™é‡‘ã¯ä¸€å®šã®å®šé¡æ–™é‡‘。\n </Typography>\n );\n }\n\n /** 注æ„äº‹é …éƒ¨åˆ†ã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã€‚ */\n const Notes: React.FC = () => {\n return (\n <Typography color=\"primary\" variant=\"subtitle2\" component=\"p\" style={{ marginBottom: \"5px\", padding: \"0px 5px\" }}>\n ã”予約ã«ã¤ã„ã¦ã¯ã€ä¸‹è¨˜ã™ã¹ã¦ã®äº‹é …ã«ã”åŒæ„ã„ãŸã ã„ãŸã‚‚ã®ã¨ã—ã¦å–り扱ã‚ã›ã¦ã„ãŸã ãã¾ã™ã€‚<br/>\n ・ã”予約ã¯ã”利用2æ—¥å‰17:00ã¾ã§ã®å—付ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・ãŠå–消ã«ã¤ã„ã¦ã¯ã”利用å‰æ—¥18:00ã¾ã§ç„¡æ–™ã€18:00以é™ã¯å…¨é¡ã”請求ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・観光車両ã¯å°æ•°ã«é™ã‚ŠãŒã”ã–ã„ã¾ã™ã€‚予約リクエストãŒå®Œäº†ã—ã¦ã‚‚予約ãŒç¢ºå®šã—ãŸã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。MKã‹ã‚‰ã®ã€Œç¢ºå®šãƒ¡ãƒ¼ãƒ«ã€ã‚’ã‚‚ã£ã¦äºˆç´„ã®ç¢ºå®šã¨ã—ã¦ã„ã¾ã™ã€‚ã‚らã‹ã˜ã‚ã”了承ãã ã•ã„。<br/>\n ・ã”予約ã®éš›ã«ã”希望ã®ãŠæ™‚間を入力ã—ã¦ãã ã•ã„。ãŸã ã—ã€ãŠå¯ºã®æ‹è¦³ã‚„å„æ–½è¨ã§ã®è¦‹å¦ã‚’å«ã¾ã‚Œã‚‹å ´åˆã¯é–‰é–€åˆã¯é–‰é¤¨æ™‚é–“ã«é–“ã«åˆã†ã‚ˆã†ã«çµ‚了時間をè¨å®šã—ã¦ãã ã•ã„。<br/>\n ・英会話ドライãƒãƒ¼ã‚’ã”希望ã•ã‚Œã‚‹å ´åˆã¯ã€ãã®æ—¨å‚™è€ƒæ¬„ã«ã”記入ãã ã•ã„。 但ã—ã€1時間ã«ã¤ã1,000円ã®æ‰‹æ•°æ–™ãŒè¿½åŠ ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・英語以外ã®å¤–国語ドライãƒãƒ¼ï¼ˆä¸å›½èªžãƒ»éŸ“国語・フランス語)ã¯ã€åˆ¥é€”指åæ–™2,000å††ã‚’é ‚ãã¾ã™ã€‚<br/>\n ・æ‹è¦³æ–™ãƒ»é§è»Šæ–™ãƒ»é«˜é€Ÿä»£ç‰ã¯ã€ä¸Šè¨˜ã¨ã¯åˆ¥é€”ãŠå®¢æ§˜ã®ã”è² æ‹…ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・車内ç¦ç…™åŠã³ã€è»Šå†…ã§ã®é£²é£Ÿã¯ã”é æ…®ã„ãŸã ã„ã¦ãŠã‚Šã¾ã™ã€‚<br/>\n ・観光案内å¯èƒ½æ™‚é–“ã¯7:00~19:00ã¾ã§ã¨ãªã‚Šã¾ã™ã€‚<br/><br/>\n <ã‚ャンセルãƒãƒªã‚·ãƒ¼ï¼ž<br/>\n ・ã”利用å‰æ—¥18:00ã¾ã§ç„¡æ–™ã€18:00以é™ã¯å…¨é¡ã”請求ã¨ãªã‚Šã¾ã™ã€‚<br/>\n (ã”利用å‰æ—¥18:00以é™ã®ãŠæ™‚é–“çŸç¸®ã«ã¤ã„ã¦ã‚‚ã€å¤‰æ›´å‰ã®ãŠæ™‚é–“ã§ã®ã”請求ã¨ãªã‚Šã¾ã™ã€‚)<br/>\n ・ã”利用å‰æ—¥18:00以é™ã€åˆã¯å½“æ—¥ã«ãŠè¿Žãˆæ™‚é–“ã‚’æ—©ã‚られãŸå ´åˆã¯ã€ã§ãã‚‹é™ã‚Šã®å¯¾å¿œã¨ãªã‚Šã¾ã™ã€‚<br/><br/>\n ・ãã®ä»–観光貸切ã«é–¢ã™ã‚‹è©³ç´°ã«ã¤ãã¾ã—ã¦ã¯ã€ã‚¨ãƒ ã‚±ã‚¤æ ªå¼ä¼šç¤¾ã®ãƒ›ãƒ¼ãƒ ページよりã”確èªãã ã•ã„。\n </Typography>\n );\n }\n\n const NoticeMileUp: React.FC = () => {\n return (\n <Grid container className={classes.mileAreaStyle} style={{ color: '#002596' }}>\n <Grid item style={{ fontWeight: 'bold'}}>\n ANAマイレージクラブã«ãƒã‚°ã‚¤ãƒ³ã—ã¦é€²ã‚“ã§ã„ãŸã ãã¨ãƒžã‚¤ãƒ«ãŒè²¯ã¾ã‚Šã¾ã™ï¼<br/>\n </Grid>\n </Grid>\n )\n }\n\n const NoticeMileDown: React.FC = () => {\n const mileContactURL = \"https://www.ana.co.jp/ja/jp/site-help/share/contact/mileage_top.htm\";\n const [hyde, setHyde] = useState(true);\n const onClick = () => { setHyde(!hyde); }\n return (\n <Grid container className={classes.mileAreaBottomStyle} data-cy=\"mxtaxi-notice-area\" style={{ color: '#002596' }}>\n <Grid item xs={12} style={{ fontWeight: 'bold', textAlign: 'center' }}>\n マイルã«é–¢ã™ã‚‹ã”注æ„(必ãšã”確èªãã ã•ã„)<br/>\n </Grid>\n {!hyde &&\n <>\n <Grid item xs={12}>\n ・本ページを経由ã—ã¦ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã‚’ã”入力後ã€MKタクシーウェブサイトã«ã¦äºˆç´„・乗車・支払ã„完了ã•ã‚ŒãŸå ´åˆã«ã€ã€Œ200円(税込)ã«ã¤ã1マイルã€ã‚’ç©ç®—ã„ãŸã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯ã€ã”利用ã«ãªã‚‰ã‚Œã¦ã‚‚マイルã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。\n </Grid>\n <Grid item xs={12}>\n ・マイルã¯ã”利用後約1~2カ月後ã«ãŠå®¢æ§˜ã®ãƒžã‚¤ãƒ«å£åº§ã«ç©ç®—ã•ã‚Œã¾ã™ã€‚\n </Grid>\n <Grid item xs={12}>\n ・ã”予約æˆç«‹å¾Œã«äºˆç´„ã‚’ã‚ャンセルã•ã‚ŒãŸå ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。ã¾ãŸã€å¤‰æ›´ãƒ»å–り消ã—手数料ã¯ãƒžã‚¤ãƒ«ç©ç®—ã®å¯¾è±¡å¤–ã¨ãªã‚Šã¾ã™ã€‚<br/>\n ・ã”入力ã„ãŸã ã„ãŸANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã¨ã”å義人ãŒç•°ãªã‚‹å ´åˆã¯ã€ãƒžã‚¤ãƒ«ã¯ç©ç®—ã•ã‚Œã¾ã›ã‚“。<br/>\n ・ã”予約完了後ã®ANAマイレージクラブ会員ãŠå®¢æ§˜ç•ªå·ã®è¨‚æ£ã€äº‹å¾Œç™»éŒ²ã¯ãŠå—ã‘ã§ãã¾ã›ã‚“ã®ã§ã€ãŠç”³ã—è¾¼ã¿ã®éš›ã¯ã”注æ„ãã ã•ã„。<br/>\n ・ANAマイレージクラブã«é–¢ã™ã‚‹ãŠå•ã„åˆã‚ã›ã¯<Link href={mileContactURL} target=\"_blank\" className={classes.linkStyle}>ã“ã¡ã‚‰</Link>ã‹ã‚‰ã€‚\n </Grid>\n </>\n }\n <Grid item style={{ width: '100%', textAlign: 'center' }}>\n {hyde?\n <ExpandMoreIcon\n onClick={onClick}\n tabIndex={TabIndexList.MK_TAXI_MILE_NOTILE}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n onClick();\n })\n }\n }\n data-cy=\"mktaxi-expand-more-button\"\n />:\n <ExpandLessIcon\n onClick={onClick}\n tabIndex={TabIndexList.MK_TAXI_MILE_NOTILE}\n onKeyDown={\n (e) => {\n isKeyDownEnter(e, () => {\n onClick();\n })\n }\n }\n />\n }\n </Grid>\n </Grid>\n )\n }\n\n const button: SearviceDetailButton[] = [\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ã¦äºˆç´„ã«é€²ã‚€\"],\n url: loginURL,\n scClickName: \"ana-maas_mktourismhire_book\",\n backgroundColor: '#FDB509'\n },\n {\n label: [\"ANAマイレージクラブã«\", \"ãƒã‚°ã‚¤ãƒ³ã—ãªã„ã§äºˆç´„ã«é€²ã‚€\"],\n url: normalURL,\n scClickName: \"ana-maas_mktourismhire_book\",\n backgroundColor: '#FECF60'\n }\n ];\n\n const SetImage: React.FC<ImageProps> = (props: ImageProps) => {\n return (\n <div style={{ height: props.height, maxHeight: props.maxHeight }}>\n <img src={props.src} alt=\"サービス概è¦\" style={{ maxWidth: props.maxWidth, width: props.width }}/>\n </div>\n );\n }\n\n /** 表示ã™ã‚‹ã‚¯ãƒ¼ãƒãƒ³ã‚’組ã¿ç«‹ã¦ã‚‹ */\n React.useEffect(() => {\n /** 通常ã®ã‚¯ãƒ¼ãƒãƒ³ã‚’表示ã™ã‚‹ */\n setDisplayCoupon([]);\n }, []);\n\n return <ServiceDetail\n coupon={displayCoupon}\n description={<Description/>}\n button={button}\n image={\n <SetImage\n src={KyotoImage}\n maxWidth=\"519px\"\n width=\"100%\"\n height=\"65vw\"\n maxHeight=\"350px\"\n />\n }\n logo={\n <SetImage\n src={MkTaxiLogo}\n maxWidth=\"468px\"\n width=\"100%\"\n />\n }\n notes={<Notes/>}\n type={<TitleType {...props}/>}\n isMileArea={true}\n noticeMileUp={\n <NoticeMileUp />\n }\n noticeMileDown={\n <NoticeMileDown />\n }\n />\n};\n\nexport default MkTaxiKyotoService;\n","import React from \"react\";\nimport FlightInfo from \"../../services/ana/models/flightInfo\";\nimport { Lang } from \"../../states/query\";\nimport DateTime from \"../../utils/dateTime\";\nimport { isSameDay, isToday } from 'date-fns';\nimport Place from \"../../services/google/Place\";\nimport MkTaxi from \"./Banners/MkTaxi\";\nimport { getTargetTaxiPrice } from \"../../services/mktaxi/data/PriceList\";\nimport { ResTokyoLimousineBusFormat } from \"../../services/tokyolimousinebus/api\";\nimport MKTaxiClass from \"../../services/mktaxi/util\";\nimport { Box, Grid, GridList, GridListTile } from \"@material-ui/core\";\nimport { UniversalMaaSQuery } from \"../../states/universalMaaSQuery\";\nimport { isJapanese } from \"../../utils/lang\";\n\ninterface DisplayADBodyProps {\n nodes: React.ReactNode[],\n showBannerMax: number\n}\n\n/**\n * 指定ã—ãŸè¡¨ç¤ºä»¶æ•°ã®åºƒå‘Šã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã‚’抽出ã™ã‚‹\n * @param nodes\n * @param showBannerMax\n */\nexport const DisplayAdBody: React.FC<DisplayADBodyProps> = (props: DisplayADBodyProps) => {\n // å…ˆé ã®è¡¨ç¤ºä»¶æ•°ã‚’抽出ã™ã‚‹\n const nodes: React.ReactNode[] = props.nodes.slice(0, props.showBannerMax);\n return (\n <>\n {nodes.map((node, id)=>{\n return (\n <div key={id}>\n {node}\n </div>\n )\n })}\n </>\n )\n}\n\nexport const DisplayRectangleAdBody: React.FC<DisplayADBodyProps> = (props: DisplayADBodyProps) => {\n // å…ˆé ã®è¡¨ç¤ºä»¶æ•°ã‚’抽出ã™ã‚‹\n const nodes: React.ReactNode[] = props.nodes.slice(0, props.showBannerMax);\n return (\n <Grid item xs={4} lg={3} style={{ maxWidth: 315 }}>\n <Box style={{ height: \"100%\", margin: \"0 0 0 15px\" }}>\n <GridList cellHeight=\"auto\" cols={1} spacing={0}>\n {nodes.map((node, id) => {\n return (\n <GridListTile key={id}>\n { node }\n </GridListTile>\n )\n })}\n </GridList>\n </Box>\n </Grid>\n )\n}\n\n/** ANAããŸåŒ—æµ·é“フリーパスãƒãƒŠãƒ¼ã‚’出ã™ã‹ã‚’判定ã™ã‚‹é–¢æ•° */\n/** TODO: ç¾åœ¨éžè¡¨ç¤º:å‰Šé™¤æ¤œè¨Žä¸ */\nexport const isDisplayJRHokkaidoNorthFreePass = (isDepartureGuide: boolean, airportCode: string, arrivalDate: Date, lang: Lang) => {\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n // 1. 到ç€æ¡ˆå†…ã§ã‚ã‚‹ã“ã¨\n // 2. æ–°åƒæ³ç©ºæ¸¯ãƒ»ç¨šå†…空港・æ—å·ç©ºæ¸¯ã‚’到ç€ã¨ã™ã‚‹ä¾¿ã§ã‚ã‚‹ã“ã¨\n // 3. 日付ãŒ20201/03/31 以å‰ã§ã‚ã‚‹ã“ã¨\n // 4. 言語ãŒæ—¥æœ¬èªžç‰ˆã®ã¿ã§ã‚ã‚‹ã“ã¨\n\n // 1. 到ç€æ¡ˆå†…ã§ã‚ã‚‹ã“ã¨\n if(isDepartureGuide) {\n return false;\n }\n // 2. æ–°åƒæ³ç©ºæ¸¯ã‚’発ç€ã¨ã™ã‚‹ä¾¿ã§ã‚ã‚‹ã“ã¨\n // 表示ã™ã‚‹ç©ºæ¸¯ãƒªã‚¹ãƒˆ\n const showAirportCodeList = ['CTS', 'SPK', 'AKJ', 'WKJ'];\n if(!showAirportCodeList.includes(airportCode)) {\n return false;\n }\n // 3. 日付ãŒ20201/03/31 以å‰ã§ã‚ã‚‹ã“ã¨\n return false;\n // 4. 言語ãŒæ—¥æœ¬èªžç‰ˆã®ã¿ã§ã‚ã‚‹ã“ã¨\n return lang === Lang.ja;\n}\n\n/**\n * 宮崎MaaSãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param flightStatus ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param lang 表示ã™ã‚‹è¨€èªž\n */\nexport const isDisplayMiyazakiMaasBanner = (flightStatus: FlightInfo, lang: Lang) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 1. 日本語版ã®ã¿ã§ã‚ã‚‹ã“ã¨\n * 2. 宮崎空港ç€ã¨ã™ã‚‹ã“ã¨\n */\n if(lang !== Lang.ja) {\n return false;\n }\n return flightStatus.arrAirportCode === \"KMI\";\n}\n\n/**\n * 庄内空港カーシェアãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param flightStatus ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param lang 表示ã™ã‚‹è¨€èªž\n */\nexport const isDisplayShonaiCarShare = (flightStatus: FlightInfo, lang: Lang) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 1. 日本語版ã®ã¿ã§ã‚ã‚‹ã“ã¨\n * 2. 羽田空港発・庄内空港ç€ã¨ã™ã‚‹ã“ã¨\n */\n if(lang !== Lang.ja) {\n return false;\n }\n return flightStatus.depAirportCode === 'HND' && flightStatus.arrAirportCode === \"SYO\";\n}\n\n/**\n * æ±äº¬ãƒªãƒ ジンãƒã‚¹ã®ãƒãƒŠãƒ¼ãƒ»ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•°\n * @param flightStatus ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param busData リムジンãƒã‚¹ã®æƒ…å ±\n * @param isDepartureGuide 出発案内ã‹\n */\nexport const isDisploayTokyoLimousineBusLink = (flightStatus: FlightInfo, busData: ResTokyoLimousineBusFormat, isDepartureGuide: boolean) => {\n const busDepDate: Date = new Date(Number(busData.depTime)*1000);\n const flightArrDate: Date = flightStatus.getFlightTimeDate(false);\n return DateTime.isAbleToReserveTokyoLimousineBus(busDepDate, !isDepartureGuide, flightArrDate);\n}\n\n/**\n * MKタクシーã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹\n * @param place ãƒ¦ãƒ¼ã‚¶æŒ‡å®šåœ°ç‚¹æƒ…å ±\n * @param course é¸æŠžä¸ã®çµŒè·¯\n * @param firstDepartureTime 最åˆã®åŒºé–“ã®å‡ºç™ºæ™‚刻\n * @param isDepartureGuide 出発案内ã‹\n */\nexport const displayMkTaxiBanner = (place: Place | null, firstDepartureTime: Date, flightStatus: FlightInfo, isDepartureGuide: boolean): React.ReactNode | null => {\n const isHire = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, true);\n // MKãƒã‚¤ãƒ¤ãƒ¼ã®å ´åˆã«ã¯è¡¨ç¤ºã—ãªã„\n if(isHire || !place) {\n return null;\n }\n \n const flightDate = flightStatus.getFlightTimeDate(isDepartureGuide);\n const airportCode = isDepartureGuide? flightStatus.depAirportCode : flightStatus.arrAirportCode;\n const isTYO = MKTaxiClass.isTYO(airportCode);\n const isShowDateTYO = DateTime.isMkTaxiTYO(flightDate);\n // ãƒãƒŠãƒ¼è¡¨ç¤ºæœ‰åŠ¹æœŸé–“外ã®å ´åˆã«ã¯ä½•ã‚‚表示ã—ãªã„\n const isShowOtherAirportDate = DateTime.isMkTaxi(flightDate);\n const isShowDate = isTYO? isShowDateTYO: isShowOtherAirportDate;\n if(!isShowDate) {\n return null;\n }\n // // 国際線到ç€ã®ã¨ãã«ã¯è¡¨ç¤ºã—ãªã„\n // if(!flightStatus.isDomestic && !isDepartureGuide) {\n // return null;\n // }\n const price = getTargetTaxiPrice(flightStatus, isDepartureGuide, place, isHire);\n if (price) {\n return (\n <MkTaxi\n flightInfo={flightStatus}\n />\n )\n }\n return null;\n}\n\n/**\n * MKãƒã‚¤ãƒ¤ãƒ¼ã®ãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹\n * @param place ãƒ¦ãƒ¼ã‚¶æŒ‡å®šåœ°ç‚¹æƒ…å ±\n * @param course é¸æŠžä¸ã®çµŒè·¯\n * @param firstDepartureTime 最åˆã®åŒºé–“ã®å‡ºç™ºæ™‚刻\n * @param isDepartureGuide 出発案内ã‹\n */\nexport const displayMkHireBanner = (place: Place | null, firstDepartureTime: Date, flightStatus: FlightInfo, isDepartureGuide: boolean): React.ReactNode | null => {\n const isHire = MKTaxiClass.isHireCar(flightStatus, isDepartureGuide, true);\n // MKタクシーã®å ´åˆã®ã¿è¡¨ç¤ºã™ã‚‹\n if(!isHire || !place) {\n return null;\n }\n\n const isShowDate = DateTime.isMkHire(firstDepartureTime);\n // ãƒãƒŠãƒ¼è¡¨ç¤ºæœ‰åŠ¹æœŸé–“外ã®å ´åˆã«ã¯ä½•ã‚‚表示ã—ãªã„\n if(!isShowDate) {\n return null;\n }\n // 到ç€æ¡ˆå†…ã®ã¿è¡¨ç¤ºã™ã‚‹\n if(isDepartureGuide) {\n return null;\n }\n const price = getTargetTaxiPrice(flightStatus, isDepartureGuide, place, isHire);\n if (price) {\n return (\n <MkTaxi\n flightInfo={flightStatus}\n />\n )\n }\n return null;\n}\n\n/** æ乗便ãŒæ¬ 航ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚ */\nconst isCanceled = (flightInfo: FlightInfo, date: Date) => {\n // フォーム上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã¨ä¸€è‡´ã™ã‚‹ï¼ˆãƒ•ã‚©ãƒ¼ãƒ 上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã§é‹èˆªæƒ…å ±ãŒå–å¾—ã§ãã¦ã„る)ã€ã‹ã¤æ¬ 航ã§ã‚ã‚‹å ´åˆã€‚\n return isSameDay(flightInfo.eta, date) && flightInfo.isCanceled();\n}\n\n/** dr4=HNDã‹ã¤ç¾½ç”°åˆ°ç€ã®å ´åˆã«ã¯ç‰¹å®šã®ãƒãƒŠãƒ¼ã‚’éžè¡¨ç¤ºã«ã™ã‚‹ */\nexport const isHiddenHNDArrival = (universalMaaSQuery: UniversalMaaSQuery, flightStatus: FlightInfo) => {\n return universalMaaSQuery.dr4 === 'HND' && flightStatus.arrAirportCode === 'HND';\n}\n\n/**\n * レンタカーãƒãƒŠãƒ¼ã®è¡¨ç¤ºæ¡ä»¶ã‚’満ãŸã™ã‹ã‚’判別ã™ã‚‹é–¢æ•°ã€‚\n * @param lang è¨€èªžæƒ…å ±\n * @param isDomestic 国内線化\n * @param flightInfo ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param date ãƒ¦ãƒ¼ã‚¶ãƒ¼æŒ‡å®šæ—¥ä»˜æƒ…å ±\n * @param um UniversalMaaS用クエリ\n * @returns\n */\nexport const isDisplayRentalCar = (lang: Lang, isDomestic: boolean, flightInfo: FlightInfo, date: Date, um: UniversalMaaSQuery) => {\n // 下記ã®4ã¤ã®æ¡ä»¶ã‚’満ãŸã™ã“ã¨ã€‚(2022/05/17 ç¾åœ¨ã€‚)\n // 1.空港アクセスナビãŒæ—¥æœ¬èªžç‰ˆã§ã‚ã‚‹ã“ã¨ã€‚\n // 2.指定ã•ã‚ŒãŸä¾¿åãŒå›½å†…ç·šã§ã‚ã‚‹ã“ã¨ã€‚\n // 3.指定ã•ã‚ŒãŸä¾¿åã§æƒ…å ±ãŒå–å¾—ã§ãã¦ã„ã‚‹ã“ã¨ã€‚\n // 4.フォーム上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ãŒç¿Œæ—¥ä»¥é™ã§ã‚ã‚‹ã“ã¨ã€‚\n // 5.フォーム上ã®æ—¥ä»˜ã§é‹èˆªæƒ…å ±ã‚’å–å¾—ã§ãã¦ã„ã‚‹å ´åˆã€é‹èˆªäºˆå®šã§ã‚ã‚‹ï¼ˆæ¬ èˆªã§ã¯ãªã„)ã“ã¨ã€‚\n // 6. dr4=HNDã‹ã¤åˆ°ç€ç©ºæ¸¯ãŒç¾½ç”°ã§ã¯ãªã„ã“ã¨\n return lang === Lang.ja && isDomestic && flightInfo.hasData && DateTime.isAfterToday(date) && !isCanceled(flightInfo, date) && !isHiddenHNDArrival(um, flightInfo);\n}\n\n/** 沖縄ãƒã‚¹ã®åºƒå‘Šè¡¨ç¤ºã‚’ã™ã‚‹ã‹ã‚’判定ã™ã‚‹é–¢æ•° */\nexport const isDisplayOkinawaBus = (lang: Lang, isDepartureGuide: boolean, date: Date, isShowOkinawaBusLink: boolean) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™ã“ã¨\n * 1. 入力ã•ã‚ŒãŸåœ°ç‚¹ãŒæ²–縄ãƒã‚¹ã®ãƒã‚¹åœã®è¿‘ãã§ã‚ã‚‹ã“ã¨ï¼ˆçµæžœã¯isShowOkinawaBusLinkã«æ ¼ç´æ¸ˆï¼‰\n * 2. 到ç€æ¡ˆå†…ã§ã‚ã‚‹ã“ã¨\n * 3. 那覇空港到ç€ä¾¿ã§ã‚ã‚‹ã“ã¨ï¼ˆæœªç¢ºèªï¼‰\n * 4. 日本語版ã§ã‚ã‚‹ã“ã¨\n * 5. 日付ãŒç•°å¸¸å€¤ã§ãªã„ã“ã¨\n * 6. 3ヶ月å‰ã®åŒæ—¥ã€œå‰æ—¥ã¾ã§ã®é–“ã§ã‚ã‚‹ã“ã¨\n */\n // 2. 到ç€æ¡ˆå†…ã§ã‚ã‚‹ã“ã¨\n if(isDepartureGuide) {\n return false;\n }\n // 4. 日本語版ã§ã‚ã‚‹ã“ã¨\n if(lang !== Lang.ja) {\n return false;\n }\n // 5. 日付ãŒç•°å¸¸å€¤ã§ãªã„ã“ã¨\n if(DateTime.isInvalidDate(date)) {\n return false;\n }\n // 6. 3ヶ月å‰ã®åŒæ—¥ã€œå‰æ—¥ã¾ã§ã®é–“ã§ã‚ã‚‹ã“ã¨\n if(!DateTime.isShowOkinawaBusBanner(date)) {\n return false;\n }\n // 1. 入力ã•ã‚ŒãŸåœ°ç‚¹ãŒæ²–縄ãƒã‚¹ã®ãƒã‚¹åœã®è¿‘ãã§ã‚ã‚‹ã“ã¨\n return isShowOkinawaBusLink;\n}\n\n/** Airporter沖縄ã®è¡¨ç¤ºæ¡ä»¶ã‚’満ãŸã™ã‹ã‚’判別ã™ã‚‹é–¢æ•° */\nexport const isDisplayAirporterOkinawa = (flightStatus: FlightInfo, lang: Lang) => {\n // 以下ã®4ã¤ã®æ¡ä»¶ã‚’満ãŸã™ã“ã¨ã€‚(2021/11/08 ç¾åœ¨ï¼‰\n // 1.那覇空港発ç€ã®å ´åˆ\n // 2-1. 空港→ホテルã®é…é€ã®å ´åˆã€é‚£è¦‡ç©ºæ¸¯ã«14:00ã¾ã§ã«åˆ°ç€ã™ã‚‹ä¾¿ã§ã‚ã‚‹ã“ã¨(2021/11/08æ›´æ–°)\n // 2-2. ホテル→空港ã®é…é€ã®å ´åˆã€é‚£è¦‡ç©ºæ¸¯17:30以é™å‡ºç™ºä¾¿ã§ã‚ã‚‹ã“ã¨\n // 3-1. 翌日以é™ã®æ乗便ã®å ´åˆã§ã‚ã‚‹ã“ã¨\n // 3-2. 今日ã®æ乗便ã‹ã¤ç©ºæ¸¯â†’ホテルã®é…é€ã®å ´åˆã€ç¾åœ¨æ™‚刻ãŒ14:00以å‰ã§ã‚ã‚‹ã“ã¨(2022/03/22æ›´æ–°)\n // 3-3. 今日ã®æ乗便ã‹ã¤ãƒ›ãƒ†ãƒ«â†’空港ã®é…é€ã®å ´åˆã€ç¾åœ¨æ™‚刻ãŒ10:30以å‰ã§ã‚ã‚‹ã“ã¨\n // 4. (暫定:英語版ãƒãƒŠãƒ¼ãŒæ¥ã‚‹ã¾ã§) 日本語版ã®å ´åˆ\n const now = new Date();\n const airportCodeList = [ flightStatus.depAirportCode, flightStatus.arrAirportCode ];\n /** 空港→ホテルã®é…é€ï¼ˆæ²–縄到ç€ä¾¿ï¼‰ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isAirportToHotel = flightStatus.arrAirportCode === 'OKA';\n /** フライト日時。(「空港→ホテルã€ã®é…é€ã®å ´åˆã¯ãƒ•ãƒ©ã‚¤ãƒˆåˆ°ç€æ™‚é–“ã€ã€Œãƒ›ãƒ†ãƒ«â†’空港ã€ã®é…é€ã®å ´åˆã¯ãƒ•ãƒ©ã‚¤ãƒˆå‡ºç™ºæ™‚é–“ã‚’è¨å®šã™ã‚‹ã€‚) */\n const flightDate = isAirportToHotel ? flightStatus.getFlightArrivalDate() : flightStatus.getFlightDepartureDate();\n // 1.那覇空港発ç€ã®å ´åˆ\n if( !airportCodeList.includes('OKA') ) {\n return false;\n }\n if( isAirportToHotel ) {\n // 2-1. 空港→ホテルã®é…é€ã®å ´åˆã€é‚£è¦‡ç©ºæ¸¯ã«14:00ã¾ã§ã«åˆ°ç€ã™ã‚‹ä¾¿ã§ã‚ã‚‹ã“ã¨(2021/11/08æ›´æ–°)\n if( flightDate.getHours() > 14 || (flightDate.getHours() === 14 && flightDate.getMinutes() > 0) ) {\n return false;\n }\n } else {\n // 2-2. 那覇空港17:30以é™å‡ºç™ºä¾¿\n if( flightDate.getHours() < 17 || (flightDate.getHours() === 17 && flightDate.getMinutes() < 30) ) {\n return false;\n }\n }\n // 3-1. 翌日以é™ã®æ乗便ã®å ´åˆ\n if(DateTime.isBeforeToday(flightDate)) {\n return false;\n }\n // 3-2. 今日ã®æ乗便ã‹ã¤ç©ºæ¸¯â†’ホテルã®é…é€ã®å ´åˆã€ç¾åœ¨æ™‚刻ãŒ14:00以å‰ã§ã‚ã‚‹ã“ã¨(2022/03/22æ›´æ–°)\n if(isToday(flightDate)) {\n if(isAirportToHotel) {\n if( now.getHours() > 14 || (now.getHours() === 14 && now.getMinutes() > 0)) {\n return false;\n }\n } else {\n // 3-3. 今日ã®æ乗便ã‹ã¤ãƒ›ãƒ†ãƒ«â†’空港ã®é…é€ã®å ´åˆã€ç¾åœ¨æ™‚刻ãŒ10:30以å‰ã§ã‚ã‚‹ã“ã¨\n if( now.getHours() > 10 || (now.getHours() === 10 && now.getMinutes() > 30)) {\n return false;\n }\n }\n }\n // 4. (暫定:英語版ãƒãƒŠãƒ¼ãŒæ¥ã‚‹ã¾ã§) 日本語版ã®å ´åˆ\n if(lang !== Lang.ja) {\n return false;\n }\n return true;\n}\n\n/**\n * 北谷MaaSã®ãƒãƒŠãƒ¼è¡¨ç¤ºåˆ¤å®šæ¡ä»¶\n * @param place ãƒ¦ãƒ¼ã‚¶æŒ‡å®šåœ°ç‚¹æƒ…å ±\n * @param flightStatus ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param lang è¨€èªžæƒ…å ±\n * @returns\n */\nexport const isDisplayChatanMaasBanner = (isDepartureGuide: boolean, place: Place, flightStatus: FlightInfo, lang: Lang) => {\n // 以下ã®4ã¤ã®æ¡ä»¶ã‚’満ãŸã™ã“ã¨ã€‚(2021/11/2 ç¾åœ¨ï¼‰\n // 1. 那覇空港ç€ã®å ´åˆ\n // 2-1. 那覇空港→目的地(ä½æ‰€ãŒåŒ—谷町)ã¾ã§ã®çµŒè·¯æ¤œç´¢\n // 2-2. 那覇空港→目的地(ä½æ‰€ãŒåŒ—谷町)ã¾ã§ã®çµæžœä¸€è¦§ç”»é¢\n // 2-3. 那覇空港→目的地(ä½æ‰€ãŒåŒ—谷町)ã¾ã§ã®çµæžœè©³ç´°ç”»é¢\n // 3. 日本語版ã®å ´åˆ\n\n // 1. 到ç€æ¡ˆå†…ã§ã‚ã‚‹ã“ã¨\n if(isDepartureGuide) {\n return false;\n }\n\n /** 沖縄到ç€ä¾¿ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚ */\n const isArrAirportOKA = flightStatus.arrAirportCode === 'OKA';\n if(!isArrAirportOKA) {\n return false;\n }\n\n /** 2. 目的地ã«åŒ—谷町ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã©ã†ã‹ */\n const isArrPlaceOfChatan = (place.prefecture.includes('沖縄県') && place.city.includes('北谷町'));\n if(!isArrPlaceOfChatan) {\n return false;\n }\n\n // 3. 日本語版ã®å ´åˆ\n return lang === Lang.ja;\n}\n\n/**\n * ANAä¿é™ºãƒãƒŠãƒ¼ã‚’表示ã™ã‚‹ã‹åˆ¤å®š\n * @param lang è¨€èªžæƒ…å ±\n * @param flightInfo ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param um UMã‚¯ã‚¨ãƒªæƒ…å ±\n * @returns\n */\nexport const isDisplayANAInsurance = (lang: Lang, flightInfo: FlightInfo, um: UniversalMaaSQuery) => {\n return isJapanese(lang) && !isHiddenHNDArrival(um, flightInfo);\n}\n","// ANAããŸåŒ—æµ·é“フリーパス関連ã®å®šæ•°ã‚’扱ã†Class\nclass ShowJRHookaidoNorthFreePass {\n // 使用ã™ã‚‹è·¯ç·šä¸€è¦§\n static showLineList = [\n 5, // JR函館本線(å°æ¨½ï¼æ—å·)\n 9, // JRåƒæ³ç·š(è‹«å°ç‰§ï¼æœå¹Œ)\n 10, // JRåƒæ³ç·š(æ–°åƒæ³ç©ºæ¸¯ï¼å—åƒæ³)\n 11, // JR石å‹ç·š(å—åƒæ³ï¼æ–°å¾—)\n 13, // JR室è˜æœ¬ç·š(長万部ï¼å²©è¦‹æ²¢)\n 16, // JR留èŒæœ¬ç·š\n 17, // JR富良野線\n 18, // ï¼ªï¼²æ ¹å®¤æœ¬ç·š\n 20, // JR宗谷本線\n 21 // JR石北本線\n ];\n // フリーパス区間外ã®é§…一覧\n static outOfFreePassStationList = [\n // ï¼ªï¼²æ ¹å®¤æœ¬ç·šï¼ˆå¸ƒéƒ¨ã€œé‡§è·¯ï¼‰\n 20422, 20589, 20252, 20119, 20465, 20031, 20100, 20275, 20349, 20542, 20571, 20301, 20392, 20440, 20105, 20219, 20532, 20351, 20033, 20347, 20359, 20282, 20061, 20022, 20111, 20506, 20262, 20399, 20232, 20097, 20267, 20279, 20177,\n // JRåƒæ³ç·š(æ¤è‹—-è‹«å°ç‰§)\n 20053, 20425, 20352,\n // JR石å‹ç·š(å·ç«¯ï¼æ–°å¾—)\n 20142, 20307, 20281, 20251, 20353, 20275,\n // JR石北本線(å—永山-網走)\n 20555, 20459, 20163, 20216, 20344, 20229, 20029, 20007, 20369, 20004, 20028, 20342, 20129, 20261, 20538, 20295, 20068, 20584, 20032, 20030, 29320, 20607, 20006, 20458, 20395, 20168, 20439, 20047, 20311, 20457, 20495, 20415, 20569, 20602, 20025,\n // JR室è˜æœ¬ç·š(安平ï¼é•·ä¸‡éƒ¨)\n 20026, 20453, 20340, 20425, 20352, 20008, 20045, 20394, 20225, 20260, 20438, 20170, 20308, 20194, 20433, 20354, 20525, 20616, 20475, 20577, 20214, 20192, 20541, 20167, 20313, 20381, 20055, 20345, 20357, 20072, 20610, 20198, 20241, 20089\n ];\n // 目的地リスト\n static arrStationList = [\n 20274, // æ–°åƒæ³ç©ºæ¸¯\n 20553, // å—åƒæ³\n 20220, // æœå¹Œ\n 20098, // å°æ¨½\n 20069, // 追分\n 20052, // 岩見沢\n 20306, // æ»å·\n 20499, // æ·±å·\n 20012, // æ—å·\n 20490, // 美瑛\n 20504, // 富良野\n 20608, // ç•™èŒ\n 20612, // 稚内\n ]\n}\n\nexport default ShowJRHookaidoNorthFreePass;\n","/**\n * JRä¹å·žã®è·¯ç·šã‚³ãƒ¼ãƒ‰ä¸€è¦§\n */\nexport const JRKyushuLineList: number[] = [\n 233, // JRä¹å·žæ–°å¹¹ç·š\n 234, // JR山陽本線(下関ï¼é–€å¸)\n 235, // JR鹿å…島本線(é–€å¸æ¸¯ï¼å…«ä»£)\n 236, // JR鹿å…島本線(å·å†…ï¼é¹¿å…島)\n 237, // JR香椎線\n 240, // JRç¦åŒ—ゆãŸã‹ç·š\n 241, // JR三角線\n 242, // JR肥薩線\n 244, // JR指宿枕崎線\n 245, // JR長崎本線\n 246, // JR長崎本線(喜々津ï¼é•·ä¸Žï¼æµ¦ä¸Š)\n 247, // JRå”津線\n 248, // JRç‘肥線(姪浜ï¼è¥¿å”æ´¥)\n 249, // JRç‘肥線(西å”æ´¥ï¼ä¼Šä¸‡é‡Œ)\n 250, // JRä½ä¸–ä¿ç·š\n 251, // JR大æ‘ç·š\n 252, // JR久大本線\n 254, // JR豊肥本線\n 256, // JR日豊本線\n 257, // JR日田彦山線\n 258, // JR日å—ç·š\n 259, // JR宮崎空港線\n 261, // JRå‰éƒ½ç·š\n 263, // JR若æ¾ç·š\n 264, // JR原田線\n 265 // JR後藤寺線\n];\n\nexport const JRKyushuTrainList: {[key: string]: string[]} = {\n ja: [\n \"有明\",\n \"ã‹ã‚‚ã‚\",\n \"ã¿ã©ã‚Š\",\n \"ãƒã‚¦ã‚¹ãƒ†ãƒ³ãƒœã‚¹\",\n \"ã«ã¡ã‚Šã‚“\",\n \"ソニック\",\n \"ゆãµ\",\n \"ゆãµã„ã‚“ã®æ£®\",\n \"ãらã‚ã\",\n \"ãã‚Šã—ã¾\",\n \"ã²ã‚…ã†ãŒ\",\n \"ã‹ã„ãŠã†\",\n \"ã‚ãã¼ãƒ¼ã„ï¼\",\n \"SL人å‰\",\n \"ã²ã‹ã‚Š\",\n \"ã®ãžã¿\",\n \"ã“ã ã¾\",\n \"ã•ãら\",\n \"ã¿ãšã»\",\n \"快速 有田陶器市\",\n \"ã¤ã°ã‚\",\n \"ä¹å·žæ¨ªæ–特急\",\n \"ã¯ã‚„ã¨ã®é¢¨\",\n \"ã„ã•ã¶ã‚ã†\",\n \"ã—ã‚“ãºã„\",\n \"指宿ã®ãŸã¾ã¦ç®±\",\n \"ã„ã•ã¶ã‚ã†\",\n \"ã—ã‚“ãºã„\",\n \"ã‹ã‚ã›ã¿ã€€ã‚„ã¾ã›ã¿\",\n \"ãらã‚ã\",\n \"ランタンã‹ã‚‚ã‚\",\n \"海幸山幸\",\n \"有田陶器市ã¿ã©ã‚Š\",\n \"マリン・パノラマ\",\n \"マリンライナï¼\",\n \"é›·é³¥\",\n \"ã³ã‚ã“エクスプレス\",\n \"ã—らã•ãŽ\",\n \"ã¾ã„ã¥ã‚‹\",\n \"ã¯ã‚‹ã‹\",\n \"ãã‚ã—ãŠ\",\n \"スーパーãã‚ã—ãŠ\",\n \"オーシャンアãƒãƒ¼\",\n \"ã¯ã—ã ã¦\",\n \"タンゴディスカãƒãƒªãƒ¼\",\n \"タンゴエクスプãƒãƒ¼ãƒ©ãƒ¼\",\n \"文殊\",\n \"ãã®ã•ã\",\n \"北近畿\",\n \"ã¯ã¾ã‹ãœ\",\n \"スーパーã„ãªã°\",\n \"ã‚„ãã‚‚\",\n \"スーパーã¾ã¤ã‹ãœ\",\n \"スーパーãŠã\",\n \"ã†ãšã—ãŠ\",\n \"å—風\",\n \"ã†ãšã—ãŠã‚¢ãƒ³ãƒ‘ンマン\",\n \"ビジãƒã‚¹ã‚µãƒ³ãƒ€ãƒ¼ãƒãƒ¼ãƒ‰\",\n \"ã²ã \",\n \"SLå±±å£\",\n \"瀬戸内マリンビュー\",\n \"ããŸãã«\",\n \"ã¿ã™ãšæ½®å½©\",\n \"SL北ã³ã‚ã“\",\n \"ã“ã†ã®ã¨ã‚Š\",\n \"å—風アンパンマン\",\n \"å—ç´€\",\n \"ユニãƒãƒ¼ã‚µãƒ«ã‚¨ã‚¯ã‚¹ãƒ—レス\",\n \"コãƒãƒ«ãƒˆãƒ–ルー\",\n \"ã‚ã¾ã‚‹ã¹ãƒãƒžãƒ³\",\n \"ã‹ã«ã‚«ãƒ‹ã¯ã¾ã‹ãœ\",\n \"スーパーã¯ãã¨\",\n \"タンゴディスカãƒãƒªãƒ¼\",\n \"ãµã‚‹ã•ã¨é›·é³¥\",\n \"阿蘇ゆるã£ã¨åš\",\n \"コンサートãã‚Šã—ã¾\",\n \"コンサートã‹ã‚‚ã‚\",\n \"å±±ç¬ æœ‰æ˜Ž\",\n \"å±±ç¬ ãらã‚ã\",\n \"瀬戸大橋アンパンマン\",\n \"奥出雲ãŠã‚ã¡\",\n \"関門・MUSASHI\",\n \"B&Sã¿ã‚„ã–ã\",\n \"ãŠã¯ã‚ˆã†ãã‚ã—ãŠ\",\n \"能登\",\n \"ãŠã¯ã‚ˆã†ã‚¨ã‚¯ã‚¹ãƒ—レス\",\n \"ãŠã‚„ã™ã¿ã‚¨ã‚¯ã‚¹ãƒ—レス\",\n \"A列車ã§è¡Œã“ã†\",\n \"清盛マリンビュー\",\n \"水戸岡é‹æ²»å¹¸ç¦åˆ—車\",\n \"快速人å‰\",\n \"ä¹åä¹å³¶ã¿ã©ã‚Š\",\n \"官兵衛ãらã‚ã\",\n \"ã—ãŠã‹ãœ\",\n \"サンダーãƒãƒ¼ãƒ‰\",\n \"ダイナスター\",\n \"能登ã‹ãŒã‚Šç«\",\n \"ãƒã‚¦ã‚¹ãƒ†ãƒ³ãƒœã‚¹ï¼£ï¼¤\",\n \"ã‚ãã¼ãƒ¼ã„ï¼\",\n \"らãラクã¯ã‚Šã¾\",\n \"ã‚ã\"\n ],\n en: [\n \"Ariake\",\n \"Kamome\",\n \"Midori\",\n \"HuisTenBosch\",\n \"Nichirin\",\n \"Sonic\",\n \"Yufu\",\n \"Yufuin-No-Mori\",\n \"Kirameki\",\n \"Kirishima\",\n \"Hyuga\",\n \"Kaio\",\n \"Asoboy!\",\n \"SL-Hitoyoshi\",\n \"Hikari\",\n \"Nozomi\",\n \"Kodama\",\n \"Sakura\",\n \"Mizuho\",\n \"Arita-Tokiichi\",\n \"Tsubame\",\n \"Kyushu-Odan-Tokkyu\",\n \"Hayato-No-Kaze\",\n \"Isaburo\",\n \"Shimpei\",\n \"Ibusuki-no-Tamatebako\",\n \"Isaburo\",\n \"Shimpei\",\n \"Kawasemi-Yamasemi\",\n \"Kirameki\",\n \"Lantern-Kamome\",\n \"Umisachi-Yamasachi\",\n \"Arita-Tokiichi-Midori\",\n \"Marine-Panorama\",\n \"Marine-Liner\",\n \"Raicho\",\n \"Biwako-Express\",\n \"Shirasagi\",\n \"Maizuru\",\n \"Haruka\",\n \"Kuroshio\",\n \"Super-Kuroshio\",\n \"Ocean-Arrow\",\n \"Hashidate\",\n \"Tango-Discovery\",\n \"Tango-Explorer\",\n \"Monju\",\n \"Kinosaki\",\n \"Kita-Kinki\",\n \"Hamakaze\",\n \"Super-Inaba\",\n \"Yakumo\",\n \"Super-Matsukaze\",\n \"Super-Oki\",\n \"Uzushio\",\n \"Nanpu\",\n \"Uzushio-Anpanman\",\n \"Business-Thunder-Bird\",\n \"Hida\",\n \"SL-Yamaguchi\",\n \"Setouchi-Marine-View\",\n \"Kitaguni\",\n \"Misuzu-Shiosai\",\n \"SL-Kita-Biwako\",\n \"Kounotori\",\n \"Nanpu-Anpanman\",\n \"Nanki\",\n \"Universal-Express\",\n \"Cobalt-Blue\",\n \"Amarube-Roman\",\n \"Kani-Kani-Hamakaze\",\n \"Super-Hakuto\",\n \"Tango-Discovery\",\n \"Furusato-Raicho\",\n \"Aso-Yuruttohaku\",\n \"Concert-Kirishima\",\n \"Concert-Kamome\",\n \"Yamakasa-Ariake\",\n \"Yamakasa-Kirameki\",\n \"Seto-ohashi-Anpanman\",\n \"Okuizumo-Orochi\",\n \"Kanmon-Musashi\",\n \"B&S Miyazaki\",\n \"Ohayo-Kuroshio\",\n \"Noto\",\n \"Ohayo-Express\",\n \"Oyasumi-Express\",\n \"A-Ressha-de-Iko\",\n \"Kiyomori-Marine-View\",\n \"Mitooka-Eiji-Koufuku-Ressha\",\n \"Hitoyoshi\",\n \"Kujyukushima-Midori\",\n \"Kanbe-Kirameki\",\n \"Shiokaze\",\n \"Thunder-Bird\",\n \"Dinostar\",\n \"Noto-Kagaribi\",\n \"HuisTenBosch-CD\",\n \"Asoboy!\",\n \"Rakuraku-harima\",\n \"36+3\",\n \"Aso\"\n ]\n};\n\nexport const JRKyushuStationList: { [key: string]: {[key: string]: string} } = {\n \"ja\": {\n \"28054\": \"赤間\",\n \"28058\": \"安部山公園\",\n \"28061\": \"è’木\",\n \"28062\": \"飯塚\",\n \"28063\": \"伊賀\",\n \"28064\": \"一貴山\",\n \"28065\": \"æ± å°»\",\n \"28066\": \"石田\",\n \"28067\": \"石原町\",\n \"28074\": \"今宿\",\n \"28075\": \"ã†ãã¯\",\n \"28077\": \"宇島\",\n \"28078\": \"宇美\",\n \"28079\": \"海ノä¸é“\",\n \"28080\": \"浦田\",\n \"28082\": \"æžå…‰\",\n \"28084\": \"æµ·è€æ´¥\",\n \"28088\": \"大野城\",\n \"28093\": \"大牟田\",\n \"28095\": \"奥洞海\",\n \"28097\": \"å°æ³¢ç€¬è¥¿å·¥å¤§å‰\",\n \"28098\": \"折尾\",\n \"28100\": \"é è³€å·\",\n \"28105\": \"香椎\",\n \"28107\": \"香椎神宮\",\n \"28109\": \"春日\",\n \"28112\": \"å‹é‡Ž\",\n \"28113\": \"é–€æ¾\",\n \"28116\": \"åŠ å¸ƒé‡Œ\",\n \"28120\": \"上穂波\",\n \"28121\": \"上三緒\",\n \"28122\": \"香春\",\n \"28124\": \"è‹…ç”°\",\n \"28127\": \"é›ãƒŽå·£\",\n \"28128\": \"ä¹ç”£å¤§å‰\",\n \"28129\": \"ä¹å·žå·¥å¤§å‰\",\n \"28130\": \"教育大å‰\",\n \"28135\": \"城戸å—蔵院å‰\",\n \"28137\": \"銀水\",\n \"28138\": \"朽網\",\n \"28142\": \"éžæ‰‹\",\n \"28144\": \"久留米\",\n \"28145\": \"ä¹éƒŽåŽŸ\",\n \"28146\": \"é»’å´Ž\",\n \"28149\": \"æ¡‚å·ï¼ˆç¦å²¡çœŒï¼‰\",\n \"28152\": \"å¤è³€\",\n \"28155\": \"å°å€‰\",\n \"28156\": \"å°ç«¹\",\n \"28157\": \"å°æ£®æ±Ÿ\",\n \"28162\": \"西戸崎\",\n \"28163\": \"採銅所\",\n \"28164\": \"酒殿\",\n \"28167\": \"ç¯ æ —\",\n \"28168\": \"笹原\",\n \"28171\": \"志井\",\n \"28173\": \"志井公園\",\n \"28174\": \"椎田\",\n \"28176\": \"鹿家\",\n \"28180\": \"下鴨生\",\n \"28181\": \"ä¸‹æ›½æ ¹\",\n \"28182\": \"下山門\",\n \"28184\": \"新飯塚\",\n \"28186\": \"新田原\",\n \"28188\": \"æ–°å…¥\",\n \"28189\": \"新原\",\n \"28190\": \"城野\",\n \"28193\": \"é ˆæµ\",\n \"28194\": \"é ˆæµä¸å¤®\",\n \"28195\": \"周船寺\",\n \"28196\": \"瀬高\",\n \"28197\": \"善導寺\",\n \"28198\": \"添田\",\n \"28201\": \"ç”°å·ä¼Šç”°\",\n \"28202\": \"ç”°å·å¾Œè—¤å¯º\",\n \"28203\": \"竹下\",\n \"28205\": \"田主丸\",\n \"28207\": \"大行å¸\",\n \"28209\": \"大入\",\n \"28211\": \"長者原\",\n \"28212\": \"ç‘後大石\",\n \"28213\": \"ç‘後è‰é‡Ž\",\n \"28214\": \"ç‘後å‰äº•\",\n \"28216\": \"ç‘å‰å²©å±‹\",\n \"28217\": \"ç‘å‰æ¤æœ¨\",\n \"28218\": \"ç‘å‰å†…野\",\n \"28219\": \"ç‘å‰åº„内\",\n \"28220\": \"ç¦å·¥å¤§å‰\",\n \"28221\": \"ç‘å‰å¤§åˆ†\",\n \"28222\": \"ç‘å‰åž£ç”Ÿ\",\n \"28223\": \"ç‘å‰æ·±æ±Ÿ\",\n \"28224\": \"ç‘å‰å‰åŽŸ\",\n \"28225\": \"ç‘å‰å±±å®¶\",\n \"28226\": \"ç‘å‰å±±æ‰‹\",\n \"28230\": \"åƒé³¥\",\n \"28232\": \"築城\",\n \"28237\": \"天é“\",\n \"28238\": \"天æ‹å±±\",\n \"28239\": \"æ±éƒ·\",\n \"28246\": \"戸畑\",\n \"28248\": \"都府楼å—\",\n \"28250\": \"土井\",\n \"28255\": \"ä¸é–“\",\n \"28257\": \"奈多\",\n \"28258\": \"鯰田\",\n \"28260\": \"西å°å€‰\",\n \"28262\": \"西添田\",\n \"28278\": \"西牟田\",\n \"28280\": \"ç›´æ–¹\",\n \"28282\": \"羽犬塚\",\n \"28283\": \"åšå¤š\",\n \"28286\": \"箱崎\",\n \"28289\": \"波多江\",\n \"28293\": \"原田\",\n \"28294\": \"原町\",\n \"28299\": \"æ±ç¦é–“\",\n \"28300\": \"æ±æ°´å·»\",\n \"28301\": \"彦山\",\n \"28305\": \"ç¦é–“\",\n \"28306\": \"ç¦å‰\",\n \"28309\": \"藤ノ木\",\n \"28310\": \"二島\",\n \"28311\": \"二日市\",\n \"28312\": \"船尾\",\n \"28313\": \"ç‘後船å°å±‹\",\n \"28315\": \"豊å‰å·å´Ž\",\n \"28316\": \"豊å‰æ¾æ±Ÿ\",\n \"28317\": \"豊å‰æ¡ç”°\",\n \"28318\": \"å®ç å±±\",\n \"28322\": \"舞æ¾åŽŸ\",\n \"28326\": \"御井\",\n \"28328\": \"三毛門\",\n \"28329\": \"水城\",\n \"28331\": \"æ°´å·»\",\n \"28334\": \"å—久留米\",\n \"28335\": \"å—å°å€‰\",\n \"28336\": \"å—瀬高\",\n \"28337\": \"å—ç¦å²¡\",\n \"28338\": \"å—行橋\",\n \"28343\": \"姪浜\",\n \"28344\": \"é–€å¸\",\n \"28345\": \"é–€å¸æ¸¯\",\n \"28351\": \"八幡\",\n \"28353\": \"行橋\",\n \"28354\": \"æŸšé ˆ\",\n \"28356\": \"å‰å¡š\",\n \"28357\": \"å‰é‡Ž\",\n \"28358\": \"呼野\",\n \"28359\": \"è‹¥æ¾\",\n \"28360\": \"和白\",\n \"28361\": \"渡瀬\",\n \"28362\": \"有田\",\n \"28363\": \"伊賀屋\",\n \"28364\": \"伊万里\",\n \"28365\": \"岩屋\",\n \"28366\": \"牛津\",\n \"28368\": \"相知\",\n \"28369\": \"大å·é‡Ž\",\n \"28371\": \"大町(ä½è³€çœŒï¼‰\",\n \"28372\": \"å°åŸŽ\",\n \"28373\": \"鬼塚\",\n \"28374\": \"金石原\",\n \"28376\": \"上有田\",\n \"28377\": \"上伊万里\",\n \"28378\": \"å”æ´¥\",\n \"28380\": \"神埼\",\n \"28381\": \"厳木\",\n \"28382\": \"北方\",\n \"28383\": \"基山\",\n \"28386\": \"ä¹…ä¿ç”°\",\n \"28387\": \"ã‘ã‚„ãå°\",\n \"28388\": \"駒鳴\",\n \"28389\": \"ä½è³€\",\n \"28391\": \"ä½é‡Œ\",\n \"28393\": \"高橋\",\n \"28394\": \"多久\",\n \"28395\": \"æ¦é›„温泉\",\n \"28396\": \"田代\",\n \"28398\": \"多良\",\n \"28399\": \"é³¥æ –\",\n \"28400\": \"ä¸å¤šä¹…\",\n \"28401\": \"ä¸åŽŸ\",\n \"28402\": \"永尾\",\n \"28403\": \"é‹å³¶\",\n \"28405\": \"西相知\",\n \"28406\": \"西å”æ´¥\",\n \"28407\": \"虹ノæ¾åŽŸ\",\n \"28409\": \"浜崎\",\n \"28410\": \"æ±å”æ´¥\",\n \"28411\": \"æ±å¤šä¹…\",\n \"28413\": \"è‚¥å‰æ—\",\n \"28414\": \"è‚¥å‰é£¯ç”°\",\n \"28415\": \"è‚¥å‰å¤§æµ¦\",\n \"28416\": \"è‚¥å‰é¹¿å³¶\",\n \"28417\": \"è‚¥å‰ä¹…ä¿\",\n \"28418\": \"è‚¥å‰ç™½çŸ³\",\n \"28419\": \"è‚¥å‰é•·é‡Ž\",\n \"28420\": \"è‚¥å‰ä¸ƒæµ¦\",\n \"28421\": \"è‚¥å‰æµœ\",\n \"28422\": \"è‚¥å‰éº“\",\n \"28423\": \"è‚¥å‰å±±å£\",\n \"28424\": \"è‚¥å‰ç«œçŽ‹\",\n \"28426\": \"本牟田部\",\n \"28428\": \"三間å‚\",\n \"28430\": \"桃å·\",\n \"28432\": \"山本\",\n \"28433\": \"å‰é‡Žãƒ¶é‡Œå…¬åœ’\",\n \"28434\": \"和多田\",\n \"28443\": \"è««æ—©\",\n \"28446\": \"市布\",\n \"28449\": \"岩æ¾\",\n \"28451\": \"ç¾å·\",\n \"28452\": \"浦上\",\n \"28457\": \"å°æ±Ÿ\",\n \"28460\": \"大è‰\",\n \"28464\": \"大æ‘\",\n \"28465\": \"å°ä¸²éƒ·\",\n \"28473\": \"å·æ£š\",\n \"28475\": \"喜々津\",\n \"28482\": \"高田(長崎県)\",\n \"28484\": \"å°é•·äº•\",\n \"28490\": \"ä½ä¸–ä¿\",\n \"28506\": \"è«è¨ª\",\n \"28512\": \"å½¼æµ\",\n \"28518\": \"竹æ¾\",\n \"28524\": \"大塔\",\n \"28525\": \"åƒç¶¿\",\n \"28533\": \"é•·å´Ž\",\n \"28537\": \"長里\",\n \"28538\": \"長与\",\n \"28541\": \"西諫早\",\n \"28542\": \"西浦上\",\n \"28547\": \"æ—©å²\",\n \"28548\": \"ãƒã‚¦ã‚¹ãƒ†ãƒ³ãƒœã‚¹\",\n \"28549\": \"å—風崎\",\n \"28552\": \"日宇\",\n \"28553\": \"æ±è««æ—©\",\n \"28555\": \"æ±åœ’\",\n \"28557\": \"è‚¥å‰å¤è³€\",\n \"28558\": \"è‚¥å‰é•·ç”°\",\n \"28565\": \"本å·å†…\",\n \"28571\": \"æ¾åŽŸ\",\n \"28574\": \"三河内\",\n \"28576\": \"é“ノ尾\",\n \"28583\": \"湯江\",\n \"28586\": \"赤瀬\",\n \"28587\": \"赤水\",\n \"28588\": \"阿蘇\",\n \"28591\": \"è’尾(熊本県)\",\n \"28592\": \"有ä½\",\n \"28593\": \"一å‹åœ°\",\n \"28595\": \"ã„ã“ã„ã®æ‘\",\n \"28596\": \"石打ダム\",\n \"28597\": \"市ノå·\",\n \"28599\": \"æ¤æœ¨\",\n \"28601\": \"内牧\",\n \"28602\": \"宇土\",\n \"28605\": \"網田\",\n \"28606\": \"大野下\",\n \"28608\": \"å°å·\",\n \"28609\": \"大畑\",\n \"28610\": \"æµ·è·¯\",\n \"28612\": \"鎌瀬\",\n \"28613\": \"上熊本\",\n \"28618\": \"å·å°»\",\n \"28622\": \"çƒæ³‰æ´ž\",\n \"28626\": \"熊本\",\n \"28629\": \"崇城大å¦å‰\",\n \"28642\": \"木葉\",\n \"28645\": \"å‚本\",\n \"28648\": \"三里木\",\n \"28652\": \"白石(熊本県)\",\n \"28653\": \"æ–°æ°´å‰å¯º\",\n \"28657\": \"æ°´å‰å¯º\",\n \"28662\": \"ä½å‰ï¼ˆç†Šæœ¬çœŒï¼‰\",\n \"28664\": \"瀬田(熊本県)\",\n \"28665\": \"瀬戸石\",\n \"28666\": \"åƒä¸\",\n \"28669\": \"æ»æ°´\",\n \"28671\": \"竜田å£\",\n \"28672\": \"立野\",\n \"28673\": \"田原å‚\",\n \"28674\": \"玉å\",\n \"28677\": \"段\",\n \"28681\": \"æ±æµ·å¦åœ’å‰\",\n \"28685\": \"é•·æ´²\",\n \"28686\": \"波野\",\n \"28687\": \"那良å£\",\n \"28689\": \"西里\",\n \"28690\": \"西人å‰\",\n \"28693\": \"葉木\",\n \"28696\": \"波多浦\",\n \"28697\": \"原水\",\n \"28700\": \"肥後伊倉\",\n \"28701\": \"肥後大津\",\n \"28704\": \"肥後長浜\",\n \"28707\": \"人å‰\",\n \"28711\": \"å¹³æˆ\",\n \"28714\": \"æ¾æ©‹\",\n \"28715\": \"三角\",\n \"28717\": \"ç·‘å·\",\n \"28719\": \"å—è’å°¾\",\n \"28720\": \"å—熊本\",\n \"28722\": \"宮地\",\n \"28724\": \"æ¦è”µå¡š\",\n \"28726\": \"矢岳\",\n \"28727\": \"八代\",\n \"28730\": \"å‰å°¾\",\n \"28731\": \"渡\",\n \"28732\": \"æœåœ°\",\n \"28733\": \"浅海井\",\n \"28734\": \"天ケ瀬\",\n \"28735\": \"天津\",\n \"28736\": \"犬飼\",\n \"28737\": \"今津\",\n \"28738\": \"今山\",\n \"28739\": \"宇ä½\",\n \"28740\": \"臼æµ\",\n \"28741\": \"æµè‰¯\",\n \"28742\": \"大分\",\n \"28744\": \"大神\",\n \"28745\": \"大在\",\n \"28746\": \"大鶴\",\n \"28747\": \"ç·’æ–¹\",\n \"28748\": \"鬼瀬\",\n \"28749\": \"å°é‡Žå±‹\",\n \"28750\": \"æµ·å´Ž\",\n \"28751\": \"è³€æ¥\",\n \"28752\": \"上臼æµ\",\n \"28753\": \"上岡\",\n \"28754\": \"亀å·\",\n \"28755\": \"狩生\",\n \"28756\": \"北山田\",\n \"28757\": \"æµç¯‰\",\n \"28758\": \"熊崎\",\n \"28759\": \"幸崎\",\n \"28760\": \"ä½ä¼¯\",\n \"28761\": \"å‚ノ市\",\n \"28762\": \"ä½å¿—生\",\n \"28763\": \"庄内\",\n \"28764\": \"敷戸\",\n \"28765\": \"é‡å²¡\",\n \"28766\": \"下ノ江\",\n \"28767\": \"è…å°¾\",\n \"28768\": \"æ‰æ²³å†…\",\n \"28769\": \"宗太郎\",\n \"28770\": \"高城\",\n \"28771\": \"æ»å°¾\",\n \"28772\": \"竹ä¸\",\n \"28773\": \"立石\",\n \"28774\": \"玉æ¥\",\n \"28775\": \"津久見\",\n \"28776\": \"鶴崎\",\n \"28777\": \"光岡\",\n \"28778\": \"天神\",\n \"28779\": \"ç›´å·\",\n \"28780\": \"直見\",\n \"28781\": \"ä¸æ´¥\",\n \"28782\": \"ä¸åˆ¤ç”°\",\n \"28783\": \"ä¸å±±é¦™\",\n \"28784\": \"西大分\",\n \"28785\": \"西屋敷\",\n \"28786\": \"野矢\",\n \"28787\": \"æ±ä¸æ´¥\",\n \"28788\": \"æ±åˆ¥åºœ\",\n \"28789\": \"引治\",\n \"28790\": \"日代\",\n \"28791\": \"日出\",\n \"28792\": \"日田\",\n \"28793\": \"å¤å›½åºœ\",\n \"28794\": \"豊å‰å–„光寺\",\n \"28795\": \"豊å‰é•·æ´²\",\n \"28796\": \"豊後è»\",\n \"28797\": \"豊後清å·\",\n \"28798\": \"豊後国分\",\n \"28799\": \"豊後竹田\",\n \"28800\": \"豊後豊岡\",\n \"28801\": \"豊後ä¸å·\",\n \"28802\": \"豊後ä¸æ‘\",\n \"28803\": \"豊後三芳\",\n \"28804\": \"豊後森\",\n \"28805\": \"別府(大分県)\",\n \"28806\": \"別府大å¦\",\n \"28807\": \"牧(大分県)\",\n \"28808\": \"三é‡ç”º\",\n \"28809\": \"å—大分\",\n \"28810\": \"å—由布\",\n \"28811\": \"å‘之原\",\n \"28812\": \"柳ケ浦\",\n \"28813\": \"湯平\",\n \"28814\": \"由布院\",\n \"28815\": \"夜明\",\n \"28816\": \"暘谷\",\n \"28817\": \"é’井岳\",\n \"28818\": \"é’島\",\n \"28819\": \"æ—ケ丘\",\n \"28820\": \"油津\",\n \"28822\": \"五å市\",\n \"28823\": \"市棚\",\n \"28824\": \"伊比井\",\n \"28825\": \"内海\",\n \"28826\": \"内之田\",\n \"28827\": \"é‹å‹•å…¬åœ’\",\n \"28828\": \"ãˆã³ã®\",\n \"28829\": \"ãˆã³ã®é£¯é‡Ž\",\n \"28830\": \"ãˆã³ã®ä¸Šæ±Ÿ\",\n \"28831\": \"å¤§å ‚æ´¥\",\n \"28832\": \"飫肥\",\n \"28833\": \"折生迫\",\n \"28835\": \"é–€å·\",\n \"28836\": \"åŠ ç´\",\n \"28840\": \"å·å—\",\n \"28841\": \"京町温泉\",\n \"28842\": \"北å·\",\n \"28843\": \"北郷\",\n \"28844\": \"北延岡\",\n \"28845\": \"木花\",\n \"28846\": \"清æ¦\",\n \"28847\": \"串間\",\n \"28848\": \"å°å†…æµ·\",\n \"28849\": \"åä¾›ã®å›½\",\n \"28850\": \"å°æž—(宮崎県)\",\n \"28852\": \"ä½åœŸåŽŸ\",\n \"28853\": \"財光寺\",\n \"28855\": \"曽山寺\",\n \"28856\": \"高崎新田\",\n \"28858\": \"高é‹\",\n \"28859\": \"高原\",\n \"28860\": \"è°·é \",\n \"28861\": \"谷之å£\",\n \"28862\": \"田野(宮崎県)\",\n \"28863\": \"都農\",\n \"28864\": \"土々呂\",\n \"28865\": \"å—郷\",\n \"28866\": \"西å°æž—\",\n \"28868\": \"西都城\",\n \"28869\": \"æ—¥å—\",\n \"28870\": \"延岡\",\n \"28872\": \"è“®ã‚±æ± \",\n \"28874\": \"æ—¥å‘大æŸ\",\n \"28876\": \"æ—¥å‘北方\",\n \"28877\": \"æ—¥å‘沓掛\",\n \"28878\": \"æ—¥å‘市\",\n \"28879\": \"æ—¥å‘庄内\",\n \"28880\": \"æ—¥å‘新富\",\n \"28881\": \"æ—¥å‘ä½å‰\",\n \"28882\": \"æ—¥å‘長井\",\n \"28883\": \"æ—¥å‘å‰ç”°\",\n \"28885\": \"æ±é«˜å´Ž\",\n \"28886\": \"æ±éƒ½è¾²\",\n \"28888\": \"広原\",\n \"28890\": \"ç¦å³¶ä»Šç”º\",\n \"28891\": \"ç¦å³¶é«˜æ¾\",\n \"28894\": \"真幸\",\n \"28895\": \"万ケ塚\",\n \"28896\": \"å—æ–¹\",\n \"28897\": \"å—延岡\",\n \"28898\": \"å—æ—¥å‘\",\n \"28899\": \"å—宮崎\",\n \"28900\": \"三股\",\n \"28901\": \"美々津\",\n \"28902\": \"都城\",\n \"28903\": \"宮崎\",\n \"28904\": \"宮崎空港\",\n \"28905\": \"宮崎神宮\",\n \"28907\": \"餅原\",\n \"28908\": \"山之å£\",\n \"28909\": \"榎原\",\n \"28910\": \"姶良\",\n \"28914\": \"石垣\",\n \"28915\": \"伊集院\",\n \"28916\": \"出水\",\n \"28917\": \"市æ¥\",\n \"28919\": \"指宿\",\n \"28920\": \"入野(鹿å…島県)\",\n \"28921\": \"æ¤æ‘\",\n \"28923\": \"宇宿\",\n \"28925\": \"é ´å¨ƒ\",\n \"28926\": \"é ´å¨ƒå¤§å·\",\n \"28927\": \"大隅大å·åŽŸ\",\n \"28928\": \"大隅å¤äº•\",\n \"28929\": \"大隅横å·\",\n \"28930\": \"大山\",\n \"28932\": \"é–‹èž\",\n \"28933\": \"鹿å…島\",\n \"28936\": \"åŠ æ²»æœ¨\",\n \"28938\": \"上伊集院\",\n \"28942\": \"嘉例å·\",\n \"28943\": \"喜入\",\n \"28945\": \"北永野田\",\n \"28946\": \"北俣\",\n \"28947\": \"霧島神宮\",\n \"28948\": \"霧島温泉\",\n \"28949\": \"錦江\",\n \"28951\": \"串木野\",\n \"28952\": \"隈之城\",\n \"28953\": \"æ —é‡Ž\",\n \"28957\": \"郡元\",\n \"28959\": \"国分(鹿å…島県)\",\n \"28960\": \"æœ¨å ´èŒ¶å±‹\",\n \"28962\": \"五ä½é‡Ž\",\n \"28963\": \"å¾¡é ˜\",\n \"28964\": \"å‚之上\",\n \"28967\": \"è–©æ‘©æ¿æ•·\",\n \"28968\": \"薩摩今和泉\",\n \"28970\": \"è–©æ‘©å·å°»\",\n \"28971\": \"薩摩塩屋\",\n \"28973\": \"è–©æ‘©æ¾å…ƒ\",\n \"28974\": \"é‡å¯Œ\",\n \"28975\": \"志布志\",\n \"28977\": \"白沢(鹿å…島県)\",\n \"28982\": \"慈眼寺\",\n \"28983\": \"瀬々串\",\n \"28984\": \"å·å†…(鹿å…島県)\",\n \"28988\": \"財部\",\n \"28990\": \"è°·å±±\",\n \"28993\": \"帖ä½\",\n \"28994\": \"鶴丸\",\n \"28999\": \"ä¸ç¦è‰¯\",\n \"29000\": \"ä¸å\",\n \"29002\": \"二月田\",\n \"29005\": \"è¥¿é ´å¨ƒ\",\n \"29006\": \"西大山\",\n \"29007\": \"鹿å…島ä¸å¤®\",\n \"29010\": \"生見\",\n \"29012\": \"隼人\",\n \"29013\": \"表木山\",\n \"29014\": \"æ±å¸‚æ¥\",\n \"29015\": \"æ±é–‹èž\",\n \"29016\": \"日当山\",\n \"29017\": \"å¹³å·\",\n \"29018\": \"å‰ä¹‹æµœ\",\n \"29019\": \"æž•å´Ž\",\n \"29020\": \"æ¾ã‚±æµ¦\",\n \"29021\": \"æ°´æˆå·\",\n \"29022\": \"å—鹿å…島\",\n \"29024\": \"宮ケ浜\",\n \"29026\": \"å±±å·\",\n \"29027\": \"湯之元\",\n \"29028\": \"å‰æ¾\",\n \"29029\": \"竜ケ水\",\n \"29041\": \"å‰å¯Œï¼ˆç¦å²¡çœŒï¼‰\",\n \"29061\": \"美咲ãŒä¸˜\",\n \"29087\": \"ç”°å‰\",\n \"29176\": \"一本æ¾\",\n \"29268\": \"スペースワールド\",\n \"29277\": \"ãƒãƒ«ãƒ¼ãƒ³ã•ãŒ\",\n \"29309\": \"久留米大å¦å‰\",\n \"29328\": \"陣原\",\n \"29348\": \"弥生ãŒä¸˜\",\n \"29381\": \"大分大å¦å‰\",\n \"29391\": \"æ–°é³¥æ –\",\n \"29392\": \"新大牟田\",\n \"29393\": \"新玉å\",\n \"29394\": \"新八代\",\n \"29395\": \"æ–°æ°´ä¿£\",\n \"29450\": \"本城\",\n \"29471\": \"åƒæ—©\",\n \"29551\": \"ä¹å¤§å¦ç ”都市\",\n \"29563\": \"å…‰ã®æ£®\",\n \"29615\": \"æ“éŠèˆŽã²ã“ã•ã‚“\",\n \"29660\": \"ã—ã—ã¶\",\n \"29661\": \"広木\",\n \"29662\": \"ä¹…ç•™ç±³é«˜æ ¡å‰\",\n \"29683\": \"æ–°å®®ä¸å¤®\",\n \"29684\": \"神æ‘å¦åœ’å‰\",\n \"29690\": \"富åˆ\",\n \"29774\": \"西熊本\",\n \"29803\": \"ç³¸å³¶é«˜æ ¡å‰\"\n },\n \"en\": {\n \"28054\": \"AKAMA\",\n \"28058\": \"ABEYAMA-KOEN\",\n \"28061\": \"ARAKI\",\n \"28062\": \"IIZUKA\",\n \"28063\": \"IGA\",\n \"28064\": \"IKISAN\",\n \"28065\": \"IKEJIRI\",\n \"28066\": \"ISHIDA\",\n \"28067\": \"ISHIHARAMACHI\",\n \"28074\": \"IMAJUKU\",\n \"28075\": \"UKIHA\",\n \"28077\": \"UNOSHIMA\",\n \"28078\": \"UMI\",\n \"28079\": \"UMINONAKAMICHI\",\n \"28080\": \"URATA\",\n \"28082\": \"EDAMITSU\",\n \"28084\": \"EBITSU\",\n \"28088\": \"ONOJO\",\n \"28093\": \"OMUTA\",\n \"28095\": \"OKU-DOKAI\",\n \"28097\": \"OBASENISHIKODAI-MAE\",\n \"28098\": \"ORIO\",\n \"28100\": \"ONGAGAWA\",\n \"28105\": \"KASHII\",\n \"28107\": \"KASHII-JINGU\",\n \"28109\": \"KASUGA\",\n \"28112\": \"KATSUNO\",\n \"28113\": \"KADOMATSU\",\n \"28116\": \"KAFURI\",\n \"28120\": \"KAMI-HONAMI\",\n \"28121\": \"KAMI-MIO\",\n \"28122\": \"KAWARA\",\n \"28124\": \"KANDA\",\n \"28127\": \"GANNOSU\",\n \"28128\": \"KYUSANDAI-MAE\",\n \"28129\": \"KYUSHUKODAI-MAE\",\n \"28130\": \"KYOIKUDAI-MAE\",\n \"28135\": \"KIDONANZOIN-MAE\",\n \"28137\": \"GINSUI\",\n \"28138\": \"KUSAMI\",\n \"28142\": \"KURATE\",\n \"28144\": \"KURUME\",\n \"28145\": \"KUROBARU\",\n \"28146\": \"KUROSAKI\",\n \"28149\": \"KEISEN(FUKUOKA)\",\n \"28152\": \"KOGA\",\n \"28155\": \"KOKURA\",\n \"28156\": \"KOTAKE\",\n \"28157\": \"KOMORIE\",\n \"28162\": \"SAITOZAKI\",\n \"28163\": \"SAIDOSHO\",\n \"28164\": \"SAKADO\",\n \"28167\": \"SASAGURI\",\n \"28168\": \"SASABARU\",\n \"28171\": \"SHII\",\n \"28173\": \"SHII-KOEN\",\n \"28174\": \"SHIIDA\",\n \"28176\": \"SHIKAKA\",\n \"28180\": \"SHIMO-KAMOO\",\n \"28181\": \"SHIMO-SONE\",\n \"28182\": \"SHIMOYAMATO\",\n \"28184\": \"SHIN-IIZUKA\",\n \"28186\": \"SHINDEMBARU\",\n \"28188\": \"SHINNYU\",\n \"28189\": \"SHIMBARU\",\n \"28190\": \"JONO\",\n \"28193\": \"SUE\",\n \"28194\": \"SUE-CHUO\",\n \"28195\": \"SUSENJI\",\n \"28196\": \"SETAKA\",\n \"28197\": \"ZENDOJI\",\n \"28198\": \"SOEDA\",\n \"28201\": \"TAGAWAITA\",\n \"28202\": \"TAGAWAGOTOJI\",\n \"28203\": \"TAKESHITA\",\n \"28205\": \"TANUSHIMARU\",\n \"28207\": \"DAIGYOJI\",\n \"28209\": \"DAINYU\",\n \"28211\": \"CHOJABARU\",\n \"28212\": \"CHIKUGO-OISHI\",\n \"28213\": \"CHIKUGO-KUSANO\",\n \"28214\": \"CHIKUGO-YOSHII\",\n \"28216\": \"CHIKUZEN-IWAYA\",\n \"28217\": \"CHIKUZEN-UEKI\",\n \"28218\": \"CHIKUZEN-UCHINO\",\n \"28219\": \"CHIKUZEN-SHONAI\",\n \"28220\": \"FUKKODAI-MAE\",\n \"28221\": \"CHIKUZEN-DAIBU\",\n \"28222\": \"CHIKUZEN-HABU\",\n \"28223\": \"CHIKUZEN-FUKAE\",\n \"28224\": \"CHIKUZEN-MAEBARU\",\n \"28225\": \"CHIKUZEN-YAMAE\",\n \"28226\": \"CHIKUZEN-YAMATE\",\n \"28230\": \"CHIDORI\",\n \"28232\": \"TSUIKI\",\n \"28237\": \"TENTO\",\n \"28238\": \"TEMPAIZAN\",\n \"28239\": \"TOGO\",\n \"28246\": \"TOBATA\",\n \"28248\": \"TOFUROMINAMI\",\n \"28250\": \"DOI\",\n \"28255\": \"NAKAMA\",\n \"28257\": \"NATA\",\n \"28258\": \"NAMAZUTA\",\n \"28260\": \"NISHI-KOKURA\",\n \"28262\": \"NISHI-SOEDA\",\n \"28278\": \"NISHIMUTA\",\n \"28280\": \"NOGATA\",\n \"28282\": \"HAINUZUKA\",\n \"28283\": \"HAKATA\",\n \"28286\": \"HAKOZAKI\",\n \"28289\": \"HATAE\",\n \"28293\": \"HARUDA\",\n \"28294\": \"HARUMACHI\",\n \"28299\": \"HIGASHI-FUKUMA\",\n \"28300\": \"HIGASHI-MIZUMAKI\",\n \"28301\": \"HIKOSAN\",\n \"28305\": \"FUKUMA\",\n \"28306\": \"FUKUYOSHI\",\n \"28309\": \"FUJINOKI\",\n \"28310\": \"FUTAJIMA\",\n \"28311\": \"FUTSUKAICHI\",\n \"28312\": \"FUNAO\",\n \"28313\": \"CHIKUGO-FUNAGOYA\",\n \"28315\": \"BUZEN-KAWASAKI\",\n \"28316\": \"BUZEN-SHOE\",\n \"28317\": \"BUZEN-MASUDA\",\n \"28318\": \"HOSHUYAMA\",\n \"28322\": \"MAIMATSUBARA\",\n \"28326\": \"MII\",\n \"28328\": \"MIKEKADO\",\n \"28329\": \"MIZUKI\",\n \"28331\": \"MIZUMAKI\",\n \"28334\": \"MINAMI-KURUME\",\n \"28335\": \"MINAMI-KOKURA\",\n \"28336\": \"MINAMI-SETAKA\",\n \"28337\": \"MINAMI-FUKUOKA\",\n \"28338\": \"MINAMI-YUKUHASHI\",\n \"28344\": \"MOJI\",\n \"28345\": \"MOJIKO\",\n \"28351\": \"YAHATA\",\n \"28353\": \"YUKUHASHI\",\n \"28354\": \"YUSU\",\n \"28356\": \"YOSHIZUKA\",\n \"28357\": \"YOSHINO\",\n \"28358\": \"YOBUNO\",\n \"28359\": \"WAKAMATSU\",\n \"28360\": \"WAJIRO\",\n \"28361\": \"WATAZE\",\n \"28362\": \"ARITA\",\n \"28363\": \"IGAYA\",\n \"28364\": \"IMARI\",\n \"28365\": \"IWAYA\",\n \"28366\": \"USHIZU\",\n \"28368\": \"OCHI\",\n \"28369\": \"OKAWANO\",\n \"28371\": \"OMACHI(SAGA)\",\n \"28372\": \"OGI\",\n \"28373\": \"ONIZUKA\",\n \"28374\": \"KANAISHIHARA\",\n \"28376\": \"KAMI-ARITA\",\n \"28377\": \"KAMI-IMARI\",\n \"28378\": \"KARATSU\",\n \"28380\": \"KANZAKI\",\n \"28381\": \"KYURAGI\",\n \"28382\": \"KITAGATA\",\n \"28383\": \"KIYAMA(SAGA)\",\n \"28386\": \"KUBOTA\",\n \"28387\": \"KEYAKIDAI\",\n \"28388\": \"KOMANAKI\",\n \"28389\": \"SAGA\",\n \"28391\": \"SARI\",\n \"28393\": \"TAKAHASHI\",\n \"28394\": \"TAKU\",\n \"28395\": \"TAKEO-ONSEN\",\n \"28396\": \"TASHIRO\",\n \"28398\": \"TARA\",\n \"28399\": \"TOSU\",\n \"28400\": \"NAKA-TAKU\",\n \"28401\": \"NAKABARU\",\n \"28402\": \"NAGAO(SAGA)\",\n \"28403\": \"NABESHIMA\",\n \"28405\": \"NISHI-OCHI\",\n \"28406\": \"NISHI-KARATSU\",\n \"28407\": \"NIJINOMATSUBARA\",\n \"28409\": \"HAMASAKI\",\n \"28410\": \"HIGASHI-KARATSU\",\n \"28411\": \"HIGASHI-TAKU\",\n \"28413\": \"HIZEN-ASAHI\",\n \"28414\": \"HIZEN-IIDA\",\n \"28415\": \"HIZEN-OURA\",\n \"28416\": \"HIZEN-KASHIMA\",\n \"28417\": \"HIZEN-KUBO\",\n \"28418\": \"HIZEN-SHIROISHI\",\n \"28419\": \"HIZEN-NAGANO\",\n \"28420\": \"HIZEN-NANAURA\",\n \"28421\": \"HIZEN-HAMA\",\n \"28422\": \"HIZEN-FUMOTO\",\n \"28423\": \"HIZEN-YAMAGUCHI\",\n \"28424\": \"HIZEN-RYUO\",\n \"28426\": \"HON-MUTABE\",\n \"28428\": \"MIMASAKA\",\n \"28430\": \"MOMONOKAWA\",\n \"28432\": \"YAMAMOTO\",\n \"28433\": \"YOSHINOGARI-KOEN\",\n \"28434\": \"WATADA\",\n \"28443\": \"ISAHAYA\",\n \"28446\": \"ICHINUNO\",\n \"28449\": \"IWAMATSU\",\n \"28451\": \"UTSUTSUGAWA\",\n \"28452\": \"URAKAMI\",\n \"28457\": \"OE\",\n \"28460\": \"OKUSA\",\n \"28464\": \"OMURA\",\n \"28465\": \"OGUSHIGO\",\n \"28473\": \"KAWATANA\",\n \"28475\": \"KIKITSU\",\n \"28482\": \"TAKADA(NAGASAKI)\",\n \"28484\": \"KONAGAI\",\n \"28490\": \"SASEBO\",\n \"28506\": \"SUWA\",\n \"28512\": \"SONOGI\",\n \"28518\": \"TAKEMATSU\",\n \"28524\": \"DAITO\",\n \"28525\": \"CHIWATA\",\n \"28533\": \"NAGASAKI\",\n \"28537\": \"NAGASATO\",\n \"28538\": \"NAGAYO\",\n \"28541\": \"NISHI-ISAHAYA\",\n \"28542\": \"NISHI-URAKAMI\",\n \"28547\": \"HAIKI\",\n \"28548\": \"HUISTENBOSCH\",\n \"28549\": \"HAENOSAKI\",\n \"28552\": \"HIU\",\n \"28553\": \"HIGASHI-ISAHAYA\",\n \"28555\": \"HIGASHISONO\",\n \"28557\": \"HIZEN-KOGA\",\n \"28558\": \"HIZEN-NAGATA\",\n \"28565\": \"HONKAWACHI\",\n \"28571\": \"MATSUBARA\",\n \"28574\": \"MIKAWACHI\",\n \"28576\": \"MICHINOO\",\n \"28583\": \"YUE\",\n \"28586\": \"AKASE\",\n \"28587\": \"AKAMIZU\",\n \"28588\": \"ASO\",\n \"28591\": \"ARAO(KUMAMOTO)\",\n \"28592\": \"ARISA\",\n \"28593\": \"ISSHOCHI\",\n \"28595\": \"IKOINOMURA\",\n \"28596\": \"ISHIUCHI-DAM\",\n \"28597\": \"ICHINOKAWA\",\n \"28599\": \"UEKI\",\n \"28601\": \"UCHINOMAKI\",\n \"28602\": \"UTO\",\n \"28605\": \"ODA(KUMAMOTO)\",\n \"28606\": \"ONOSHIMO\",\n \"28608\": \"OGAWA\",\n \"28609\": \"OKOBA\",\n \"28610\": \"KAIJI\",\n \"28612\": \"KAMASE\",\n \"28613\": \"KAMI-KUMAMOTO\",\n \"28618\": \"KAWASHIRI\",\n \"28622\": \"KYUSENDO\",\n \"28626\": \"KUMAMOTO\",\n \"28629\": \"SOJODAIGAKU-MAE\",\n \"28642\": \"KONOHA\",\n \"28645\": \"SAKAMOTO\",\n \"28648\": \"SANRIGI\",\n \"28652\": \"SHIROISHI(KUMAMOTO)\",\n \"28653\": \"SHIN-SUIZENJI\",\n \"28657\": \"SUIZENJI\",\n \"28662\": \"SUMIYOSHI(KUMAMOTO)\",\n \"28664\": \"SETA(KUMAMOTO)\",\n \"28665\": \"SETOISHI\",\n \"28666\": \"SENCHO\",\n \"28669\": \"TAKIMIZU\",\n \"28671\": \"TATSUTAGUCHI\",\n \"28672\": \"TATENO\",\n \"28673\": \"TABARUZAKA\",\n \"28674\": \"TAMANA\",\n \"28677\": \"DAN\",\n \"28681\": \"TOKAIGAKUEN-MAE\",\n \"28685\": \"NAGASU\",\n \"28686\": \"NAMINO\",\n \"28687\": \"NARAGUCHI\",\n \"28689\": \"NISHISATO\",\n \"28690\": \"NISHI-HITOYOSHI\",\n \"28693\": \"HAKI\",\n \"28696\": \"HATAURA\",\n \"28697\": \"HARAMIZU\",\n \"28700\": \"HIGO-IKURA\",\n \"28701\": \"HIGO-OZU\",\n \"28704\": \"HIGO-NAGAHAMA\",\n \"28707\": \"HITOYOSHI\",\n \"28711\": \"HEISEI\",\n \"28714\": \"MATSUBASE\",\n \"28715\": \"MISUMI\",\n \"28717\": \"MIDORIKAWA\",\n \"28719\": \"MINAMI-ARAO\",\n \"28720\": \"MINAMI-KUMAMOTO\",\n \"28722\": \"MIYAJI\",\n \"28724\": \"MUSASHIZUKA\",\n \"28726\": \"YATAKE\",\n \"28727\": \"YATSUSHIRO\",\n \"28730\": \"YOSHIO\",\n \"28731\": \"WATARI\",\n \"28732\": \"ASAJI\",\n \"28733\": \"AZAMUI\",\n \"28734\": \"AMAGASE\",\n \"28735\": \"AMATSU\",\n \"28736\": \"INUKAI\",\n \"28737\": \"IMAZU\",\n \"28738\": \"IMAYAMA\",\n \"28739\": \"USA\",\n \"28740\": \"USUKI(OITA)\",\n \"28741\": \"ERA\",\n \"28742\": \"OITA\",\n \"28744\": \"OGA\",\n \"28745\": \"OZAI\",\n \"28746\": \"OTSURU\",\n \"28747\": \"OGATA\",\n \"28748\": \"ONIGASE\",\n \"28749\": \"ONOYA\",\n \"28750\": \"KAIZAKI\",\n \"28751\": \"KAKU\",\n \"28752\": \"KAMI-USUKI\",\n \"28753\": \"KAMIOKA\",\n \"28754\": \"KAMEGAWA\",\n \"28755\": \"KARIU\",\n \"28756\": \"KITA-YAMADA\",\n \"28757\": \"KITSUKI\",\n \"28758\": \"KUMASAKI\",\n \"28759\": \"KOZAKI\",\n \"28760\": \"SAIKI\",\n \"28761\": \"SAKANOICHI\",\n \"28762\": \"SASHIU\",\n \"28763\": \"SHONAI\",\n \"28764\": \"SHIKIDO\",\n \"28765\": \"SHIGEOKA\",\n \"28766\": \"SHITANOE\",\n \"28767\": \"SUGAO\",\n \"28768\": \"SUGIKAWACHI\",\n \"28769\": \"SOTARO\",\n \"28770\": \"TAKAJO\",\n \"28771\": \"TAKIO\",\n \"28772\": \"TAKENAKA\",\n \"28773\": \"TATEISHI\",\n \"28774\": \"TAMARAI\",\n \"28775\": \"TSUKUMI\",\n \"28776\": \"TSURUSAKI\",\n \"28777\": \"TERUOKA\",\n \"28778\": \"TENJIN\",\n \"28779\": \"NAOKAWA\",\n \"28780\": \"NAOMI\",\n \"28781\": \"NAKATSU\",\n \"28782\": \"NAKA-HANDA\",\n \"28783\": \"NAKA-YAMAGA\",\n \"28784\": \"NISHI-OITA\",\n \"28785\": \"NISHIYASHIKI\",\n \"28786\": \"NOYA\",\n \"28787\": \"HIGASHI-NAKATSU\",\n \"28788\": \"HIGASHI-BEPPU\",\n \"28789\": \"HIKIJI\",\n \"28790\": \"HISHIRO\",\n \"28791\": \"HIJI\",\n \"28792\": \"HITA\",\n \"28793\": \"FURUGO\",\n \"28794\": \"BUZEN-ZENKOJI\",\n \"28795\": \"BUZEN-NAGASU\",\n \"28796\": \"BUNGO-OGI\",\n \"28797\": \"BUNGO-KIYOKAWA\",\n \"28798\": \"BUNGO-KOKUBU\",\n \"28799\": \"BUNGO-TAKETA\",\n \"28800\": \"BUNGO-TOYOOKA\",\n \"28801\": \"BUNGO-NAKAGAWA\",\n \"28802\": \"BUNGO-NAKAMURA\",\n \"28803\": \"BUNGO-MIYOSHI\",\n \"28804\": \"BUNGO-MORI\",\n \"28805\": \"BEPPU(OITA)\",\n \"28806\": \"BEPPUDAIGAKU\",\n \"28807\": \"MAKI(OITA)\",\n \"28808\": \"MIEMACHI\",\n \"28809\": \"MINAMI-OITA\",\n \"28810\": \"MINAMI-YUFU\",\n \"28811\": \"MUKAINOHARU\",\n \"28812\": \"YANAGIGAURA\",\n \"28813\": \"YUNOHIRA\",\n \"28814\": \"YUFUIN\",\n \"28815\": \"YOAKE\",\n \"28816\": \"YOKOKU\",\n \"28817\": \"AOIDAKE\",\n \"28818\": \"AOSHIMA\",\n \"28819\": \"ASAHIGAOKA\",\n \"28820\": \"ABURATSU\",\n \"28822\": \"ISOICHI\",\n \"28823\": \"ICHITANA\",\n \"28824\": \"IBII\",\n \"28825\": \"UCHIUMI\",\n \"28826\": \"UCHINODA\",\n \"28827\": \"UNDO-KOEN\",\n \"28828\": \"EBINO\",\n \"28829\": \"EBINO-IINO\",\n \"28830\": \"EBINO-UWAE\",\n \"28831\": \"ODOTSU\",\n \"28832\": \"OBI\",\n \"28833\": \"ORYUZAKO\",\n \"28835\": \"KADOGAWA\",\n \"28836\": \"KANO\",\n \"28840\": \"KAWAMINAMI\",\n \"28841\": \"KYOMACHI-ONSEN\",\n \"28842\": \"KITAGAWA\",\n \"28843\": \"KITAGO\",\n \"28844\": \"KITA-NOBEOKA\",\n \"28845\": \"KIBANA\",\n \"28846\": \"KIYOTAKE\",\n \"28847\": \"KUSHIMA\",\n \"28848\": \"KOUCHIUMI\",\n \"28849\": \"KODOMONOKUNI\",\n \"28850\": \"KOBAYASHI(MIYAZAKI)\",\n \"28852\": \"SADOWARA\",\n \"28853\": \"ZAIKOJI\",\n \"28855\": \"SOSANJI\",\n \"28856\": \"TAKASAKISHINDEN\",\n \"28858\": \"TAKANABE\",\n \"28859\": \"TAKAHARU\",\n \"28860\": \"TANIGASHIRA\",\n \"28861\": \"TANINOKUCHI\",\n \"28862\": \"TANO(MIYAZAKI)\",\n \"28863\": \"TSUNO\",\n \"28864\": \"TOTORO\",\n \"28865\": \"NANGO\",\n \"28866\": \"NISHI-KOBAYASHI\",\n \"28868\": \"NISHI-MIYAKONOJO\",\n \"28869\": \"NICHINAN\",\n \"28870\": \"NOBEOKA\",\n \"28872\": \"HASUGAIKE\",\n \"28874\": \"HYUGA-OTSUKA\",\n \"28876\": \"HYUGA-KITAKATA\",\n \"28877\": \"HYUGA-KUTSUKAKE\",\n \"28878\": \"HYUGASHI\",\n \"28879\": \"HYUGA-SHONAI\",\n \"28880\": \"HYUGA-SHINTOMI\",\n \"28881\": \"HYUGA-SUMIYOSHI\",\n \"28882\": \"HYUGA-NAGAI\",\n \"28883\": \"HYUGA-MAEDA\",\n \"28885\": \"HIGASHI-TAKASAKI\",\n \"28886\": \"HIGASHI-TSUNO\",\n \"28888\": \"HIROWARA\",\n \"28890\": \"FUKUSHIMA-IMAMACHI\",\n \"28891\": \"FUKUSHIMA-TAKAMATSU\",\n \"28894\": \"MASAKI\",\n \"28895\": \"MANGATSUKA\",\n \"28896\": \"MINAMIKATA\",\n \"28897\": \"MINAMI-NOBEOKA\",\n \"28898\": \"MINAMI-HYUGA\",\n \"28899\": \"MINAMI-MIYAZAKI\",\n \"28900\": \"MIMATA\",\n \"28901\": \"MIMITSU\",\n \"28902\": \"MIYAKONOJO\",\n \"28903\": \"MIYAZAKI\",\n \"28904\": \"MIYAZAKIAIRPORT\",\n \"28905\": \"MIYAZAKIJINGU\",\n \"28907\": \"MOCHIBARU\",\n \"28908\": \"YAMANOKUCHI\",\n \"28909\": \"YOWARA\",\n \"28910\": \"AIRA\",\n \"28914\": \"ISHIKAKI\",\n \"28915\": \"IJUIN\",\n \"28916\": \"IZUMI\",\n \"28917\": \"ICHIKI\",\n \"28919\": \"IBUSUKI\",\n \"28920\": \"IRINO(KAGOSHIMA)\",\n \"28921\": \"UEMURA\",\n \"28923\": \"USUKI(KAGOSHIMA)\",\n \"28925\": \"EI\",\n \"28926\": \"EI-OKAWA\",\n \"28927\": \"OSUMI-OKAWARA\",\n \"28928\": \"OSUMI-NATSUI\",\n \"28929\": \"OSUMI-YOKOGAWA\",\n \"28930\": \"OYAMA(KAGOCHIMA)\",\n \"28932\": \"KAIMON\",\n \"28933\": \"KAGOSHIMA\",\n \"28936\": \"KAJIKI\",\n \"28938\": \"KAMI-IJUIN\",\n \"28942\": \"KAREIGAWA\",\n \"28943\": \"KIIRE\",\n \"28945\": \"KITA-NAGANODA\",\n \"28946\": \"KITAMATA\",\n \"28947\": \"KIRISHIMA-JINGU\",\n \"28948\": \"KIRISHIMA-ONSEN\",\n \"28949\": \"KINKO\",\n \"28951\": \"KUSHIKINO\",\n \"28952\": \"KUMANOJO\",\n \"28953\": \"KURINO\",\n \"28957\": \"KORIMOTO\",\n \"28959\": \"KOKUBU(KAGOSHIMA)\",\n \"28960\": \"KOBANCHAYA\",\n \"28962\": \"GOINO\",\n \"28963\": \"GORYO\",\n \"28964\": \"SAKANOUE\",\n \"28967\": \"SATSUMA-ITASHIKI\",\n \"28968\": \"SATSUMA-IMAIZUMI\",\n \"28970\": \"SATSUMA-KAWASHIRI\",\n \"28971\": \"SATSUMA-SHIOYA\",\n \"28973\": \"SATSUMA-MATSUMOTO\",\n \"28974\": \"SHIGETOMI\",\n \"28975\": \"SHIBUSHI\",\n \"28977\": \"SHIRASAWA(KAGOSHIMA)\",\n \"28982\": \"JIGENJI\",\n \"28983\": \"SESEKUSHI\",\n \"28984\": \"SENDAI(KAGOSHIMA)\",\n \"28988\": \"TAKARABE\",\n \"28990\": \"TANIYAMA\",\n \"28993\": \"CHOSA\",\n \"28994\": \"TSURUMARU\",\n \"28999\": \"NAKA-FUKURA\",\n \"29000\": \"NAKAMYO\",\n \"29002\": \"NIGATSUDEN\",\n \"29005\": \"NISHI-EI\",\n \"29006\": \"NISHI-OYAMA\",\n \"29007\": \"KAGOSHIMA-CHUO\",\n \"29010\": \"NUKUMI\",\n \"29012\": \"HAYATO\",\n \"29013\": \"HYOKIYAMA\",\n \"29014\": \"HIGASHI-ICHIKI\",\n \"29015\": \"HIGASHI-KAIMON\",\n \"29016\": \"HINATAYAMA\",\n \"29017\": \"HIRAKAWA\",\n \"29018\": \"MAENOHAMA\",\n \"29019\": \"MAKURAZAKI\",\n \"29020\": \"MATSUGAURA\",\n \"29021\": \"MIZUNARIKAWA\",\n \"29022\": \"MINAMI-KAGOSHIMA\",\n \"29024\": \"MIYAGAHAMA\",\n \"29026\": \"YAMAKAWA\",\n \"29027\": \"YUNOMOTO\",\n \"29028\": \"YOSHIMATSU\",\n \"29029\": \"RYUGAMIZU\",\n \"29041\": \"YOSHITOMI(FUKUOKA)\",\n \"29061\": \"MISAKIGAOKA\",\n \"29087\": \"TAYOSHI\",\n \"29176\": \"IPPOMMATSU\",\n \"29268\": \"SPACE WORLD\",\n \"29277\": \"BALLOON-SAGA\",\n \"29309\": \"KURUME-DAIGAKUMAE\",\n \"29328\": \"JINNOHARU\",\n \"29348\": \"YAYOIGAOKA\",\n \"29381\": \"OITADAIGAKUMAE\",\n \"29391\": \"SHIN-TOSU\",\n \"29392\": \"SHIN-OMUTA\",\n \"29393\": \"SHIN-TAMANA\",\n \"29394\": \"SHIN-YATSUSHIRO\",\n \"29395\": \"SHIN-MINAMATA\",\n \"29450\": \"HONJO\",\n \"29471\": \"CHIHAYA\",\n \"29551\": \"KYUDAI-GAKKENTOSHI\",\n \"29563\": \"HIKARINOMORI\",\n \"29615\": \"KANYUSHA-HIKOSAN\",\n \"29660\": \"SHISHIBU\",\n \"29661\": \"HIROKI\",\n \"29662\": \"KURUMEKOKO-MAE\",\n \"29683\": \"SHINGU-CHUO\",\n \"29684\": \"KAMIMURAGAKUEN-MAE\",\n \"29690\": \"TOMIAI\",\n \"29774\": \"NISHI-KUMAMOTO\",\n \"29803\": \"ITOSHIMAKOKO-MAE\"\n }\n}\n","import { Course, Line, Station } from \"../ekispert/models\";\nimport { JRKyushuLineList, JRKyushuStationList, JRKyushuTrainList } from \"../ekispert/data/JRKyushuReserveLinkList\";\nimport DateTime from \"../../utils/dateTime\";\nimport { format, subMinutes } from 'date-fns';\nimport { Lang } from \"../../states/query\";\n\ninterface JRKyushuParams {\n // 出発駅\n depStationName?: string;\n // 到ç€é§…\n arrStationName?: string;\n // 出発時刻\n depTime: Date;\n // ä¹—æ›é§…\n viaStationName: string[];\n // 使用ã™ã‚‹é§…リスト\n stationList: string[];\n // 使用ã™ã‚‹åˆ—車リスト\n trainList: string[];\n // 表示ã™ã‚‹ã‹ã©ã†ã‹\n // 経由ã™ã‚‹åˆ—車ãŒå…¨ã¦æ™®é€šåˆ—車ã®å ´åˆã¯è¡¨ç¤ºã—ãªã„\n isShow: boolean;\n // 有料ã®æ–™é‡‘区間ãŒå˜åœ¨ã™ã‚‹ã‹\n isFareSection: boolean;\n}\n\nexport default class JRKyushuReserveLinkData {\n // 連æºå…ˆã®URL\n host: string;\n // 発ç€åŒºåˆ†\n // 「0:出発ã€ã€Œ1:到ç€ã€ã€Œ2:始発ã€ã€Œ3:終電ã€\n daType: number;\n // 連æºå…ƒã‚³ãƒ¼ãƒ‰(ANA固定)\n rsCode: string;\n // dev環境ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‹\n isDev: boolean;\n // 駅å検索方法\n rsType: number;\n // 表示言語\n lang: Lang;\n // 区間パラメータ\n sectionParams: JRKyushuParams[];\n // Lineè¦ç´ ã®indexã¨ä½¿ç”¨ã™ã‚‹sectionParamsã®indexã®å¯¾å¿œè¡¨\n paramsTable: number[];\n\n constructor(isMobile: boolean, lang: Lang) {\n const hostList = {\n dev: {\n ja: {\n pc: 'https://test.yoyaku.jrkyushu.co.jp/jr/pc/consumer/route/TopAction/searchStation.do',\n sp: 'https://test.yoyaku.jrkyushu.co.jp/jr/smart/consumer/route/TopSmartAction/searchStation.do'\n },\n en: {\n pc: 'https://test.yoyaku.jrkyushu.co.jp/jr/pc/inbound/route/TopAction/searchStation.do',\n sp: 'https://test.yoyaku.jrkyushu.co.jp/jr/smart/inbound/route/TopAction/searchStation.do'\n }\n },\n prod: {\n ja: {\n pc: 'https://train.yoyaku.jrkyushu.co.jp/jr/pc/consumer/route/TopAction/searchStation.do',\n sp: 'https://train.yoyaku.jrkyushu.co.jp/jr/smart/consumer/route/TopSmartAction/searchStation.do'\n },\n en: {\n pc: 'https://train.yoyaku.jrkyushu.co.jp/jr/pc/inbound/route/TopAction/searchStation.do',\n sp: 'https://train.yoyaku.jrkyushu.co.jp/jr/smart/inbound/route/TopAction/searchStation.do'\n }\n }\n }\n this.lang = lang;\n this.isDev = false;\n const env = this.isDev? 'dev': 'prod';\n const device = isMobile? 'sp': 'pc';\n this.host = hostList[env][lang][device];\n this.sectionParams = [];\n this.rsCode = 'ana';\n this.daType = 0;\n this.rsType = 1;\n this.paramsTable = [];\n }\n getInitParams(): JRKyushuParams {\n return {\n viaStationName: [],\n depTime: new Date(0),\n stationList: [],\n trainList: [],\n isShow: false,\n isFareSection: false\n }\n }\n /**\n * 連æºãƒ‘ラメータã®ä¸€è¦§ã‚’è¿”ã™\n */\n getParams(idx: number) {\n const params = this.sectionParams[idx];\n if(!params) {\n throw new Error(`JRä¹å·žé€£æº: sectionParams[${idx}]ã¯å˜åœ¨ã—ã¾ã›ã‚“`);\n }\n let outParams: any = {\n dsName: params.depStationName,\n asName: params.arrStationName,\n trYearMonth: format(params.depTime, 'yyyyMM'),\n trDay: format(params.depTime, 'dd'),\n trHour: format(params.depTime, 'HH'),\n trMinute: format(params.depTime, 'mm'),\n daType: this.daType,\n rsType: this.rsType,\n rsCode: this.rsCode\n };\n params.viaStationName.forEach((tsn, idx)=>{\n outParams[`tsName${idx+1}`] = tsn;\n })\n params.trainList.forEach((trn, idx)=>{\n outParams[`trTrain${idx+1}`] = trn;\n })\n return outParams;\n }\n /**\n * é·ç§»ç”¨ã®URLã‚’è¿”ã™\n * @param idx è¿”ã™Paramsã®Index番å·\n */\n getURL(idx: number) {\n // テスト環境ã®å ´åˆã¯ç¾åœ¨æ—¥ä»˜ã¯2015/12/25固定ã¨ãªã‚‹ãŸã‚ã€å°‘ã—後ã®æ—¥ä»˜ã‚’指定ã™ã‚‹\n if(this.isDev) {\n this.sectionParams[idx].depTime.setFullYear(2015);\n this.sectionParams[idx].depTime.setMonth(11);\n this.sectionParams[idx].depTime.setDate(29);\n }\n const path = new URLSearchParams(this.getParams(idx));\n return `${this.host}?${path}`;\n }\n /**\n * é·ç§»ç”¨ã®URLã‚’Lineè¦ç´ ã®Indexã‹ã‚‰æ±‚ã‚ã¦è¿”ã™\n * @param lineIndex Lineè¦ç´ ã®Index番å·\n */\n getURLByLineIndex(lineIndex: number) {\n const paramIndex = this.paramsTable[lineIndex];\n return this.getURL(paramIndex);\n }\n /**\n * Stationæƒ…å ±ã‹ã‚‰å¯¾å¿œã™ã‚‹JRä¹å·žãƒªãƒ³ã‚¯é§…åã‚’è¿½åŠ ã™ã‚‹\n * @param station EWSã‹ã‚‰å–å¾—ã—ãŸStationæƒ…å ±\n */\n pushStation(station: Station, param: JRKyushuParams) {\n const stationCode = station.code;\n const stationName = JRKyushuStationList[this.lang][stationCode];\n // 駅ãŒå˜åœ¨ã™ã‚‹å ´åˆã®ã¿è¿½åŠ ã™ã‚‹\n if(stationName) {\n param.stationList.push(stationName);\n }\n return param;\n }\n /**\n * EWSã‹ã‚‰å–å¾—ã—ãŸåˆ—車åよりã€JRä¹å·žäºˆç´„サイトã§ä½¿ç”¨ã§ãる列車åå½¢å¼ã«å¤‰æ›ã™ã‚‹\n * @param train EWSã‹ã‚‰å–å¾—ã—ãŸåˆ—車åæƒ…å ±\n */\n pushTrain(train: string, param: JRKyushuParams) {\n let matchTrain = JRKyushuTrainList[this.lang].find((x)=>{\n return train.indexOf(x) !== -1;\n });\n // 一致ã—ãªã„å ´åˆã¯æ™®é€šåˆ—車ã¨ã—ã¦æ‰±ã†\n if(!matchTrain) {\n matchTrain = '';\n } else {\n // 予約å¯èƒ½ãªåˆ—車ãŒå«ã¾ã‚Œã‚‹å ´åˆã«ã¯ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹\n param.isShow = true;\n }\n param.trainList.push(matchTrain);\n return param;\n }\n /**\n * JRä¹å·žåˆ—車予約連æºãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ãƒ»ãƒªãƒ³ã‚¯ãƒ‘ラメーターをè¨å®šã™ã‚‹\n * @param course フラグをセットã™ã‚‹çµŒè·¯\n */\n setShowReserveLinkFlag = (course: Course) => {\n try {\n // JRä¹å·žã®é§…リスト\n const JRKyushuStationArray = Object.keys(JRKyushuStationList.ja);\n if(course.OperationLinePattern) {\n // 経路ä¸ã«ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ã‚’判æ–\n let isShowLink = true;\n let beforeRouteLineIndex = -1;\n let sectionDepTime = new Date(0);\n const sections = course.OperationLinePattern.length? course.OperationLinePattern: [course.OperationLinePattern];\n sections.forEach((section: any)=>{\n const routeLine = course.Route.Line[section.routeLineIndex-1];\n const lines = section.Line.length? section.Line: [section.Line];\n // 1区間ã«è·¨ã‚‹ç·šåŒºã®ä¸€è¦§\n const lineList = lines.map((line: any)=>{ return line.code; });\n // 区間ä¸ã«JRä¹å·žã®åŒºé–“ãŒã‚ã‚‹ã‹ã‚’判定\n let isShowSection = lineList.reduce((x: boolean, a: string) => {\n return x && JRKyushuLineList.includes(Number(a));\n }, true);\n // 発駅・ç€é§…ãŒJRä¹å·žã®é§…ã‹ã‚’判定ã™ã‚‹\n if(isShowSection) {\n const depStationCode = course.Route.Point[section.routeLineIndex - 1].Station.code;\n const arrStationCode = course.Route.Point[section.routeLineIndex].Station.code;\n // JRä¹å·žã®é§…リストã«ç™ºé§…・ç€é§…ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã®ã¿é€£æºãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹\n isShowSection = JRKyushuStationArray.includes(depStationCode) && JRKyushuStationArray.includes(arrStationCode);\n }\n // LineãŒé€£ç•ªã§ãªã„ã¨ãã«ã¯ãƒªãƒ³ã‚¯è¡¨ç¤ºãƒ•ãƒ©ã‚°ã‚’リセットã™ã‚‹\n if(isShowSection && Number(section.routeLineIndex) - 1 !== beforeRouteLineIndex) {\n isShowLink = true;\n sectionDepTime = new Date(0);\n }\n beforeRouteLineIndex = Number(section.routeLineIndex);\n if(isShowSection && isShowLink) {\n // 列車ã®å‡ºç™ºæ™‚é–“ãŒç¾åœ¨æ™‚刻ã®10分後以é™ã‹ã¤ã€1ヶ月後より以å‰ã®å ´åˆ\n const depTime = new Date(routeLine.DepartureState.Datetime.text);\n // 対象ã®åˆ—車ãŒæ™‚é–“çš„ã«é–“ã«åˆã‚ãªã„å ´åˆã«ã¯ä»¥å¾Œã®åˆ—車予約全ã¦è¡¨ç¤ºã—ãªã„\n const isAbleToReserveJR = DateTime.isAbleToReserveJR(depTime);\n if(!isAbleToReserveJR) {\n isShowLink = false;\n }\n routeLine.isShowJRKyushuLink = isAbleToReserveJR;\n // 出発時刻ãŒåˆæœŸå€¤ã®å ´åˆã«ã¯å‡ºç™ºæ—¥æ™‚ã‚’è¨å®šã™ã‚‹\n if(routeLine.isShowJRKyushuLink) {\n if(sectionDepTime.getTime() === 0) {\n // 検索時ã®å‡ºç™ºæ™‚刻ã¯ã¡ã‚‡ã†ã©ã ã¨ãƒ’ットã—ãªã„ãŸã‚ã€5分å‰ã«è¨å®šã™ã‚‹\n sectionDepTime = subMinutes(depTime, 5);\n } else {\n // 日付ãŒåˆå‰3時を跨ãå ´åˆã«ã¯çµ‚電を跨ãã¨åˆ¤æ–ã—ã€ä»¥å¾Œã¯è¡¨ç¤ºã—ãªã„\n const isAfterEndOfTrain = DateTime.isTommorowTrain(sectionDepTime, depTime);\n if(isAfterEndOfTrain) {\n routeLine.isShowJRKyushuLink = false;\n isShowLink = false;\n }\n }\n }\n } else {\n routeLine.isShowJRKyushuLink = false;\n }\n });\n }\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n }\n /**\n * JRä¹å·žåˆ—車予約リンクã®ãƒ‘ラメーターを構築ã™ã‚‹\n * @param course フラグをセットã™ã‚‹çµŒè·¯\n */\n generateReserveParams = (course: Course) => {\n try {\n let param = this.getInitParams();\n // EWSã®çµæžœã¨å¯¾å¿œè¡¨ã‹ã‚‰é§…å・列車åを抽出\n course.Route.Line.forEach((line: Line, idx: number) => {\n // 料金部分をå–å¾—ã™ã‚‹\n // 宮崎空港->宮崎・早å²->ä½ä¸–ä¿ã®ã‚ˆã†ãªç‰¹æ€¥åˆ—車ã®ç„¡æ–™ç‰¹ä¾‹åŒºé–“を排除ã™ã‚‹\n // 料金部分ã®å–å¾—ã¯Resultコンãƒãƒ¼ãƒãƒ³ãƒˆã§ä½¿ç”¨ã—ã¦ã„ã‚‹ã‚‚ã®ã‚’用ã„ã‚‹\n const fare = course.Price.find(p => (p.kind === 'Charge' && p.index === line.chargeIndex) && p.selected === 'true')?.Oneway;\n if(fare && Number(fare) > 0) {\n param.isFareSection = true;\n }\n // 対応表ã«å…¥ã‚Œè¾¼ã‚€paramsã®index\n let paramIdx = -1;\n if(line.isShowJRKyushuLink) {\n // åˆæœŸå€¤ã®å ´åˆã«ã¯å‡ºç™ºæ™‚é–“ã‚’è¨å®šã™ã‚‹\n if(param.depTime.getTime() === 0) {\n const depTime = new Date(line.DepartureState.Datetime.text);\n // 検索時ã®å‡ºç™ºæ™‚刻ã¯ã¡ã‚‡ã†ã©ã ã¨ãƒ’ットã—ãªã„ãŸã‚ã€5分å‰ã«è¨å®šã™ã‚‹\n param.depTime = subMinutes(depTime, 5);\n }\n // 駅リストãŒç©ºã®æ™‚ã¯å‡ºç™ºé§…ã‚‚è¿½åŠ ã™ã‚‹\n if(!param.stationList.length) {\n const depStation = course.Route.Point[idx].Station;\n param = this.pushStation(depStation, param);\n }\n const arrStation = course.Route.Point[idx+1].Station;\n param = this.pushStation(arrStation, param);\n param = this.pushTrain(line.Name, param);\n paramIdx = this.sectionParams.length;\n } else if(param.depTime.getTime() !== 0) {\n // JRä¹å·žä»¥å¤–ã®åŒºé–“ãŒé–“ã«å…¥ã£ãŸå ´åˆã«ã¯ãƒªãƒ³ã‚¯ã‚’区切る\n this.sectionParams.push(param);\n param = this.getInitParams();\n }\n this.paramsTable.push(paramIdx);\n });\n this.sectionParams.push(param);\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n }\n /**\n * 駅リストより出発・到ç€ãƒ»çµŒç”±é§…を分離ã™ã‚‹\n */\n splitDepViaArrStation = () => {\n this.sectionParams.forEach( (param: JRKyushuParams)=>{\n param.depStationName = param.stationList[0];\n param.arrStationName = param.stationList.slice(-1)[0];\n param.viaStationName = param.stationList.slice(1, -1);\n })\n }\n /**\n * 1経路ã‚ãŸã‚Šã®JRä¹å·žåˆ—車予約リンクパラメータ一連ã®æµã‚Œã‚’処ç†ã™ã‚‹\n * @param course フラグをセットã™ã‚‹çµŒè·¯\n */\n setAll = (course: Course) => {\n // 経路ä¸ã®å„Lineã«JRä¹å·žãƒªãƒ³ã‚¯ã®äºˆç´„リンクを表示ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’ç«‹ã¦ã‚‹\n this.setShowReserveLinkFlag(course);\n // 経路ä¸ã®JRä¹å·žãƒªãƒ³ã‚¯ã®äºˆç´„パラメータを生æˆã™ã‚‹\n this.generateReserveParams(course);\n // 駅リストより出発・経由・到ç€é§…リストをパラメータã«è¨å®šã™ã‚‹\n this.splitDepViaArrStation();\n }\n /**\n * 連æºãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ãŸã‚ã®å‰ææ¡ä»¶\n * @param airportCode 発ç€ã™ã‚‹ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n */\n static isShowLink = (airportCode: string) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 1. 発ç€ãŒJRä¹å·žå†…ã®ç©ºæ¸¯ã§ã‚ã‚‹ã“ã¨\n * ç¦å²¡ãƒ»åŒ—ä¹å·žãƒ»ä½è³€ãƒ»å¤§åˆ†ãƒ»ç†Šæœ¬ãƒ»å®®å´Žãƒ»é•·å´Žãƒ»å¯¾é¦¬ãƒ»äº”島ç¦æ±Ÿ\n */\n const showAirportCodeList = [ 'FUK', 'KKJ', 'HSG', 'OIT', 'KMJ', 'KMI', 'NGS', 'TSJ', 'FUJ']; \n return showAirportCodeList.includes(airportCode);\n }\n /**\n * 該当区間ã«äºˆç´„å¯èƒ½ãªåˆ—車ãŒå«ã¾ã‚Œã‚‹ã‹ã‚’判定\n * @param lineIndex Lineè¦ç´ ã®Index番å·\n */\n isAbleToReserveSection = (lineIndex: number) => {\n try {\n const paramIndex = this.paramsTable[lineIndex];\n const param = this.sectionParams[paramIndex];\n // 特急を使ã†çµŒè·¯ãŒã‚ã‚Šã€æ–™é‡‘部分ãŒ1円以上ã®å ´åˆã«ã¯äºˆç´„ボタンを表示ã™ã‚‹\n return param.isShow && param.isFareSection;\n } catch(e) {\n return false;\n }\n }\n}\n","// リンクティビティ連æºãƒ»æ±äº¬ãƒ¡ãƒˆãƒãƒ•ãƒªãƒ¼ãƒ‘スã®ã‚¢ãƒ•ã‚£ãƒªã‚¨ã‚¤ãƒˆãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ãŸã‚ã®è·¯ç·šãƒªã‚¹ãƒˆ\n// æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„ã®è·¯ç·šãƒªã‚¹ãƒˆ\nexport const tokyoMetroLineList: number[] = [\n 327, // 銀座線\n 328, // 丸ノ内線(æ± è¢‹ï¼è»çªª)\n 329, // 丸ノ内線(ä¸é‡Žå‚上ï¼æ–¹å—町)\n 330, // 日比谷線\n 331, // æ±è¥¿ç·š\n 332, // åƒä»£ç”°ç·š(綾瀬ï¼ä»£ã€…木上原)\n 333, // åƒä»£ç”°ç·š(綾瀬ï¼åŒ—綾瀬)\n 334, // 有楽町線\n 335, // åŠè”µé–€ç·š\n 336, // å—北線\n 337, // 副都心線\n 338, // 都営地下鉄浅è‰ç·š\n 339, // 都営地下鉄三田線\n 340, // 都営地下鉄新宿線\n 341, // 都営地下鉄大江戸線(都åºå‰ï¼é£¯ç”°æ©‹ï¼æ¸…澄白河)\n 757 // 都営地下鉄大江戸線\n]\n\n// 京急線リスト\n// 京急大師線, 京急逗åç·š, 京急久里浜線ã¯ç¯„囲外ã®ãŸã‚å«ã¾ãš\nexport const keikyuLineList: number[] = [\n 322, // 京急本線\n 323 // 京急空港線\n]\n\n// 京急&TokyoSubwayTicketã®ç¯„囲外ã¨ãªã‚‹äº¬æ€¥ã®é§…一覧\nexport const excludedKeikyuStationList: { name: string, code: number }[] = [\n {name:\"浦賀\",code:23084},\n {name:\"é¦¬å €æµ·å²¸\",code:23325},\n {name:\"京急大津\",code:23146},\n {name:\"å €ãƒŽå†…\",code:23317},\n {name:\"県立大å¦\",code:23154},\n {name:\"æ¨ªé ˆè³€ä¸å¤®\",code:23367},\n {name:\"æ±å…¥\",code:23196},\n {name:\"逸見\",code:23312},\n {name:\"安é‡å¡š\",code:23062},\n {name:\"京急田浦\",code:23150},\n {name:\"追浜\",code:23089},\n {name:\"金沢八景(京急線)\",code:23113},\n {name:\"金沢文庫\",code:23115},\n {name:\"能見å°\",code:23272},\n {name:\"京急富岡\",code:23152},\n {name:\"æ‰ç”°(神奈å·çœŒ)\",code:23215},\n {name:\"å±é¢¨æµ¦\",code:23301},\n {name:\"上大岡\",code:23119},\n {name:\"弘明寺(京急線)\",code:23144},\n {name:\"井土ケ谷\",code:23075},\n {name:\"å—太田\",code:23334},\n {name:\"黄金町\",code:23159},\n {name:\"日ノ出町\",code:23296},\n {name:\"戸部\",code:23252},\n {name:\"横浜\",code:23368},\n {name:\"神奈å·\",code:23111},\n {name:\"京急æ±ç¥žå¥ˆå·\",code:23256},\n {name:\"神奈å·æ–°ç”º\",code:23112},\n {name:\"å安\",code:23166},\n {name:\"京急新å安\",code:23149},\n {name:\"生麦\",code:23261},\n {name:\"花月ç·æŒå¯º\",code:23102},\n {name:\"京急鶴見\",code:23151},\n {name:\"é¶´è¦‹å¸‚å ´\",code:23245},\n {name:\"å…«ä¸ç•·\",code:23277},\n {name:\"京急å·å´Ž\",code:23147},\n {name:\"å…郷土手\",code:23051},\n {name:\"雑色\",code:22785}\n]\n","import { differenceInCalendarDays } from \"date-fns\";\nimport DateTime from \"../../utils/dateTime\";\nimport FlightInfo from \"../ana/models/flightInfo\";\nimport { Course } from \"../ekispert/models\";\n\n/**\n * リンクティビティæ±äº¬ãƒ¡ãƒˆãƒé€£æºãƒœã‚¿ãƒ³ãƒ»ãƒãƒŠãƒ¼ã®å…±é€šè¡¨ç¤ºæ¡ä»¶\n * 該当区間ã§ãƒªãƒ³ã‚¯ã‚’出ã™ã‹ã¯åˆ¥ã®ç®‡æ‰€ã§åˆ¤å®š\n * @param isDepartureGuide 出発案内ã‹\n * @param arrAirportCode 到ç€ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰\n * @param arrDate 到ç€æ™‚刻\n * @param isAirportSiteTransit å„種空港ã‹ã‚‰ã®é·ç§»ã‹\n */\nexport const isShowTokyoMetroFreePass = (isDepartureGuide: boolean, arrAirportCode: string, arrDate: Date, isAirportSiteTransit: boolean) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 0. å„種空港HPã‹ã‚‰ã®é·ç§»ã§ã¯ãªã„\n * 1. 到ç€æ¡ˆå†…ã§ã‚ã‚‹\n * 2. 羽田・æˆç”°ç€ã®ä¾¿ã‚’使用ã™ã‚‹\n * 3. 検索日付ãŒä»Šæ—¥ä»¥é™ï¼ˆéŽåŽ»ã®æ—¥ä»˜ã§ã®æ¤œç´¢ã§ã¯ãªã„)\n */\n // 0. 広島空港ã‹ã‚‰ã®é·ç§»ã§ã¯ãªã„\n if(isAirportSiteTransit) { return false; }\n // 1. 到ç€æ¡ˆå†…ã§ã‚ã‚‹\n if(isDepartureGuide) { return false }\n // 2. 羽田・æˆç”°ç€ã®ä¾¿ã‚’使用ã™ã‚‹\n const matchAirportList = ['TYO', 'HND', 'NRT'];\n if(!matchAirportList.includes(arrAirportCode)) {\n return false;\n }\n // 3. 検索日付ãŒä»Šæ—¥ä»¥é™ï¼ˆéŽåŽ»ã®æ—¥ä»˜ã§ã®æ¤œç´¢ã§ã¯ãªã„)\n const now = new Date();\n const diffDays = differenceInCalendarDays(arrDate, now);\n return (diffDays >= 0);\n}\n\n/**\n * リンクティビティæ±äº¬ãƒ¡ãƒˆãƒé€£æºãƒãƒŠãƒ¼ã®è¿½åŠ 表示æ¡ä»¶\n * @param course 判定をã™ã‚‹Course\n */\nexport const isShowTokyoMetroFreePassBanner = (course: Course | undefined, flightStatus: FlightInfo) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹(2020/09/16)\n * 1. 経路ä¸ã«æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„を利用ã™ã‚‹åŒºé–“ãŒã‚ã‚‹\n * 2. 経路ä¸ã«äº¬æ€¥ï¼†Subwayãƒã‚±ãƒƒãƒˆã‚’表示ã™ã‚‹åŒºé–“ãŒãªã„\n */\n if(!course) {\n return false;\n }\n if(course.hasKeikyuAndSubwayTicketSection && isShowKeikyuAndTokyoMetroFreePass(flightStatus)) {\n return false;\n }\n return course.hasTokyoSubwaySection;\n}\n\n/**\n * リンクティビティ:京急&æ±äº¬ãƒ¡ãƒˆãƒãƒ‘ス表示ã®è¿½åŠ 表示æ¡ä»¶\n*/\nexport const isShowKeikyuAndTokyoMetroFreePass = (flight: FlightInfo) => {\n /**\n * 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆã«è¡¨ç¤ºã™ã‚‹\n * 1. 国内線を利用ã™ã‚‹å ´åˆ\n * 2. 羽田空港ç€ã®å ´åˆ\n */\n switch (flight.arrAirportCode) {\n case 'HND':\n return true;\n case 'TYO':\n return flight.arrAirportName.includes('Haneda');\n default:\n return false;\n }\n}\n\n/**\n * リンクティビティæ±äº¬ãƒ¡ãƒˆãƒé€£æºã®é·ç§»å…ˆURLリスト\n */\nexport const tokyoSubwayTicketUrl = {\n ja: {\n dev: 'https://ars-ana-dev.linktivity.io/activity/ja/LINKTIVITY-Tokyosubway-ana?lang=ja',\n prod: 'https://ars-ana.linktivity.io/activity/ja/LINKTIVITY-Tokyosubway-ana?lang=ja'\n },\n en: {\n dev: 'https://ars-ana-dev.linktivity.io/activity/en/LINKTIVITY-Tokyosubway-ana?lang=en',\n prod: 'https://ars-ana.linktivity.io/activity/en/LINKTIVITY-Tokyosubway-ana?lang=en'\n }\n}","import { addMinutes, subMinutes } from 'date-fns';\nimport FlightInfo from '../../ana/models/flightInfo';\nimport { PlaceDirections, Location } from \"../../google/PlaceDirections\";\nimport { Charge, Course, Fare, Line, Point, Price, Route, State } from \"../models\";\nimport { Lang } from '../../../states/query';\nimport { RouteInfo } from '../../taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { AirlineList } from '../../../utils/Airlines';\n\nexport default class UseTaxiCourse implements Course {\n searchType: string;\n dataType: string;\n SerializeData: string;\n Price: Price[];\n Route: Route;\n fares: { [key: string]: Fare; };\n charges: { [key: string]: Charge; };\n isLeastTransferCount: boolean;\n isFast: boolean;\n isLowPrice: boolean;\n sumPrice: number;\n hasAirportBus: boolean;\n hasByHighwaySection: boolean;\n OperationLinePattern: any;\n isShowTokyoMetroBanner?: boolean | undefined;\n feeLabel: string;\n // タクシー所è¦è·é›¢ï¼ˆm)\n distance: number;\n // タクシー所è¦æ™‚間(s)\n duration: number;\n isTaxi: boolean;\n displayIndex: string;\n /** æ··é›‘æƒ…å ±ã‚’åŠ å‘³ã—ãŸãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æƒ…å ±ã‹ */\n isRealTime: boolean;\n AswInfo: undefined;\n\n /**\n * タクシーã®Courseを生æˆã™ã‚‹Class\n * @param directions GoogleDirectionsAPIã®Response\n * @param flightStatus ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±\n * @param isDepartureGuide 出発案内ã‹å¦ã‹\n * @param arrivalTimeToAirport 空港到ç€æ™‚é–“\n * @param pointName 出発・到ç€åœ°ç‚¹å\n * @param lang 言語è¨å®š\n * @param routeInfo APIã‹ã‚‰å–å¾—ã—ãŸãƒ«ãƒ¼ãƒˆã®æ¦‚è¦æƒ…å ±\n */\n constructor(directions: PlaceDirections, flightStatus: FlightInfo, isDepartureGuide: boolean, arrivalTimeToAirport: number, pointName: string, lang: Lang, routeInfo: RouteInfo) {\n // TODO: i18nãŒä½¿ãˆã‚‹ã®ãªã‚‰ç½®ãæ›ãˆã‚‹\n const isJP = lang === Lang.ja;\n // タクシーを使用ã—ãŸãƒ«ãƒ¼ãƒˆ\n const route = directions?.routes[0];\n const legs = route?.legs[0];\n // 所用è·é›¢(m)\n this.distance = routeInfo.distanceValue;\n this.isRealTime = Boolean(legs.duration_in_traffic);\n // 所è¦æ™‚é–“(s)\n this.duration = routeInfo.durationValue;\n const durationMinutes = Math.round(this.duration/60);\n // 飛行機ã®å‡ºç™ºãƒ»åˆ°ç€æ™‚é–“\n const planeTime: Date = flightStatus.getFlightTimeDate(isDepartureGuide);\n let airportTime: Date = new Date(0);\n let pointTime: Date = new Date(0);\n let airportLocation: Location;\n let targetLocation: Location;\n // 空港å称\n const airportLabel = isJP? '空港':'Airport';\n const airportName = `${isDepartureGuide? flightStatus.depAirportName: flightStatus.arrAirportName} ${airportLabel}`;\n if(isDepartureGuide) {\n // 空港到ç€æ™‚é–“\n airportTime = subMinutes(planeTime, arrivalTimeToAirport);\n pointTime = subMinutes(airportTime, durationMinutes);\n airportLocation = legs.end_location;\n targetLocation = legs.start_location;\n }\n else {\n airportTime = flightStatus.getSearchTime(false);\n pointTime = addMinutes(airportTime, durationMinutes);\n airportLocation = legs.start_location;\n targetLocation = legs.end_location;\n }\n const taxiLine: Line = {\n stopStationCount: '',\n timeOnBoard: String(durationMinutes),\n track: '',\n exhaustCO2: '',\n exhaustCO2atPassengerCar: '',\n distance: String(this.distance),\n Name: isJP ? 'クルマ' : 'Car, taxi, etc.',\n Type: 'taxi',\n ArrivalState: this.dateToState(isDepartureGuide ? airportTime : pointTime),\n Destination: '',\n TimeReliability: '',\n DepartureState: this.dateToState(isDepartureGuide ? pointTime : airportTime),\n // #82ca3f ã®10進数変æ›\n Color: '13020263',\n fareIndex: ''\n };\n const walkLine: Line = {\n stopStationCount: '',\n timeOnBoard: '',\n track: '',\n exhaustCO2: '',\n fareIndex: '',\n exhaustCO2atPassengerCar: '',\n distance: '',\n Name: isJP? 'å¾’æ©': 'walk',\n Type: 'walk',\n ArrivalState: this.dateToState(airportTime),\n Destination: '',\n TimeReliability: '',\n DepartureState: this.dateToState(airportTime),\n // #969696 ã®10進数表ç¾\n Color: '150150150',\n };\n const targetPoint: Point = {\n Station: {\n code: '',\n Name: pointName,\n Type: '',\n Yomi: ''\n },\n Prefecture: {\n code: '',\n Name: ''\n },\n GeoPoint: {\n longi: '',\n lati: '',\n longi_d: String(targetLocation.lng),\n gcs: '',\n lati_d: String(targetLocation.lat)\n }\n }\n const airportEntrancePoint: Point = {\n Station: {\n code: '',\n Name: airportName,\n Type: '',\n Yomi: ''\n },\n Prefecture: {\n code: '',\n Name: ''\n },\n GeoPoint: {\n longi: '',\n lati: '',\n longi_d: String(airportLocation.lng),\n gcs: '',\n lati_d: String(airportLocation.lat),\n }\n }\n const securityCheckpointName = isJP? 'ä¿å®‰æ¤œæŸ»å ´': 'Security Check';\n const exitName = isJP? '出å£': 'exit';\n const securityCheckPoint: Point = {\n Name: isDepartureGuide? securityCheckpointName: exitName,\n Station: {\n code: '',\n Name: isDepartureGuide? securityCheckpointName: exitName,\n Type: '',\n Yomi: ''\n },\n Prefecture: {\n code: '',\n Name: ''\n },\n GeoPoint: {\n longi: '',\n lati: '',\n longi_d: '',\n gcs: '',\n lati_d: ''\n }\n }\n this.searchType = 'arrival';\n this.dataType = '';\n this.SerializeData = '';\n // åŒä¸€åŒºé–“ã§ã‚‚タクシー会社ã«ã‚ˆã‚Šé‹è³ƒã¯å¤‰ã‚ã‚‹ãŸã‚ã€çµŒè·¯æƒ…å ±ã«ã¯æ–™é‡‘æƒ…å ±ã‚’æŒãŸã›ãªã„\n this.Price = [];\n // this.Price = [taxiFare, taxiFareSummary];\n this.Route = {\n timeOther: '0',\n timeOnBoard: String(durationMinutes),\n exhaustCO2: '0',\n exhaustCO2atPassengerCar: '0',\n distance: this.distance.toString(),\n timeWalk: '',\n transferCount: '0',\n Line: isDepartureGuide? [taxiLine, walkLine]: [walkLine, taxiLine],\n Point: isDepartureGuide? [targetPoint, airportEntrancePoint, securityCheckPoint]: [securityCheckPoint, airportEntrancePoint, targetPoint],\n allTime: 0\n };\n this.fares = {};\n this.charges = {};\n this.isLeastTransferCount = true;\n this.isFast = true;\n this.isLowPrice = true;\n this.sumPrice = 0;\n this.hasAirportBus = false;\n this.hasByHighwaySection = false;\n this.OperationLinePattern = null;\n // 区間ã«è¡¨ç¤ºã™ã‚‹é‹è³ƒã®ãƒ©ãƒ™ãƒ«\n // åŒä¸€åŒºé–“ã§ã‚‚タクシー会社ã«ã‚ˆã‚Šé‹è³ƒã¯å¤‰ã‚ã‚‹ãŸã‚ã€çµŒè·¯æƒ…å ±ã«ã¯æ–™é‡‘æƒ…å ±ã‚’æŒ\n this.feeLabel = ''\n this.isTaxi = true;\n this.displayIndex = 'taxi';\n }\n\n /**\n * 空港到ç€æ™‚刻ãŒæŒ‡å®šæ™‚間以å‰ã‹ã‚’判定ã™ã‚‹\n * @param userSetTime ユーザーãŒã‚»ãƒƒãƒˆã—ãŸç©ºæ¸¯åˆ°ç€æ™‚é–“\n * @param isDomestic フライトãŒå›½å†…ç·šã‹\n * @param targetAirline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\n static getArrivalTimeToAirport(userSetTime: number, isDomestic: boolean, targetAirline: AirlineList) {\n const MAX_DOM_TIME = 60;\n const MAX_INT_TIME = 120;\n const MAX_PEACH_CODE_SHARE_TIME = 75;\n const MAX_SPRING_TIME = 75;\n if(isDomestic) {\n if(targetAirline === 'APJ'){\n return Math.max(userSetTime, MAX_PEACH_CODE_SHARE_TIME);\n }\n else if(targetAirline === 'SJO') {\n return Math.max(userSetTime, MAX_SPRING_TIME);\n }\n else {\n return Math.max(userSetTime, MAX_DOM_TIME);\n }\n }\n else {\n return Math.max(userSetTime, MAX_INT_TIME);\n }\n }\n\n /**\n * Dateåž‹ã‚’Stateå½¢ã«å¤‰æ›ã—ã¾ã™\n * @param date\n */\n dateToState(date: Date): State {\n return {\n no: '',\n Type: '',\n Datetime: {\n text: date.toISOString(),\n operation: 'today'\n }\n }\n }\n}\n","import axios from 'axios';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\n// æ±äº¬ãƒªãƒ ジンãƒã‚¹é‹è¡Œæƒ…å ±ãƒªã‚¯ã‚¨ã‚¹ãƒˆFormat \nexport interface ReqTokyoLumousineBusFormat {\n courseIndex: number,\n lineIndex: number,\n depCode: string,\n arrCode: string,\n depTime: string\n}\n\n// æ±äº¬ãƒªãƒ ジンãƒã‚¹é‹è¡Œæƒ…å ±ãƒ¬ã‚¹ãƒãƒ³ã‚¹Format\nexport interface ResTokyoLimousineBusFormat extends ReqTokyoLumousineBusFormat {\n isMidnight: boolean,\n isTargetBusStopDep: boolean,\n serviceType: string,\n depBusData: TokyoLimousineBusStopFormat,\n arrBusData: TokyoLimousineBusStopFormat,\n isError: boolean,\n errorBody: string\n}\n\n// 空港リムジンãƒã‚¹ãƒã‚¹åœFormat \ninterface TokyoLimousineBusStopFormat {\n busStopCode: string,\n busStopName: string,\n areaCode: string,\n areaName: string,\n ESCode: string,\n ESName: string,\n isMidnight: boolean\n}\n\nexport const getLimousineBusDataFactory = (optionConfig?: ApiConfig) => {\n const config = {\n ...DEFAULT_API_CONFIG,\n ...optionConfig,\n };\n axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';\n const instance = axios.create(config);\n\n const getLimousineBusData = async (limousineBusData: ReqTokyoLumousineBusFormat[]) => {\n let path;\n // master/staging環境以外ã¯ã€ãƒªãƒ ジンãƒã‚¹é‹è¡Œæƒ…å ±APIã¯ã¯devã‚’å‚ç…§ã™ã‚‹\n if(process.env['REACT_APP_STAGE_ENV'] === 'master' || process.env['REACT_APP_STAGE_ENV'] === 'stage') {\n path = '/limousinebus/';\n } else {\n path = '/limousinebus/dev';\n }\n try {\n let response = await instance.post(path, limousineBusData);\n \n // ステータスコードãŒ200ã§ã¯ãªã„å ´åˆã€‚\n if (response.status !== 200 || response.data.statusCode !== 200) {\n throw new Error('Server Error');\n }\n \n return response.data.body;\n } catch (err) {\n throw err;\n }\n }\n return getLimousineBusData;\n}\n","// 経路ã®æ•´å½¢ã‚’ã™ã‚‹é–¢æ•°ç¾¤\nimport { Course } from \"../services/ekispert/models\";\nimport { PublicCourse } from \"../states/publicConditionState\";\n\n\n/**\n * 一般開放モードã«ã¦ã€Œæ—©ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹\n * @param courses \n */\nexport function publicSetInFast(courses: PublicCourse[]): PublicCourse[] {\n let normalCourses: Course[] = courses.map((course)=>{ return course.course });\n normalCourses = setIsFast(normalCourses);\n return publicSetFlag(courses, normalCourses);\n}\n\n/**\n * 一般開放モードã«ã¦ã€Œå®‰ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹\n * @param courses \n */\nexport function publicSetIsLowPrice(courses: PublicCourse[]): PublicCourse[] {\n let normalCourses: Course[] = courses.map((course)=>{ return course.course });\n normalCourses = setIsLowPrice(normalCourses);\n return publicSetFlag(courses, normalCourses);\n}\n\n/**\n * 一般開放モードã«ã¦ã€Œæ¥½ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹\n * @param courses \n */\nexport function publicSetIsLeastTransferCount(courses: PublicCourse[]): PublicCourse[] {\n let normalCourses: Course[] = courses.map((course)=>{ return course.course });\n normalCourses = setIsLeastTransferCount(normalCourses);\n return publicSetFlag(courses, normalCourses);\n}\n\nfunction publicSetFlag(courses: PublicCourse[], normalCourses: Course[]) {\n return courses.map((course, idx)=>{\n course.course = normalCourses[idx];\n return course;\n });\n}\n\n/**\n * å–å¾—ã—ãŸã™ã¹ã¦ã®çµŒè·¯ã®ä¸ã§ã€Œæ—©ã€ï¼ˆæ‰€è¦æ™‚é–“ãŒæœ€ã‚‚çŸã„経路)ã¨ãªã‚‹çµŒè·¯ã«ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n * @param courses \n */\nexport function setIsFast(courses: Course[]): Course[] {\n // 最速時間を求ã‚ã‚‹\n const minTime = courses.reduce((minTime:number, course: Course)=>{\n const route = course.Route;\n // 乗車時間 + 待機時間 + å¾’æ©æ™‚é–“ã®åˆè¨ˆå€¤ã‚’所è¦æ™‚é–“ã¨ã—ã¦æ±‚ã‚ã‚‹\n const courseTime = Number(route.timeOnBoard) + Number(route.timeOther) + Number(route.timeWalk);\n if (course.isTaxi) return minTime; // タクシー経路ã¯åˆ¤å®šã«å«ã‚ãªã„\n return (courseTime < minTime)? courseTime: minTime;\n }, Number.MAX_VALUE);\n // 所è¦æ™‚é–“ãŒæœ€é€Ÿã®å ´åˆã€æ—©ãƒ•ãƒ©ã‚°ã‚’ç«‹ã¦ã‚‹\n courses = courses.map((course: Course) => {\n const route = course.Route;\n // 探査ä¸ã®ã‚³ãƒ¼ã‚¹ã®åˆè¨ˆæ‰€è¦æ™‚間を求ã‚ã‚‹\n const allTime = Number(route.timeOnBoard) + Number(route.timeOther) + Number(route.timeWalk);\n // åˆè¨ˆæ‰€è¦æ™‚é–“ã‚’viewå´ã§ç°¡å˜ã«å–å¾—ã§ãるよã†ã€å€¤ã‚’æ ¼ç´ã™ã‚‹ã€‚\n course.Route.allTime = allTime;\n // 探査ä¸ã®ã‚³ãƒ¼ã‚¹ã®æ‰€è¦æ™‚é–“ãŒæœ€é€Ÿãªã‚‰ã°ã€å¯¾è±¡ã®çµŒè·¯ã®ã€Œæ—©ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹\n if (course.isTaxi) {\n // åŒä¸€ã®å ´åˆãŒã‚ã‚‹ãŸã‚ã€ã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã®å ´åˆã¯å¿…ãšãƒ•ãƒ©ã‚°ã‚’falseã«ã™ã‚‹\n course.isFast = false;\n } else {\n course.isFast = (minTime === allTime);\n }\n return course;\n });\n return courses;\n}\n\n/**\n * å–å¾—ã—ãŸå„経路ã®åˆè¨ˆé‡‘é¡ã‚’sumPriceã¨ã—ã¦ã‚»ãƒƒãƒˆã™ã‚‹\n * @param courses \n */\nexport function setSumPrice(course: Course): Course {\n // 空港最寄りã‹ã‚‰æ¤œç´¢ã—ãŸæ™‚ã«ã¯ course.Price ãŒãªã„å ´åˆã‚‚ã‚ã‚‹\n if(course.Price === undefined) {\n course.sumPrice = 0;\n }\n else {\n // é‹è³ƒãƒ»æ–™é‡‘一覧\n const prices = Array.isArray(course.Price)? course.Price: [course.Price];\n // 片é“é‹è³ƒ\n const fareSummary = Number(prices.find(x => x.kind === 'FareSummary')?.Oneway) || 0;\n // 片é“料金\n const chargeSummary = Number(prices.find(x => x.kind === 'ChargeSummary')?.Oneway) || 0;\n // 片é“é‹è³ƒ + 料金\n const price = fareSummary + chargeSummary;\n // åˆè¨ˆé‡‘é¡ã‚’viewå´ã§ç°¡å˜ã«å–å¾—ã§ãるよã†ã€å€¤ã‚’æ ¼ç´ã™ã‚‹ã€‚\n course.sumPrice = price;\n }\n return course;\n}\n\n/**\n * å–å¾—ã—ãŸã™ã¹ã¦ã®çµŒè·¯ã®ä¸ã§ã€Œå®‰ã€ï¼ˆé‹è³ƒã¨æ–™é‡‘ã®åˆè¨ˆãŒæœ€ã‚‚安ã„経路)ã¨ãªã‚‹çµŒè·¯ã«ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n * @param courses\n */\nexport function setIsLowPrice(courses: Course[]): Course[] {\n // 最安値を求ã‚ã‚‹\n const minPrice = courses.reduce((minPrice:number, course: Course)=>{\n // SumPriceをセットã™ã‚‹\n course = setSumPrice(course);\n if (course.isTaxi) return minPrice; // タクシー経路ã¯åˆ¤å®šã«å«ã‚ãªã„\n return (course.sumPrice < minPrice)? course.sumPrice: minPrice;\n }, Number.MAX_VALUE);\n // 片é“é‹è³ƒ+料金ãŒæœ€å®‰å€¤ã®å ´åˆã€å®‰ãƒ•ãƒ©ã‚°ã‚’ç«‹ã¦ã‚‹\n courses = courses.map((course: Course) => {\n if (course.isTaxi) {\n // åŒä¸€ã®å ´åˆãŒã‚ã‚‹ãŸã‚ã€ã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã®å ´åˆã¯å¿…ãšãƒ•ãƒ©ã‚°ã‚’falseã«ã™ã‚‹\n course.isLowPrice = false;\n } else {\n course.isLowPrice = (minPrice === course.sumPrice);\n }\n return course;\n });\n return courses;\n}\n\n/**\n * å–å¾—ã—ãŸã™ã¹ã¦ã®çµŒè·¯ã®ä¸ã§ã€Œæ¥½ã€ï¼ˆä¹—æ›å›žæ•°ã®æœ€ã‚‚å°‘ãªã„経路)ã¨ãªã‚‹çµŒè·¯ã«ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n * @param courses å–å¾—ã—ãŸçµŒè·¯\n */\nexport function setIsLeastTransferCount(courses: Course[]): Course[] {\n /** 最å°ã®ä¹—æ›å›žæ•°ã‚’æ ¼ç´ã™ã‚‹å¤‰æ•°ã€‚ */\n let leastTransferCount: number = Number.MAX_VALUE;\n /** 最å°ã®ä¹—æ›å›žæ•°ã®çµŒè·¯ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’æ ¼ç´ã™ã‚‹é…列。 */\n let leastTransferCountCourseIndexes: number[] = [];\n\n // å„経路ã®ä¹—æ›å›žæ•°ã‚’比較ã™ã‚‹ã€‚\n courses.forEach((course, index) => {\n const transferCount = Number.parseInt(course.Route.transferCount);\n // 次ã®çµŒè·¯ã®ä¹—æ›å›žæ•°ãŒæœ€å°ã®ä¹—æ›å›žæ•°ã¨ã—ã¦è¨˜éŒ²ã—ãŸå›žæ•°ã‚ˆã‚Šå°‘ãªã„å ´åˆã€‚\n // タクシー経路ã¯åˆ¤å®šã«å«ã‚ãªã„\n if (transferCount < leastTransferCount && !course.isTaxi) {\n // 最å°ã®ä¹—æ›å›žæ•°ã‚’更新。\n leastTransferCount = transferCount;\n // 最å°ã®ä¹—æ›å›žæ•°ã®çµŒè·¯ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®é…列を更新ã™ã‚‹ã€‚\n leastTransferCountCourseIndexes = [index];\n // 最å°ã®ä¹—æ›å›žæ•°ãŒåŒã˜çµŒè·¯ãŒè¤‡æ•°å˜åœ¨ã—ãŸå ´åˆã€‚\n // タクシー経路ã¯åŒã˜å ´åˆã§ã‚‚è¿½åŠ ã—ãªã„\n } else if (transferCount === leastTransferCount && !course.isTaxi) {\n // インデックスã®é…列ã«è¿½åŠ ã™ã‚‹ã€‚\n leastTransferCountCourseIndexes.push(index);\n }\n // デフォルト値ã¨ã—ã¦falseã‚’è¨å®šã™ã‚‹ã€‚\n // (ã‚ã¨ã§çµŒè·¯ç”¨ã®ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã€çµŒè·¯ãƒ‡ãƒ¼ã‚¿æ•´å½¢æ™‚ã«ã“ã®å€¤ã‚’æŒã¤ã‚ˆã†ã«ã™ã‚‹ã€‚2020/01/24ç¾åœ¨ã€‚)\n course.isLeastTransferCount = false;\n })\n\n // 最å°ã®ä¹—æ›å›žæ•°ã®çµŒè·¯ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’æ ¼ç´ã™ã‚‹é…列ãŒæœªä»£å…¥ã®å ´åˆã¯çµŒè·¯ãƒ‡ãƒ¼ã‚¿ã‚’åŠ å·¥ã›ãšã€å…ƒã®å€¤ã‚’è¿”ã™ã€‚\n if (!leastTransferCountCourseIndexes) { return courses; }\n // 最å°ã®ä¹—æ›å›žæ•°ã®çµŒè·¯ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’å…ƒã«ã€å¯¾è±¡ã®çµŒè·¯ã®ã€Œæ¥½ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n leastTransferCountCourseIndexes.forEach((i) => {\n courses[i].isLeastTransferCount = true;\n })\n return courses;\n}\n","import axios from 'axios';\nimport DateTime from '../../utils/dateTime';\nimport { WalkPointRequest } from './util';\n\ninterface ApiConfig {\n baseURL: string;\n timeout: number;\n}\n\nconst DEFAULT_API_CONFIG: ApiConfig = {\n baseURL: process.env['REACT_APP_API_ENDPOINT'] as string,\n timeout: 7000,\n};\n\n/**\n * UniversalMaas用ã®å¾’æ©ãƒªãƒ³ã‚¯é·ç§»ç”¨ã®URLã‚’å–å¾—ã™ã‚‹\n * @param walkPointList å¾’æ©ãƒªãƒ³ã‚¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆ\n * @returns signatureを組ã¿è¾¼ã‚“ã é·ç§»å…ˆURLList\n */\nexport const getUniversalMaasWalkURL = async (walkPointList: WalkPointRequest[]) => {\n const isGetDevURL = process.env['REACT_APP_BACKEND_ENV'] === 'dev';\n const env: string = isGetDevURL? 'dev': 'prod';\n /** 組ã¿è¾¼ã‚€URL㌠/map ã«ã™ã‚‹ã‹ï¼Ÿ */\n const is_client_map = !DateTime.isUniversalMaaSServiceIn2023();\n const config: ApiConfig = DEFAULT_API_CONFIG;\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n // TODO: 本番åæ˜ æ™‚ã«ã¯å˜ç´”ã«/makewalklink/ ã«ã‚¢ã‚¯ã‚»ã‚¹ã•ã›ã‚‹ã‚ˆã†ã«ã™ã‚‹\n const pathList = {\n dev: '/universalMaas/makewalklink/dev',\n prod: '/universalMaas/makewalklink/'\n }\n const path = isGetDevURL? pathList.dev: pathList.prod;\n const instance = axios.create(config);\n const request = {\n body: walkPointList,\n env: env,\n is_client_map: is_client_map\n }\n const reseponse = await instance.post(path, request);\n if(reseponse.data.statusCode !== 200) {\n throw new Error(reseponse.data.errorMessage);\n }\n return reseponse.data.body;\n}\n","import Environment from \"../../utils/environment\";\nimport { Course, Line, Point } from \"../ekispert/models\";\nimport Place from \"../google/Place\";\nimport { getUniversalMaasWalkURL } from \"./api\";\n\n// Lambdaã«æŠ•ã’ã‚‹Format\nexport interface WalkPointRequest {\n start_lat?: string,\n start_lon?: string,\n goal_lat?: string,\n goal_lon?: string,\n course_index: number,\n section_index: number,\n // Publicã§ä½¿ç”¨ã™ã‚‹å¾€è·¯ã‹å¾©è·¯ã‹ã®ãƒ•ãƒ©ã‚°\n isOutbound?: boolean,\n no_change?: boolean,\n /** UnivMaaSã§ä½¿ç”¨ã™ã‚‹è¦ç´ */\n /** サãƒãƒ¼ãƒˆãƒªã‚¯ã‚¨ã‚¹ãƒˆID */\n support_req_id?: string,\n /** 表示レベル */\n display_level?: string,\n /** 表示ã™ã‚‹URLã®ãƒ¢ãƒ¼ãƒ‰ */\n mode?: string\n [key: string]: any\n}\n\n// Lambdaã‹ã‚‰è¿”ã£ã¦ãã‚‹Responseå½¢å¼\nexport interface WalkPointResponse extends WalkPointRequest {\n signature: string,\n url: string,\n error: boolean\n}\n\n\n// nullè¦ç´ を排除ã™ã‚‹\nexport const filterNullWalkPointRequest = (item: WalkPointRequest | null): item is WalkPointRequest => {\n return item !== null;\n}\n\n// å¿…è¦ãªè¦ç´ を満ãŸã—ã¦ã„ãªã„リクエストを排除ã™ã‚‹\nexport const checkWalkPointRequestParams = (item: WalkPointRequest): item is WalkPointRequest => {\n const isCoordinate = /^\\d{2,3}\\.\\d{1,}$/;\n const needParamsList = ['start_lat', 'start_lon', 'goal_lat', 'goal_lon'];\n return needParamsList.every((x: string)=>{\n return item[x] !== undefined && item[x].match(isCoordinate) !== null;\n });\n}\n\n/**\n * UniversalMaaså¾’æ©ãƒªãƒ³ã‚¯å–å¾—APIã«æŠ•ã’ã‚‹Requestを生æˆã™ã‚‹\n * @param courses 経路全体\n * @returns APIã«æŠ•ã’ã‚‹å½¢å¼\n */\nconst generateUniversalMaaSWalkLinkRequestFromat = (courses: Course[], isDepartureGuide: boolean, place: Place | null): WalkPointRequest[] => {\n interface GeoCode {\n lat?: string,\n lng?: string\n }\n return courses.map((course: Course, course_index: number)=>{\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n const walkLineBase: (WalkPointRequest|null)[] = lines.map((line: Line, line_index: number)=>{\n if(line.Type === 'walk' || line.Name === 'å¾’æ©') {\n const depPoint: Point = course.Route.Point[line_index];\n const arrPoint: Point = course.Route.Point[line_index+1];\n const isUseDepPlace: boolean = isDepartureGuide && line_index === 0 && !depPoint.GeoPoint;\n const isUseArrPlace: boolean = !isDepartureGuide && line_index === lines.length - 1 && !arrPoint.GeoPoint;\n const depGeoCode: GeoCode = {\n lat: isUseDepPlace? place?.lat: depPoint.GeoPoint?.lati_d,\n lng: isUseDepPlace? place?.lng: depPoint.GeoPoint?.longi_d\n }\n const arrGeoCode: GeoCode = {\n lat: isUseArrPlace? place?.lat: arrPoint.GeoPoint?.lati_d,\n lng: isUseArrPlace? place?.lng: arrPoint.GeoPoint?.longi_d\n }\n const walkPoint: WalkPointRequest = {\n start_lat: depGeoCode.lat,\n start_lon: depGeoCode.lng,\n goal_lat: arrGeoCode.lat,\n goal_lon: arrGeoCode.lng,\n course_index: course_index,\n section_index: line_index\n };\n return walkPoint;\n }\n return null;\n })\n return walkLineBase.filter(filterNullWalkPointRequest).filter(checkWalkPointRequestParams);\n })\n .flat();\n}\n\nexport interface SetUniversalMaaSWalkLinkArgs {\n courses: Course[],\n isDepartureGuide: boolean,\n place: Place | null\n}\n\n/**\n * UniversalMaaså¾’æ©ãƒªãƒ³ã‚¯å–å¾—APIã‹ã‚‰ã®æˆ»ã‚Šå€¤ã‚’å…ƒã«ã€Coursedã«å¾’æ©ãƒªãƒ³ã‚¯æƒ…å ±ã‚’å½“ã¦ã¯ã‚ã‚‹\n * @param courses çµŒè·¯æƒ…å ±ã®ä¸€è¦§\n * @param walkPointResponse APIã‹ã‚‰ã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹\n * @returns çµŒè·¯æƒ…å ±ã®ä¸€è¦§\n */\nconst setUniversalMaaSWalkLinkFromWalkPointResponse = (courses: Course[], walkPointResponse: WalkPointResponse[]) => {\n walkPointResponse.forEach((walkPoint: WalkPointResponse) => {\n if(!walkPoint.error) {\n const targetLine: Line | undefined = courses[walkPoint.course_index]?.Route?.Line[walkPoint.section_index];\n if(targetLine) {\n targetLine.universalMaaSWalk = walkPoint;\n }\n }\n });\n return courses;\n}\n\nexport const setUniversalMaaSWalkLinkFactory = () => {\n /**\n * UniversalMaas用ã®å¾’æ©ãƒªãƒ³ã‚¯é·ç§»ç”¨ã®URLã‚’å–å¾—ã—ã¦çµŒè·¯ä¸ã«åŸ‹ã‚込む\n * @param courses å…¨ã¦ã®çµŒè·¯æƒ…å ±\n * @param isDepartureGuide 出発案内ã¯\n * @param place ユーザー指定ã®ç™ºç€åœ°æƒ…å ±\n * @returns å…¨ã¦ã®çµŒè·¯æƒ…å ±\n */\n const setUniversalMaaSWalkLink = async (args: SetUniversalMaaSWalkLinkArgs) => {\n // Lambdaã«æŠ•ã’ã‚‹ãŸã‚ã®è¦ç´ を生æˆã™ã‚‹\n const walkPointList: WalkPointRequest[] = generateUniversalMaaSWalkLinkRequestFromat(args.courses, args.isDepartureGuide, args.place);\n try {\n if(walkPointList.length > 0) {\n const walkPointResponse: WalkPointResponse[] = await getUniversalMaasWalkURL(walkPointList);\n args.courses = setUniversalMaaSWalkLinkFromWalkPointResponse(args.courses, walkPointResponse);\n }\n }\n catch(e) {\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isDev(env)) {\n console.error(e);\n }\n }\n return args.courses;\n }\n return setUniversalMaaSWalkLink;\n}\n\n/**\n * å†æ¤œç´¢æ™‚ã«UniversamMaaSã®å¾’æ©ãƒªãƒ³ã‚¯ãŒé€”切れãªã„よã†ã«å…ƒã®çµŒè·¯ã®\n * @param oldCourse å¤ã„経路\n * @param researchCourse å†æ¤œç´¢ã«ã‚ˆã‚Šå†å–å¾—ã—ãŸçµŒè·¯\n * @returns\n */\nexport const resetUniversalMaaSWalkLink = async (oldCourse: Course, researchCourse: Course, isDepartureGuide: boolean, place: Place | null) => {\n // æ–°æ—§ãã‚Œãžã‚Œã®çµŒè·¯ãŒå¤‰ã‚ã£ã¦ã„ãªã„ã“ã¨ã‚’確èª\n const oldRequest: WalkPointRequest[] = generateUniversalMaaSWalkLinkRequestFromat([oldCourse], isDepartureGuide, place);\n let newRequest: WalkPointRequest[] = generateUniversalMaaSWalkLinkRequestFromat([researchCourse], isDepartureGuide, place);\n newRequest = newRequest.map((req: WalkPointRequest)=>{\n const fixOldReq = oldRequest.find((x)=>{\n return x.section_index === req.section_index;\n });\n req.no_change = (()=>{\n return req.start_lat === fixOldReq?.start_lat &&\n req.start_lon === fixOldReq?.start_lon &&\n req.goal_lat === fixOldReq?.goal_lat &&\n req.goal_lon === fixOldReq?.goal_lon\n })();\n // 変更ãŒãªã„å ´åˆã«ã¯çµŒè·¯ãƒ‡ãƒ¼ã‚¿ã®ä¸Šæ›¸ãã‚’ã™ã‚‹\n if(req.no_change) {\n const index = req.section_index;\n const oldLine = oldCourse.Route.Line[index];\n const newLine = researchCourse.Route.Line[index];\n if(oldLine.universalMaaSWalk) {\n newLine.universalMaaSWalk = oldLine.universalMaaSWalk;\n }\n }\n return req;\n })\n .filter((x)=>{\n return !x.no_change;\n });\n // ä½ç½®å¤‰æ›´ãŒç™ºç”Ÿã—ãŸåŒºé–“ãŒ1件以上ã‚ã‚‹å ´åˆã«ã¯å†åº¦å•ã„åˆã‚ã›ã‚’è¡Œã„ã€ç½®ãæ›ãˆã‚’ã™ã‚‹\n if(newRequest.length > 0) {\n try {\n const walkPointResponse: WalkPointResponse[] = await getUniversalMaasWalkURL(newRequest);\n researchCourse = setUniversalMaaSWalkLinkFromWalkPointResponse([researchCourse], walkPointResponse)[0];\n }\n catch(e) {\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isDev(env)) {\n console.error(e);\n }\n }\n }\n return researchCourse;\n}\n","import FlightInfo from \"../services/ana/models/flightInfo\";\nimport Place from \"../services/google/Place\";\nimport { getDirectionAndFareSamplesAPI } from \"../services/taxi/GetDirectionAndFare\";\nimport { FlightType, GetDirectionAndFareOperation, GetDirectionAndFareSamplesParams, GetDirectionAndFareSamplesResponse } from \"../services/taxi/GetDirectionAndFare/models/getFareSamplesParams\";\nimport { Lang } from \"../states/query\";\nimport { AirlineList } from \"./Airlines\";\nimport Environment from \"./environment\";\nimport { convertLocationToStr } from \"./geoLocation\";\n\n/**\n * Closedモードã«ãŠã„ã¦è‡ªå‹•è»ŠçµŒè·¯ã‚’å–り扱ã†é–¢æ•°ç¾¤\n */\n\n/**\n * 出発・目的地ã‹ã‚‰ç©ºæ¸¯ã¾ã§ã®è‡ªå‹•è»ŠçµŒè·¯ã®é“ã®ã‚Šã‚’å–å¾—ã™ã‚‹\n * @param isDepartureGuide 出発案内ã‹å¦ã‹\n * @param arrivalTimeToAirport 出発案内ã®å ´åˆã€ç©ºæ¸¯ã¾ã§ã®åˆ°ç€æ™‚é–“\n * @param place é¸æŠžã—ãŸåœ°ç‚¹æƒ…å ±\n * @param flightStatus æä¹—ä¾¿æƒ…å ±\n * @param targetAirline 対象ã¨ãªã‚‹èˆªç©ºä¼šç¤¾\n */\nexport async function saveDirection(isDepartureGuide: boolean, arrivalTimeToAirport: number, place: Place, flightStatus: FlightInfo, lang: Lang, targetAirline: AirlineList) {\n try {\n // 空港到ç€æœ€å°æ™‚é–“\n const ARRIVAL_MIN_TIME = 60;\n // ピーãƒä¾¿ä½¿ç”¨æ™‚ã®ç©ºæ¸¯åˆ°ç€æœ€å°æ™‚é–“\n const PEACH_CODE_SHARE_ARRIVAL_MIN_TIME = 75;\n // 春秋航空使用時ã®ç©ºæ¸¯æœ€å°æ™‚é–“\n const SPRING_ARRIVAL_MIN_TIME = 75;\n // åœ°ç‚¹æƒ…å ±ã®æ–‡å—列\n const pointCode = convertLocationToStr(place.getLocation());\n // 空港到ç€æ™‚é–“ã¯60分å‰æœªæº€ãªã‚‰60分ã«è¨å®šã™ã‚‹\n const arrivalTime = (()=>{\n // ピーãƒã®å ´åˆã«ã¯ç©ºæ¸¯åˆ°ç€æœ€å°æ™‚間を別ã«è¨å®šã™ã‚‹\n if(targetAirline === 'APJ') {\n return Math.max(arrivalTimeToAirport, PEACH_CODE_SHARE_ARRIVAL_MIN_TIME);\n }\n // 春秋航空ã®å ´åˆã«ã¯ç©ºæ¸¯åˆ°ç€æœ€å°æ™‚間を別ã«è¨å®šã™ã‚‹\n else if(targetAirline === 'SJO') {\n return Math.max(arrivalTimeToAirport, SPRING_ARRIVAL_MIN_TIME);\n }\n else {\n return Math.max(arrivalTimeToAirport, ARRIVAL_MIN_TIME);\n }\n })();\n\n /**\n * 空港を発ç€ã—ãªã‘ã‚Œã°ã„ã‘ãªã„時刻\n * 出発案内ã®å ´åˆã«ã¯ã“ã®æ™‚刻å‰ã«ã¯åˆ°ç€ã—ãªã‘ã‚Œã°ã„ã‘ãªã„\n * 到ç€æ¡ˆå†…ã®å ´åˆã«ã¯ã“ã®æ™‚刻ã«ç©ºæ¸¯ã‚’出発ã™ã‚‹\n */\n const airportTime: Date = flightStatus.getSearchTime(isDepartureGuide, arrivalTime);\n // 空港発ç€æ™‚間:到ç€æ¡ˆå†…ã§ã¯ç©ºæ¸¯å‡ºç™ºæ™‚é–“ã€å‡ºç™ºæ¡ˆå†…ã§ã¯ç©ºæ¸¯åˆ°ç€æ™‚é–“\n const airportTimeUnixTime: number = Math.floor(airportTime.getTime()/1000);\n // タクシーAPIã«æŠ•ã’るリクエストパラメーターを整備ã™ã‚‹\n let taxiAPIParams: GetDirectionAndFareSamplesParams = {\n // 空港コード\n airportLetter: flightStatus.getFixTerminalCode(isDepartureGuide),\n // to空港 or From空港\n operation: isDepartureGuide? GetDirectionAndFareOperation.pickup: GetDirectionAndFareOperation.dropOff,\n // 出発時刻\n datetimeAtAirport: airportTimeUnixTime,\n // 国内ã‹å›½éš›ã‹\n flightType: flightStatus.isDomestic? FlightType.domestic: FlightType.international,\n // Googleã®ãƒãƒªãƒ©ã‚¤ãƒ³ã‚’è¿½åŠ ã§è¿”ã™ã‹\n needPolyline: true,\n // è¨€èªžæƒ…å ±\n language: lang\n }\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±\n const setTerminal = flightStatus.getTerminal(isDepartureGuide).toString();\n if(setTerminal && setTerminal !== '') {\n taxiAPIParams = {\n ...taxiAPIParams,\n terminal: setTerminal\n }\n }\n // ã‚²ãƒ¼ãƒˆæƒ…å ±\n const setGate = flightStatus.bordingGate;\n if(setGate && setGate !== '') {\n taxiAPIParams = {\n ...taxiAPIParams,\n gate: setGate\n }\n }\n // 発ç€åœ°ç‚¹ã‚’入れる\n taxiAPIParams = {\n ...taxiAPIParams,\n pointInfo: {\n latLng: pointCode,\n // 英語版ã®å ´åˆè‹±èªžç‰ˆã®åœ°åラベルを入れる\n label: place.getFullAddress(lang),\n latLngForPriceCalc: pointCode,\n labelForPriceCalc: place.getFullAddress()\n }\n }\n // APIã«å•ã„åˆã‚ã›ã‚‹\n const result: GetDirectionAndFareSamplesResponse = await getDirectionAndFareSamplesAPI(taxiAPIParams);\n return result;\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(Environment.isDev(process.env['REACT_APP_STAGE_ENV'] || 'dev')) {\n console.error(e);\n }\n return null;\n }\n}\n","import { addDays } from \"date-fns\";\nimport { getClosedStationDetail } from \"../services/ekispert/api\";\nimport { getClosedGeocode } from \"../services/google/api\";\nimport Place from \"../services/google/Place\";\nimport { PointType } from \"../states/common\";\n\ninterface PlaceData {\n [key: string]: {\n limit: number,\n place: Place\n }\n}\n\nclass PlaceInfoFactory {\n // LocalStorageã«æ ¼ç´ã™ã‚‹Key\n static localStorageKey = 'ana_airport_access_navi_place_info';\n // LocalStorageã«ä¿å˜ã™ã‚‹Placeæƒ…å ±ã®ä¿æŒæœŸé™(1æ—¥)\n static dataLimitDay = 1;\n\n // LocalStorageã«ä¿å˜ã—ãŸå…¨ã¦ã®Placeデータをå–å¾—ã™ã‚‹\n static getAllPlaceData = () => {\n const getData = window.localStorage.getItem(PlaceInfoFactory.localStorageKey);\n if(getData) {\n return JSON.parse(getData);\n }\n // 見ã¤ã‹ã‚‰ãªã„å ´åˆã«ã¯ç©ºã‚ªãƒ–ジェクトを返ã™\n return {};\n }\n\n // データã®æœ‰åŠ¹æœŸé™ãŒéŽãŽã¦ã„ãªã„ã‹ãƒã‚§ãƒƒã‚¯ã™ã‚‹\n static checkLimitData = (data: PlaceData) => {\n const now = new Date().getTime();\n Object.keys(data).forEach((key: string)=>{\n // 有効期é™ãŒéŽãŽãŸPlaceæƒ…å ±ã¯å‰Šé™¤ã—ã¾ã™\n if(data[key].limit < now) {\n delete data[key];\n }\n });\n return data;\n }\n\n static setPlaceData = (key: string, place: Place) => {\n let allData: PlaceData = PlaceInfoFactory.getAllPlaceData();\n // 有効期é™ãŒåˆ‡ã‚ŒãŸPlaceæƒ…å ±ã‚’å‰Šé™¤ã™ã‚‹\n allData = PlaceInfoFactory.checkLimitData(allData);\n const limit = addDays(new Date(), PlaceInfoFactory.dataLimitDay).getTime()\n allData[key] = {\n limit: limit,\n place: place\n }\n window.localStorage.setItem(PlaceInfoFactory.localStorageKey, JSON.stringify(allData));\n }\n\n static getPlaceData = async (pointCode: string, pointType: string | null) => {\n const allData: PlaceData = PlaceInfoFactory.getAllPlaceData();\n const getPlaceObject = allData[pointCode];\n try {\n if(getPlaceObject) {\n return new Place(getPlaceObject.place);\n }\n // webStorageã«Placeæƒ…å ±ãŒä¿ç®¡ã•ã‚Œã¦ã„ãªã„å ´åˆã«ã¯GoogoeGeoCodeAPIよりPlaceæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n else if(pointType) {\n // GoogleGeocodeAPIã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®key\n let latlng;\n switch(pointType) {\n // 駅ã™ã±ã‚ã¨é§…コードã®å ´åˆã«ã¯é§…è©³ç´°æƒ…å ±ã‚’å–å¾—ã—ã¦ç·¯åº¦çµŒåº¦ã‚’å–å¾—ã™ã‚‹\n case PointType.STATION:\n const stationDetail = await getClosedStationDetail(pointCode);\n latlng = stationDetail.GeoPoint.lati_d+','+stationDetail.GeoPoint.longi_d;\n break;\n // åœ°ç‚¹æƒ…å ±ã ã£ãŸã‚‰ãã®ã¾ã¾ç·¯åº¦çµŒåº¦ã¨ãªã‚‹\n case PointType.COORDINATE:\n // CURRENT_POSITION/ADDRESSãŒæ¥ã‚‹ã“ã¨ã¯ç„¡ã„ãŒã€pointCodeã«ç·¯åº¦çµŒåº¦ãŒå…¥ã‚‹ã®ã¯åŒã˜ãªã®ã§åŒæ§˜ã«å‡¦ç†ã™ã‚‹\n // eslint-disable-next-line\n case PointType.ADDRESS:\n // eslint-disable-next-line\n case PointType.CURRENT_POSITION:\n latlng = pointCode;\n break;\n }\n if(latlng !== undefined) {\n // 地点ã®å ´åˆkeyã«ã¯ç·¯åº¦çµŒåº¦æƒ…å ±ãŒå…¥ã£ã¦ã„ã‚‹ã®ã§ãã®ã¾ã¾Placeæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n const places = await getClosedGeocode(latlng);\n if(places.length > 0) {\n const place = places[0];\n // å–å¾—ã§ããŸåœ°ç‚¹æƒ…å ±ã‚’ä¿å˜ã™ã‚‹\n PlaceInfoFactory.setPlaceData(pointCode, place);\n return new Place(place);\n }\n // å–å¾—ã—ãŸåœ°ç‚¹æƒ…å ±ãŒãªã„å ´åˆã«ã¯dev環境ã ã‘エラーを出ã™\n else if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(\"é¸æŠžã—ãŸåº§æ¨™ã§ã¯åœ°ç‚¹è©³ç´°æƒ…å ±ãŒå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ:\"+ latlng);\n console.error(places);\n }\n }\n return null;\n }\n // pointType ã‚‚ä¿ç®¡ã•ã‚Œã¦ã„ãªã„å ´åˆã«ã¯ä½•ã‚‚ã—ãªã„\n // pointType ãŒãªã„å ´åˆã¯æƒ³å®šã—ã¦ã„ãªã„ãŸã‚処ç†ã—ãªã„\n return null;\n }\n catch(error) {\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.debug(error);\n }\n return null;\n }\n }\n}\n\nexport default PlaceInfoFactory;\n","/** å„空港ã®é§…コードã¨ã‚¹ãƒªãƒ¼ã‚³ãƒ¼ãƒ‰ã®å¯¾å¿œè¡¨ */\n/** TODO: ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«ç§»è¡Œã•ã›ã‚‹ */\nexport const AirportsStationCodeMap: { [key: string]: string } = {\n\t\"20013\": \"AKJ\",\n\t\"20106\": \"OBO\",\n\t\"20107\": \"MBE\",\n\t\"20178\": \"KUH\",\n\t\"20428\": \"SHB\",\n\t\"20443\": \"HKD\",\n\t\"20570\": \"MMB\",\n\t\"20613\": \"WKJ\",\n\t\"20620\": \"AOJ\",\n\t\"21045\": \"SDJ\",\n\t\"21138\": \"AXT\",\n\t\"21335\": \"SYO\",\n\t\"21552\": \"FKS\",\n\t\"22827\": \"HND\",\n\t\"23691\": \"KMQ\",\n\t\"24034\": \"KIJ\",\n\t\"24723\": \"TOY\",\n\t\"25856\": \"ITM\",\n\t\"25892\": \"KIX\",\n\t\"26881\": \"TTJ\",\n\t\"26938\": \"IWJ\",\n\t\"27033\": \"YGJ\",\n\t\"27053\": \"OKJ\",\n\t\"27367\": \"HIJ\",\n\t\"27584\": \"UBJ\",\n\t\"27649\": \"TKS\",\n\t\"27725\": \"TAK\",\n\t\"27893\": \"MYJ\",\n\t\"27970\": \"KCZ\",\n\t\"28133\": \"KKJ\",\n\t\"28535\": \"NGS\",\n\t\"28628\": \"KMJ\",\n\t\"28743\": \"OIT\",\n\t\"28935\": \"KOJ\",\n\t\"29110\": \"NRT\",\n\t\"29113\": \"HAC\",\n\t\"29115\": \"MMY\",\n\t\"29116\": \"ISG\",\n\t\"29118\": \"FUJ\",\n\t\"29119\": \"TSJ\",\n\t\"29120\": \"IKI\",\n\t\"29129\": \"RIS\",\n\t\"29147\": \"ONJ\",\n\t\"29148\": \"FSZ\",\n\t\"29150\": \"UKB\",\n\t\"29152\": \"HSG\",\n\t\"29153\": \"NTQ\",\n\t\"29411\": \"NGO\",\n\t\"29654\": \"CTS\",\n\t\"29655\": \"FUK\",\n\t\"29656\": \"KMI\",\n\t\"29657\": \"OKA\",\n\t\"29706\": \"IWK\",\n\t\"29313\": \"AXJ\",\n\t\"29121\": \"TNE\",\n\t\"29122\": \"KUM\",\n\t\"29125\": \"RNJ\",\n\t\"29128\": \"KKX\",\n\t\"29124\": \"OKE\",\n\t\"29114\": \"ASJ\",\n\t\"29123\": \"TKN\"\n}\n","import Airlines, { AirlineList } from \"../../utils/Airlines\";\nimport FlightInfo from \"../ana/models/flightInfo\";\nimport { getAverageRail, getPlaneTimeTbile } from \"./api\";\nimport { AirportsStationCodeMap } from \"./data/airportsStationCodeMap\";\nimport { PlaneTimeTable } from \"./models/planeTimetable\";\n\n/**\n * 航空路線時刻表ã‹ã‚‰æŠ½å‡ºã—ãŸæ™‚åˆ»è¡¨æƒ…å ±ã‚ˆã‚Šã€ãƒžãƒƒãƒã™ã‚‹ç©ºè·¯æƒ…å ±ã‚’æŠ½å‡ºã™ã‚‹\n * @param timetables 航空路線時刻表ã‹ã‚‰æŠ½å‡ºã—ãŸæ™‚åˆ»è¡¨æƒ…å ±ã‚ˆ\n * @param flightNumber 目的ã®ãƒ•ãƒ©ã‚¤ãƒˆãƒŠãƒ³ãƒãƒ¼\n * @param airline 目的ã®èˆªç©ºä¼šç¤¾\n */\nconst filterTimeTable = (timetables: PlaneTimeTable, flightNumber: string, airline: AirlineList) => {\n /** ソラシド(SNJ)ã¯é§…ã™ã±ã‚ã¨ä¸Šã¯SNAãªã®ã§ä¿®æ£ã™ã‚‹ */\n const fixAirline = airline === 'SNJ'? 'SNA': airline;\n /** 便番å·ã®æ•°å—部分ã ã‘を抽出ã™ã‚‹ */\n const flightNumberPart = Number(flightNumber.replace(/[^0-9]/g,''));\n if(!timetables.Line) {\n return undefined;\n }\n const lines = Array.isArray(timetables.Line)? timetables.Line: [timetables.Line];\n return lines.find((line) => {\n /** 航空会社ãŒä¸€è‡´ã™ã‚‹ã‹ */\n const isMatchAirLine = fixAirline === line.Name.abbreviation;\n /** 便番å·ãŒä¸€è‡´ã™ã‚‹ã‹ */\n /** å…ˆé ã«0ãŒã¤ãã‹ã©ã†ã‹ã§è¡¨è¨˜ã‚†ã‚Œã—ãã†ãªã®ã§ã€ã™ã¹ã¦æ•°å€¤åž‹ã«å¤‰æ›ã•ã›ã¦æ¯”較ã™ã‚‹ */\n const isMatchNumber = flightNumberPart === Number(line.Number);\n return isMatchAirLine && isMatchNumber;\n })\n}\n\n/**\n * 駅ã™ã±ã‚ã¨ã‚ˆã‚Šç©ºè·¯æƒ…å ±ã‚’æ§‹ç¯‰ã™ã‚‹\n * @param depAirportCode 出発空港(スリーコード)\n * @param arrAirportCode 到ç€ç©ºæ¸¯ï¼ˆã‚¹ãƒªãƒ¼ã‚³ãƒ¼ãƒ‰ï¼‰\n * @param depDate 出発日\n * @param flightNumber フライトナンãƒãƒ¼\n * @param airline 航空会社\n * @returns flightInfoåž‹ã®é§…ã™ã±ã‚ã¨æƒ…å ±ã‹ã‚‰æ§‹ç¯‰ã—ãŸç©ºè·¯æƒ…å ±\n */\nexport const getPlaneTimetabile = async (depAirportCode: string, arrAirportCode: string, depDate: Date, flightNumber: string, airline: AirlineList) => {\n /**\n * 1. 発ç€ãƒ¬ã‚¿ãƒ¼ã‚³ãƒ¼ãƒ‰ã‚’駅ã™ã±ã‚ã¨é§…コードã«å¤‰æ›\n * 2. å¹³å‡è·¯ç·šæ¤œç´¢ã«ã¦type:planeã«ã—ãŸä¸Šã§å¹³å‡è·¯ç·šåã‚’å–å¾—\n * 3. 航空路線時刻表ã§è©²å½“路線ã®å…¨æ™‚刻表をå–å¾—\n * 4. 連æºã—ãŸèˆªç©ºä¼šç¤¾ã¨ä¾¿ç•ªå·ã‚ˆã‚Šãƒžãƒƒãƒã™ã‚‹ãƒ•ãƒ©ã‚¤ãƒˆã‚’探索\n * 5. マッãƒã—ãŸãƒ•ãƒ©ã‚¤ãƒˆã®ç™ºç€æ™‚刻をå–å¾—ã™ã‚‹\n */\n const fligt = new FlightInfo();\n /** 特定ã®èˆªç©ºä¼šç¤¾ã®å ´åˆã«ã¯ã“ã¡ã‚‰ã®å‡¦ç†ã¯è¡Œã‚ãªã„ */\n if(Airlines.isNotGetTimeTablePlane(airline)) {\n return fligt;\n }\n /** 1. 発ç€ãƒ¬ã‚¿ãƒ¼ã‚³ãƒ¼ãƒ‰ã‚’駅ã™ã±ã‚ã¨é§…コードã«å¤‰æ› */\n const depAirportStationCode = Object.keys(AirportsStationCodeMap).find((statingCode: string) => {\n return AirportsStationCodeMap[statingCode] === depAirportCode;\n });\n const arrAirportStationCode = Object.keys(AirportsStationCodeMap).find((statingCode: string) => {\n return AirportsStationCodeMap[statingCode] === arrAirportCode;\n });\n try {\n if(!depAirportStationCode || !arrAirportStationCode) {\n throw new Error('ç©ºè·¯æƒ…å ±EWSå–å¾—: 発ç€ç©ºæ¸¯ãŒãƒªã‚¹ãƒˆã«ã‚ã‚Šã¾ã›ã‚“');\n }\n /** 2. å¹³å‡è·¯ç·šæ¤œç´¢ã«ã¦type:planeã«ã—ãŸä¸Šã§å¹³å‡è·¯ç·šåã‚’å–å¾— */\n const averageRail = await getAverageRail(depAirportStationCode, arrAirportStationCode);\n /** å¹³å‡è·¯ç·šåã‚’å–å¾—ã™ã‚‹ */\n const lineName = averageRail?.Line?.Name;\n if(!lineName) {\n throw new Error(\"ç©ºè·¯æƒ…å ±EWSå–å¾—: å¹³å‡è·¯ç·šåãŒå–得出æ¥ã¾ã›ã‚“ã§ã—ãŸ\")\n }\n /** 3. 航空路線時刻表ã§è©²å½“路線ã®å…¨æ™‚刻表をå–å¾— */\n /** 上りã®æ™‚刻表をå–å¾—ã™ã‚‹ */\n /** TODO: ã“ã®æ™‚点ã§å¯¾è±¡ã®åŒºé–“ãŒä¸Šã‚Šãƒ»ä¸‹ã‚Šã‹ã‚’判別ã™ã‚‹ */\n const upPlaneTimeTabile = await getPlaneTimeTbile(lineName, depDate, true);\n let targetLine = undefined;\n if(upPlaneTimeTabile.TimeTable) {\n targetLine = filterTimeTable(upPlaneTimeTabile.TimeTable, flightNumber, airline);\n }\n /** 上りã§è¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«ã¯ä¸‹ã‚Šã‚’å–å¾—ã™ã‚‹ */\n if(!targetLine) {\n const downPlaneTimeTabile = await getPlaneTimeTbile(lineName, depDate, false);\n if(downPlaneTimeTabile.TimeTable) {\n targetLine = filterTimeTable(downPlaneTimeTabile.TimeTable, flightNumber, airline);\n }\n }\n if(!targetLine) {\n const errorMessage = \"ç©ºè·¯æƒ…å ±EWSå–å¾—: マッãƒã™ã‚‹è·¯ç·šãŒæ™‚刻表ã‹ã‚‰è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\\n\" +\n `便å: ${flightNumber}\\n` +\n `出発空港: ${depAirportCode}\\n` +\n `到ç€ç©ºæ¸¯: ${arrAirportCode}\\n` +\n `航空会社: ${airline}`;\n throw new Error(errorMessage);\n }\n fligt.updateTimeTableLine(depDate, targetLine);\n return fligt;\n }\n catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n return new FlightInfo();\n }\n}","/** referrerパラメーターã«é–¢ã™ã‚‹å‡¦ç†ã‚’ã¾ã¨ã‚ãŸã‚¯ãƒ©ã‚¹ã€‚ */\nexport default class ReferrerParam {\n /** ANAアプリ国内ã®å ´åˆã®ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ã€‚ */\n static readonly APP_DOM = 'appdms';\n /** ANAアプリ国際ã®å ´åˆã®ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ã€‚ */\n static readonly APP_INT = 'appint';\n /** ANAアプリ国内ã®å ´åˆã®ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ã€‚(ãã®2) */\n static readonly APP_DOM_1 = 'appdms1';\n /** ANAアプリ国際ã®å ´åˆã®ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ã€‚(ãã®2) */\n static readonly APP_INT_1 = 'appint1';\n /** 広島空港ã‹ã‚‰ã®é·ç§»ã§ä½¿ã†ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ */\n static readonly HIROSHIMA_AIRPORT = 'hijapo';\n /** ç¦å³¶ç©ºæ¸¯ã‹ã‚‰ã®é·ç§»ã§ä½¿ã†ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ */\n static readonly FUKUSHIMA_AIRPORT = 'fksapo';\n /** æ¾å±±ç©ºæ¸¯ã‹ã‚‰ã®é·ç§»ã§ä½¿ã†ãƒªãƒ•ã‚¡ãƒ©ãƒ¼ */\n static readonly MATSUYAMA_AIRPORT = 'myjapo';\n /** 熊本空港ã‹ã‚‰ã®é·ç§»ã§ä½¿ã†referrer */\n static readonly KUMAMOTO_AIRPORT = 'kmjapo';\n\n /** ANAアプリã¨ã—ã¦æ‰±ã†referrerパラメーターã®Set型オブジェクト。 */\n static readonly APP = new Set([\n ReferrerParam.APP_DOM,\n ReferrerParam.APP_DOM_1,\n ReferrerParam.APP_INT,\n ReferrerParam.APP_INT_1\n ]);\n\n /** 特定空港ã‹ã‚‰ã®é·ç§»ã¨ã—ã¦æ‰±ã†referrerパラメーターã®Set型オブジェクト。 */\n static readonly AIRPORTSITE = new Set([\n ReferrerParam.HIROSHIMA_AIRPORT,\n ReferrerParam.FUKUSHIMA_AIRPORT,\n ReferrerParam.MATSUYAMA_AIRPORT,\n ReferrerParam.KUMAMOTO_AIRPORT\n ]);\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€ANAアプリã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isApp(referrer: string) {\n return this.APP.has(referrer);\n }\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€ç©ºæ¸¯ã‚µã‚¤ãƒˆã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isAirportSite(referrer: string) {\n return this.AIRPORTSITE.has(referrer);\n }\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€åºƒå³¶ç©ºæ¸¯ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isHiroshimaAirport(referrer: string) {\n return this.HIROSHIMA_AIRPORT === referrer;\n }\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€ç¦å³¶ç©ºæ¸¯ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isFukushimaAirport(referrer: string) {\n return this.FUKUSHIMA_AIRPORT === referrer;\n }\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€æ¾å±±ç©ºæ¸¯ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isMatsuyamaAirport(referrer: string) {\n return this.MATSUYAMA_AIRPORT === referrer;\n }\n\n /**\n * referrerパラメーターã®å€¤ã‚’å…ƒã«ã€ç†Šæœ¬ç©ºæ¸¯ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ã€‚\n * @param referrer 連æºã•ã‚ŒãŸreferrerパラメーターã®å€¤ã€‚\n */\n static isKumamotoAirport(referrer: string) {\n return this.KUMAMOTO_AIRPORT === referrer;\n }\n}\n","import JRKyushuReserveLinkData from \"../jrkyushu/JRKyushuReserveLinkData\";\nimport { AswInCourseInfoList } from \"../public/models/aswLinkageInfo\";\nimport { ResTokyoLimousineBusFormat } from \"../tokyolimousinebus/api\";\nimport { WalkPointResponse } from \"../universalMaas/util\";\n\n/**\n * ãˆããã£ã¨è©²å½“区間ã®ä¼šç¤¾ã‚¿ã‚¤ãƒ—\n * 富士回éŠï¼ˆJRæ±æ—¥æœ¬ãƒ»å¯Œå£«æ€¥è¡Œï¼‰ã¿ãŸã„ã«1区間ã§è¤‡æ•°ã®ä¼šç¤¾ã‚’è·¨ã列車ãŒå¯¾è±¡ã«ãªã£ãŸã‚‰ã“ã“ã¯è¦‹ç›´ã™å¿…è¦ãŒå‡ºã¦ãã‚‹\n **/\nexport enum EkinetCompanyType {\n /** JRæ±æ—¥æœ¬ */\n 'JRE' = 'JRE',\n /** JRåŒ—æµ·é“ */\n 'JRH' = 'JRH'\n}\n\n/**\n * 駅ã™ã±ã‚ã¨Webサービスã®ã€Œ/v1/json/search/course/extremeã€ãƒ‘スã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®åž‹ã‚’定義ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã€‚\n */\nexport interface Extreme {\n ResultSet: ResultSet;\n}\n\nexport interface ResultSet {\n apiVersion: string;\n engineVersion: string;\n Course: Course[];\n}\n\n// æ‹¡å¼µã—ãŸCourseã®è¦ç´ \n// TODO: æ‹¡å¼µã¨ã‚ã‹ã‚‹ã‚ˆã†ã«extendsè¦ç´ ã«æŒãŸã›ã‚‹\nexport interface Course extends BaseCourse {\n feeLabel: string;\n /** JRä¹å·žäºˆç´„æƒ…å ± */\n JRKyushuReserveLinkData?: JRKyushuReserveLinkData;\n /** 最å°ä¹—æ›å›žæ•°çµŒè·¯ã‹ */\n isLeastTransferCount: boolean;\n /** 最速経路㋠*/\n isFast: boolean;\n /** 最安経路㋠*/\n isLowPrice: boolean;\n /** åˆè¨ˆé‹è³ƒ */\n sumPrice: number;\n /** 空港連絡ãƒã‚¹ã‚’使用ã™ã‚‹çµŒè·¯åŒ– */\n hasAirportBus: boolean;\n /** 高速ãƒã‚¹ã‚’使用ã—ãŸçµŒè·¯ã‹ */\n hasByHighwaySection: boolean;\n OperationLinePattern: any;\n /** æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„ã®åŒºé–“ãŒçµŒè·¯ä¸ã«å˜åœ¨ã™ã‚‹ã‹ */\n hasTokyoSubwaySection?: boolean;\n /** 京急&Subwayãƒã‚±ãƒƒãƒˆã‚’表示ã™ã‚‹åŒºé–“ãŒçµŒè·¯ä¸ã«å˜åœ¨ã™ã‚‹ã‹ */\n hasKeikyuAndSubwayTicketSection?: boolean;\n isTaxi?: boolean;\n /** æ··é›‘æƒ…å ±ã‚’åŠ å‘³ã—ãŸãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ æƒ…å ±ã‹(タクシー経路ã®å ´åˆ) */\n isRealTime?: boolean;\n displayIndex: string;\n /** ASWよりスクレイピングã—ãŸæœ€å®‰ç©ºè·¯é‹è³ƒæƒ…å ± */\n AswInfo?: AswInCourseInfoList;\n /** UniversalMaaS用: 一括サãƒãƒ¼ãƒˆæ‰‹é…ボタンを表示ã™ã‚‹ã‹ */\n bulkSupportArrangementFlag?: boolean\n}\n\n// ekispert/extreme/Courseã¨åŒã˜Courseåž‹\ninterface BaseCourse {\n searchType: string;\n dataType: string;\n SerializeData: string;\n Price: Price[];\n Route: Route;\n fares: { [key: string]: Fare; };\n charges: { [key: string]: Charge; };\n}\n\nexport interface Price {\n kind: string;\n Oneway: string | PriceOneway;\n Round: string;\n fareRevisionStatus?: string;\n toLineIndex?: string;\n fromLineIndex?: string;\n index: string;\n selected?: string;\n Name?: string;\n Type?: string;\n RevisionStatus?: string;\n Rate?: Rate;\n}\n\nexport interface PriceOneway {\n text: string;\n remark: string;\n fullRemark: string;\n}\n\nexport interface Rate {\n text: string;\n area: string;\n}\n\nexport interface Route {\n timeOther: string;\n timeOnBoard: string;\n exhaustCO2: string;\n exhaustCO2atPassengerCar: string;\n distance: string;\n timeWalk: string;\n transferCount: string;\n Line: Line[];\n Point: Point[];\n allTime: number;\n}\n\n// æ‹¡å¼µã—ãŸLineã®è¦ç´ \n// TODO: æ‹¡å¼µã¨ã‚ã‹ã‚‹ã‚ˆã†ã«extendsè¦ç´ ã«æŒãŸã›ã‚‹\nexport interface Line extends BaseLine {\n isShowViaTerminal?: boolean;\n isShowJRHokkaidoFreePass?: boolean;\n isShowJRKyushuLink?: boolean;\n // 区間ãŒæ±äº¬åœ°ä¸‹é‰„・都営地下鉄ã§å®Œçµã™ã‚‹\n hasOnlyTokyoSubwaySeciton?: boolean;\n // 区間ä¸ã«äº¬æ€¥ãƒ»æ±äº¬åœ°ä¸‹é‰„・都営地下鉄ã®åŒºé–“ãŒå«ã¾ã‚Œã‚‹\n hasTargetKeikyuSection?: boolean;\n isShowTokyoLimousineBus?: boolean;\n isShowOsakaLimousineBus?: boolean;\n viaTerminalName?: string;\n viaTerminalCode?: string;\n Comment?: Comment;\n TypicalName?: string;\n koboBusLink?: KoboLink;\n PreCautionalComment?: string;\n tokyoLimousineBusLink?: ResTokyoLimousineBusFormat;\n // UniversalMaasã®å¾’æ©çµŒè·¯URL\n universalMaaSWalk?: WalkPointResponse;\n // UniversalMaaS用置æ›å‰SectionIndexデータ\n rawSectionIndex?: number;\n // ãˆããã£ã¨é€£æºãƒªãƒ³ã‚¯\n ekinetLink?: EkinetLink;\n}\n\nexport interface EkinetLink {\n url: string,\n type: EkinetCompanyType[]\n}\n\n// ekispert/extreme/LIneã¨åŒã˜Lineåž‹\ninterface BaseLine {\n stopStationCount: string;\n chargeIndex?: string;\n timeOnBoard: string;\n track: string;\n exhaustCO2: string;\n fareIndex: string;\n exhaustCO2atPassengerCar: string;\n distance: string;\n trainID?: string;\n Name: string;\n Type: string | TypeClass;\n ArrivalState: State;\n Destination: string;\n Number?: string;\n TimeReliability: string;\n DepartureState: State;\n Color: string;\n LineSymbol?: LineSymbol;\n InsideInformation?: InsideInformation;\n}\n\nexport interface KoboLink {\n onelineQuery: string;\n host: string,\n query: {\n [key: string]: string | undefined\n }\n}\n\nexport interface InsideInformation {\n navigatorTransportation: string;\n Section: Section;\n Stop: Stop[];\n}\n\nexport interface Section {\n Name: string;\n NickName: string;\n Previous: Next;\n Next?: Next;\n}\n\nexport interface Next {\n Station: LineSymbol;\n}\n\nexport interface Stop {\n ArrivalState?: StopArrivalState;\n Point: StopPoint;\n DepartureState?: StopArrivalState;\n}\n\nexport interface StopArrivalState {\n Datetime: Datetime;\n}\n\nexport interface StopPoint {\n getOff: string;\n getOn: string;\n Station: LineSymbol;\n Prefecture: LineSymbol;\n}\n\nexport interface State {\n no: string;\n Type: string;\n Datetime: Datetime;\n}\n\nexport interface Datetime {\n text: string;\n operation: string;\n}\n\n\nexport interface LineSymbol {\n code: string;\n Name: string;\n}\n\nexport interface TypeClass {\n text: string;\n detail: string;\n}\n\nexport interface Point {\n Station: Station;\n Prefecture: LineSymbol;\n GeoPoint: GeoPoint;\n Name?: string;\n // PublicModeã§ä½¿ç”¨ã™ã‚‹å†æ¤œç´¢ã§å¿…è¦ãªãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯æƒ…å ±\n landmarkSerializeData?: string;\n // Public用\n Type?: string;\n Location?: {\n latlng: string\n }\n}\n\nexport interface GeoPoint {\n longi: string;\n lati: string;\n longi_d: string;\n gcs: string;\n lati_d: string;\n}\n\nexport interface Station {\n code: string;\n Name: string;\n Type: string;\n Yomi: string;\n letter?: string;\n}\n\nexport interface ConditionDetail {\n ResultSet: CondtionResultSet;\n}\n\nexport interface CondtionResultSet {\n apiVersion: string;\n engineVersion: string;\n Condition: string;\n}\n\nexport interface Traininfo {\n provider: string;\n status: string;\n Line: {\n corporationIndex: string;\n code: string;\n Name: string;\n };\n Title: string;\n Comment: Comment[];\n Datetime: Date;\n}\n\ninterface Comment {\n text: string;\n status: string;\n}\n\nexport interface TraininfoList {\n [key: string]: Traininfo;\n}\n\n// Converts JSON strings to/from your types\nexport class Convert {\n public static toExtreme(json: string): Extreme {\n return JSON.parse(json);\n }\n\n /**\n * 駅ã™ã±ã‚ã¨Webサービスã®æŽ¢ç´¢çµæžœã®ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’Courseåž‹ã®é…列ã«æ•´å½¢ã™ã‚‹ã€‚\n * @param json 駅ã™ã±ã‚ã¨Webサービスã‹ã‚‰è¿”å´ã•ã‚ŒãŸæŽ¢ç´¢çµæžœã®JSON\n */\n public static toCourses(json: string): Course[] {\n const extreme: Extreme = JSON.parse(json);\n let courses: Course[] = [];\n\n // ResultSetè¦ç´ ・Courseè¦ç´ ãŒå˜åœ¨ã™ã‚‹å ´åˆã®ã¿ä»¥ä¸‹ã®å‡¦ç†ã‚’ã™ã‚‹ã€‚\n if (extreme.ResultSet && extreme.ResultSet.Course) {\n // Courseè¦ç´ ãŒé…列ã®å ´åˆã¯ãã®ã¾ã¾æ ¼ç´ã™ã‚‹ã€‚\n if (Array.isArray(extreme.ResultSet.Course)) {\n courses = extreme.ResultSet.Course;\n // Courseè¦ç´ ãŒé…列以外(オブジェクト)ã®å ´åˆã¯ã€é…列ã«è¿½åŠ ã™ã‚‹ã€‚\n } else {\n courses.push(extreme.ResultSet.Course);\n }\n\n // å„経路をループã•ã›ã‚‹ã€‚\n courses.forEach(course => {\n let fares: { [key: string]: Fare; } = {};\n let charges: { [key: string]: Charge; } = {};\n // é‹è³ƒãƒ»æ–™é‡‘æƒ…å ±ã®æ•´å½¢ã‚’ã™ã‚‹ã€‚\n course.Price.forEach(p => {\n switch (p.kind) {\n // 種別ãŒFare(é‹è³ƒï¼‰ã®å ´åˆã€‚\n case 'Fare':\n fares[p.index] = new Fare(p);\n break;\n // 種別ãŒCharge(料金)ã®å ´åˆã€‚\n case 'Charge':\n charges[p.index] = new Charge(p);\n break;\n default:\n break;\n }\n });\n\n // è·¯ç·šæƒ…å ±ã®æ•´å½¢ã‚’ã™ã‚‹ã€‚\n // (路線ãŒ1ã¤ã®å ´åˆã€é…列ã§ã¯ãªãオブジェクトã§è¿”ã‚‹å ´åˆãŒã‚ã‚‹ãŸã‚。)\n let lines: Line[] = [];\n if (Array.isArray(course.Route.Line)) {\n lines = course.Route.Line;\n } else {\n lines.push(course.Route.Line);\n }\n\n course.fares = fares;\n course.charges = charges;\n course.Route.Line = lines;\n })\n }\n return courses;\n }\n\n public static extremeToJson(value: Extreme): string {\n return JSON.stringify(value);\n }\n}\n\nexport class Fare {\n fareRevisionStatus?: string;\n toLineIndex?: string;\n fromLineIndex?: string;\n index?: string;\n selected?: string;\n oneway?: string;\n revisionStatus?: string;\n round?: string;\n\n constructor(price: Price) {\n this.fareRevisionStatus = price.fareRevisionStatus;\n this.toLineIndex = price.toLineIndex;\n this.fromLineIndex = price.fromLineIndex;\n this.index = price.index;\n this.oneway = price.index;\n this.revisionStatus = price.RevisionStatus;\n this.round = price.Round;\n this.selected = price.selected;\n }\n}\n\nexport class Charge extends Fare{\n constructor(price: Price) {\n super(price);\n }\n}\n","import { EkinetCompanyType, Line } from \"../ekispert/models\";\nimport JRELineList from \"./data/jre_line_list.json\";\nimport JRHLineList from \"./data/jrh_line_list.json\";\n\n/** JREã®è·¯ç·šä¸€è¦§ */\nconst JRELineListArray: string[] = JRELineList.map((x) => {\n return x.code;\n})\n/** JRHã®è·¯ç·šä¸€è¦§ */\nconst JRHLineListArray: string[] = JRHLineList.map((x) => {\n return x.code;\n})\n\n// å„Lineè¦ç´ ã«ãˆããã£ã¨ã«é–¢ã™ã‚‹æƒ…å ±ã‚’æ‹¡å¼µ\nexport class EkinetInfoLine {\n /** ãˆããã£ã¨å¯¾è±¡åŒºé–“ã‹ */\n isEkinetSection: boolean;\n /** 該当区間ã®ä¼šç¤¾ã‚¿ã‚¤ãƒ— */\n companies: EkinetCompanyType[];\n /** 対象区間ã®æœ€ã‚‚安ã„特急料金 */\n mostCheapChage: number;\n /** ãˆããã£ã¨é€£æºå¯¾è±¡åŒºé–“ã‹ */\n isShowEkinetLink: boolean;\n /** 該当区間ã®Lineè¦ç´ */\n line: Line\n\n constructor(line: Line) {\n this.isEkinetSection = false;\n this.mostCheapChage = 0;\n this.companies = [];\n this.isShowEkinetLink = false;\n this.line = line;\n }\n\n /**\n * OperationLineList ã‹ã‚‰ã©ã®ä¼šç¤¾ã‚’使用ã™ã‚‹ã‹ã®ä¸€è¦§ã‚’å–å¾—ã™ã‚‹\n * @param olpList OperationLineList\n */\n static getCompanies(olpList: string[]): EkinetCompanyType[] {\n const companies: Set<EkinetCompanyType> = new Set();\n olpList.forEach((x) => {\n /** JRæ±æ—¥æœ¬ã®è·¯ç·šãŒå«ã¾ã‚Œã‚‹ã‹ */\n if(JRELineListArray.includes(x)) {\n companies.add(EkinetCompanyType.JRE);\n }\n /** JR北海é“ã®è·¯ç·šãŒå«ã¾ã‚Œã‚‹ã‹ */\n if(JRHLineListArray.includes(x)) {\n companies.add(EkinetCompanyType.JRH);\n }\n })\n return Array.from(companies);\n }\n\n /**\n * 該当区間ã«ãˆããã£ã¨ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹åˆ¤å®šã™ã‚‹\n */\n setIsShowLink() {\n if(!this.isEkinetSection) {\n this.isShowEkinetLink = false;\n }\n /** ç¾çŠ¶ã§ã¯è¤‡æ•°ã®ä¼šç¤¾ã«ã¾ãŸãŒã‚‹å ´åˆã‚’考慮ã—ã¦ã„ãªã„ */\n /** 対象区間ãŒJREã®å ´åˆã€æ–™é‡‘ãŒ0円ã®åŒºé–“ã§ã¯ãƒœã‚¿ãƒ³ã‚’éžè¡¨ç¤ºã«ã™ã‚‹ */\n else if(this.companies.includes(EkinetCompanyType.JRE)) {\n this.isShowEkinetLink = this.mostCheapChage !== 0;\n }\n /** 対象区間ãŒJRHã®å ´åˆã€è©²å½“Lineã®åˆ—車åã«ã€Œå¿«é€Ÿã‚¨ã‚¢ãƒãƒ¼ãƒˆã€ã€Œç‰¹åˆ¥å¿«é€Ÿã‚¨ã‚¢ãƒãƒ¼ãƒˆã€ãŒå«ã¾ã‚Œã¦ã„ãªã‘ã‚Œã°éžè¡¨ç¤ºã«ã™ã‚‹ */\n else if(this.companies.includes(EkinetCompanyType.JRH)) {\n const acceptTrainNameList = ['快速エアãƒãƒ¼ãƒˆ', '特別快速エアãƒãƒ¼ãƒˆ'];\n this.isShowEkinetLink = acceptTrainNameList.some((x)=>{ return this.line.Name.includes(x) });\n }\n }\n}\n\n","import { Lang } from \"../../states/query\";\nimport DateTime from \"../../utils/dateTime\";\nimport { Course, EkinetCompanyType } from \"../ekispert/models\";\nimport EkinetStationObj from \"./data/ekinet_station_list.json\";\nimport JRELineList from \"./data/jre_line_list.json\";\nimport JRHLineList from \"./data/jrh_line_list.json\";\nimport { EkinetInfoLine } from \"./ekinetInfoLine\";\n\nexport interface EkinetStation {\n ekinetName: string,\n ewsName: string\n}\n\n// ãˆããã£ã¨ã§å–り扱ã„ã§ãる駅リスト\nconst EkinetStationList: { [key: string]: EkinetStation } = EkinetStationObj;\n/** JREã®è·¯ç·šä¸€è¦§ */\nconst JRELineListArray: string[] = JRELineList.map((x) => {\n return x.code;\n})\n/** JRHã®è·¯ç·šä¸€è¦§ */\nconst JRHLineListArray: string[] = JRHLineList.map((x) => {\n return x.code;\n})\n/** ãˆããã£ã¨å¯¾è±¡è·¯ç·šä¸€è¦§ */\nconst EkinetLineListArray: string[] = JRELineListArray.concat(JRHLineListArray);\n\n// 実際ã«é·ç§»ã™ã‚‹éš›ã®ã‚¯ã‚¨ãƒªæƒ…å ±\ninterface JREEkinetParams {\n /** 発駅リスト */\n from_ticketing_stop_time_id: string,\n /** ç€é§…リスト */\n to_ticketing_stop_time_id: string,\n /** 発時刻リスト */\n boarding_time: string,\n /** 人数(ãŠã¨ãª) */\n num_adult: string,\n /** 人数(ã“ã©ã‚‚) */\n num_child: string,\n /** トラッã‚ングコード: utm_source */\n utm_source: string,\n /** トラッã‚ングコード: utm_medium */\n utm_medium: string,\n /** トラッã‚ングコード: utm_campaign */\n utm_campaign: string,\n /** トラッã‚ングコード: utm_content */\n utm_content: string\n}\n\n// é·ç§»ç”¨ã®ã‚¯ã‚¨ãƒªã‚’生æˆã™ã‚‹ãŸã‚ã®å…ƒæƒ…å ±\ninterface JREEkinetBaseParams {\n /** 発ç€çµŒç”±é§…コードリスト */\n stationCodeList: string[],\n /** 出発時刻リスト */\n depTimeList: string[],\n /** 対象ã¨ãªã‚‹Lineè¦ç´ リスト */\n lineIdxList: number[],\n /** 該当区間ã®ä¼šç¤¾ã‚¿ã‚¤ãƒ— */\n companies: EkinetCompanyType[];\n}\n\n/** ãˆããã£ã¨é€£æºã«é–¢ã™ã‚‹Class */\nexport default class JREEkinet {\n /** 基本ã¨ãªã‚‹URL */\n static BASE_URL: string = 'https://www.eki-net.com/Personal/reserve/wb/RouteSearchConditionInput/ExternalTransitionProcNe';\n /** 基本ã¨ãªã‚‹ãŠã¨ãªäººæ•° */\n static ADULT_NUM: string = \"1\";\n /** 基本ã¨ãªã‚‹ã“ã©ã‚‚人数 */\n static CHILD_NUM: string = \"0\";\n /** トラッã‚ングコード: utm_source */\n static UTM_SOURCE = 'an';\n /** トラッã‚ングコード: utm_medium */\n static UTM_MEDIUM = 'sea';\n /** トラッã‚ングコード: utm_campaign */\n static UTM_CAMPAIGN = 'transit';\n /** トラッã‚ングコード: utm_content */\n static UTM_CONTENT = 'airport_access';\n\n /** リンク元ã¨ãªã‚‹ãƒ‡ãƒ¼ã‚¿ä¸€è¦§ */\n linkDatas: JREEkinetBaseParams[];\n /** ãˆããã£ã¨ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹Lineã”ã¨ã®æƒ…å ±ã‚’å…¥ã‚Œã‚‹ */\n ekinetInfoLines: EkinetInfoLine[];\n /** å‚照用ã®çµŒè·¯æƒ…å ± */\n course: Course;\n\n constructor(course: Course) {\n this.linkDatas = [];\n this.ekinetInfoLines = [];\n this.course = course;\n }\n\n /**\n * å„区間ãŒãˆããã£ã¨äºˆç´„対象区間ã‹ã‚’判定ã™ã‚‹\n **/\n setIsShowLinkSections() {\n // ãˆããã£ã¨ã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹Lineã”ã¨ã®æƒ…å ±ã‚’å…¥ã‚Œã‚‹\n this.ekinetInfoLines = this.course.Route.Line.map((line) => {\n return new EkinetInfoLine(line);\n });\n const operationLinePatterns = this.course.OperationLinePattern.length? this.course.OperationLinePattern: [this.course.OperationLinePattern];\n operationLinePatterns.forEach((olp: any) => {\n /** 1始ã¾ã‚Šã®Index値 */\n const routeLineIndex = Number(olp.routeLineIndex);\n /** 挿入対象ã®æ‹¡å¼µLineè¦ç´ */\n const targetExtendLineLine = this.ekinetInfoLines[routeLineIndex-1];\n /** Operation Line Pattern Lines */\n const olpLines = olp.Line.length? olp.Line: [olp.Line];\n /** 1区間ã«è·¨ã‚‹ç·šåŒºã®ä¸€è¦§ */\n const olpLineList: string[] = olpLines.map((line: any)=>{ return line.code; });\n /** 該当区間全ã¦JREã®åŒºé–“ã‹ã‚’判定ã™ã‚‹ */\n let isEkinetTargetLine = olpLineList.every((line: string) => {\n return EkinetLineListArray.includes(line);\n })\n /** 発ç€é§…ã®é§…コードを求ã‚ã€å‡ºç™ºé§…・到ç€é§…ã¨ã‚‚ã«ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ã‚‹ã‹ã‚’確èªã™ã‚‹ */\n const depStationCode = this.course.Route.Point[routeLineIndex-1].Station.code;\n const arrStationCode = this.course.Route.Point[routeLineIndex].Station.code;\n isEkinetTargetLine = isEkinetTargetLine && EkinetStationList[depStationCode] !== undefined && EkinetStationList[arrStationCode] !== undefined;\n // 該当区間ãŒç‰¹æ€¥åŒºé–“化を判定ã™ã‚‹\n /** 対象区間ã®å–å¾—å¯èƒ½ãªç‰¹æ€¥åˆ¸ä¸€è¦§ã‚’å–å¾—ã™ã‚‹ */\n const priceList = this.course.Price.filter((p) => {\n return p.kind === 'Charge' &&\n Number(p.fromLineIndex || -1) >= routeLineIndex &&\n Number(p.toLineIndex || Infinity) <= routeLineIndex\n });\n /** 最安特急料金をå–å¾—ã™ã‚‹ */\n let mostCheapChage = Math.min(...priceList.map((p) => {\n return Number(p.Oneway);\n }))\n // priceList ãŒç©ºã®ã¨ãã«ã¯ Infinity ã«ãªã‚‹ã®ã§å‡¦ç†ã‚’ã™ã‚‹\n mostCheapChage = mostCheapChage === Infinity? 0: mostCheapChage;\n targetExtendLineLine.isEkinetSection = isEkinetTargetLine;\n targetExtendLineLine.mostCheapChage = mostCheapChage;\n targetExtendLineLine.companies = EkinetInfoLine.getCompanies(olpLineList);\n targetExtendLineLine.setIsShowLink();\n })\n }\n\n /**\n * ãˆããã£ã¨äºˆç´„リンクã®å…ƒãƒ‡ãƒ¼ã‚¿ã‚’生æˆã™ã‚‹\n */\n generateReserveParams() {\n /** åˆæœŸåŒ–用ã®ãƒ‘ラメータ */\n const initJREEkinetBaseParams: JREEkinetBaseParams = {\n stationCodeList: [],\n depTimeList: [],\n lineIdxList: [],\n companies: []\n }\n /** ç¾åœ¨å‚ç…§ä¸ã®ãƒ‘ラメータ */\n let currentJREEkinetBaseParams: JREEkinetBaseParams = JSON.parse(JSON.stringify(initJREEkinetBaseParams));\n this.ekinetInfoLines.forEach((info, idx) => {\n const isEmpty = currentJREEkinetBaseParams.stationCodeList.length === 0;\n if(info.isShowEkinetLink) {\n // データãŒç©ºã®å ´åˆã«ã¯å‡ºç™ºé§…æƒ…å ±ã‚’å§‹ã‚ã«å…¥ã‚Œã‚‹\n if(isEmpty) {\n const depPoint = this.course.Route.Point[idx].Station.code;\n currentJREEkinetBaseParams.stationCodeList.push(depPoint);\n }\n // 到ç€é§…æƒ…å ±ã‚’å…¥ã‚Œã‚‹\n const arrPoint = this.course.Route.Point[idx+1].Station.code;\n currentJREEkinetBaseParams.stationCodeList.push(arrPoint);\n // 出発時刻を入れる\n const depDate = this.course.Route.Line[idx].DepartureState.Datetime.text;\n currentJREEkinetBaseParams.depTimeList.push(depDate);\n // å‚ç…§LineIndexを入れる\n currentJREEkinetBaseParams.lineIdxList.push(idx);\n // é‡è¤‡ã‚’排除ã—ãŸçŠ¶æ…‹ã§ä¼šç¤¾æƒ…å ±ã‚’å…¥ã‚Œã‚‹\n const tmpComSet = new Set(currentJREEkinetBaseParams.companies.concat(info.companies));\n currentJREEkinetBaseParams.companies = Array.from(tmpComSet);\n }\n /** 予約ä¸å¯åŒºé–“ã®å ´åˆã€ãƒªãƒ³ã‚¯ã‚’区切る */\n else if(!isEmpty) {\n this.linkDatas.push(JSON.parse(JSON.stringify(currentJREEkinetBaseParams)));\n currentJREEkinetBaseParams = JSON.parse(JSON.stringify(initJREEkinetBaseParams));\n }\n })\n /** 最後ã®åŒºé–“ã§äºˆç´„å¯èƒ½ãªå ´åˆã«ã¯ã€æœ€å¾Œã®åŒºé–“ã®ãƒªãƒ³ã‚¯ã‚’入れる */\n const isEmpty = currentJREEkinetBaseParams.stationCodeList.length === 0;\n if(!isEmpty) {\n this.linkDatas.push(JSON.parse(JSON.stringify(currentJREEkinetBaseParams)));\n }\n }\n\n /**\n * generateReserveParams() ã§ç”Ÿæˆã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’元㫠Course/Route/Line è¦ç´ ã«ãˆããã£ã¨äºˆç´„リンクを入れる\n * @params {Course} 挿入対象ã®çµŒè·¯ãƒ‡ãƒ¼ã‚¿\n */\n insertEkinetLinkInLine(course: Course) {\n /** 第一区間ã®å‡ºç™ºæ™‚刻文å—列 */\n const firstDepSectionTimeStr = this.linkDatas[0]?.depTimeList[0] || \"\";\n /** 第一区間ã®å‡ºç™ºæ™‚刻 */\n const firstDepSectionTime = new Date(firstDepSectionTimeStr);\n /** ã¯ã˜ã‚ã®äºˆç´„区間ãŒ1ヶ月å‰ã‹ã¤10分å‰ä»¥é™ã§ã‚ã‚‹å ´åˆã«ã¯å…¨ã¦ã®äºˆç´„リンクをéžè¡¨ç¤ºã«ã™ã‚‹ */\n if(DateTime.isAbleDisplayEkinetLink(firstDepSectionTime)) {\n this.linkDatas.forEach((linkData: JREEkinetBaseParams) => {\n // リンクを生æˆã™ã‚‹\n const ekinetLinkURL = JREEkinet.generateEkinetURL(linkData);\n // Lineè¦ç´ ã«ãƒªãƒ³ã‚¯ã‚’埋ã‚込む\n linkData.lineIdxList.forEach((idx) => {\n course.Route.Line[idx].ekinetLink = {\n url: ekinetLinkURL,\n type: linkData.companies\n }\n })\n });\n }\n }\n\n /**\n * ãˆããã£ã¨äºˆç´„リンクを生æˆã™ã‚‹\n * @param linkData ãˆããã£ã¨äºˆç´„リンクを生æˆã™ã‚‹ãŸã‚ã®æƒ…å ±æº\n */\n static generateEkinetURL(linkData: JREEkinetBaseParams) {\n const stationNameList = linkData.stationCodeList.map((stationCode: string) => {\n return EkinetStationList[stationCode].ekinetName;\n })\n const depStationList = stationNameList.slice(0, stationNameList.length - 1);\n const arrStationList = stationNameList.slice(1);\n const ekinetParams: JREEkinetParams = {\n from_ticketing_stop_time_id: JSON.stringify(depStationList),\n to_ticketing_stop_time_id: JSON.stringify(arrStationList),\n boarding_time: JSON.stringify(linkData.depTimeList),\n num_adult: JREEkinet.ADULT_NUM,\n num_child: JREEkinet.CHILD_NUM,\n utm_source: JREEkinet.UTM_SOURCE,\n utm_medium: JREEkinet.UTM_MEDIUM,\n utm_campaign: JREEkinet.UTM_CAMPAIGN,\n utm_content: JREEkinet.UTM_CONTENT\n }\n return `${JREEkinet.BASE_URL}?${new URLSearchParams({...ekinetParams}).toString()}`\n }\n\n /**\n * EWSã®Courseä¸ã«ãˆããã£ã¨ã¸ã®ãƒªãƒ³ã‚¯ã‚’挿入ã™ã‚‹\n * @param courses 挿入対象ã®çµŒè·¯\n */\n static insertJREEkinetURLInCourse(course: Course, lang: Lang) {\n // OperationLinePattern ãŒãªã„時やã€è¨€èªžãŒæ—¥æœ¬èªžã§ã¯ãªã„å ´åˆã«ã¯å‡ºã•ãªã„\n if(!course.OperationLinePattern || lang !== Lang.ja) {\n return;\n }\n const jreEkinet = new JREEkinet(course);\n /** å„区間ãŒãˆããã£ã¨äºˆç´„対象区間ã‹ã‚’判定ã™ã‚‹ */\n jreEkinet.setIsShowLinkSections();\n /** å„区間ã®äºˆç´„リンクを入れ込む */\n jreEkinet.generateReserveParams();\n /** 駅ãƒãƒƒãƒˆäºˆç´„リンクを入れる */\n jreEkinet.insertEkinetLinkInLine(course);\n }\n}","import { push } from 'connected-react-router';\nimport { all, call, fork, put, select, takeLatest } from 'redux-saga/effects';\nimport { format, isSameDay, subDays, addHours, differenceInCalendarDays } from 'date-fns';\n\nimport { ConditionActionType, getFlight, getExtreme, getCondition, getRouteType, switchAirportModalShow, switchConsentAirportArrivalTime, switchIsNoSetTerminalHND, updateSearchedAt, updateDirections, updateTaxiFareSummaries, updateCourse } from '../actions/conditionAction';\nimport { updateErrorMessage, updateTraininfo, switchisLoading, switchIsFailInGetCourses, updateTaxiCompanyConfigurations, randomTmpAdRoatationValue } from '../actions/generalAction';\nimport { getFlightFactory } from '../services/ana/api';\nimport { escapeString, getEkispertAPIFactory } from '../services/ekispert/api';\nimport { getDatalakeFactory, datalakeBusFormat, getDatalakeAllowBusListFactory } from '../services/datalake/api';\nimport { State } from '../reducers';\nimport { ExitToStations } from '../services/ekispert/data/exitToStations';\nimport { Course, TraininfoList, Traininfo, KoboLink, TypeClass, Line } from '../services/ekispert/models';\nimport { Point as PassPoint } from '../services/ekispert/models/passStation';\nimport { AirportsAndStations } from '../services/ekispert/data/airportsAndStations';\nimport { PointType } from '../states/common';\nimport { APIPath, Gcs } from '../ekispert/extreme';\nimport { Lang } from '../states/query';\nimport Ekispert from '../utils/ekispert';\nimport FlightInfo from '../services/ana/models/flightInfo';\nimport { isDisplayJRHokkaidoNorthFreePass } from '../components/ad/common';\nimport ShowJRHookaidoNorthFreePass from '../services/ekispert/data/showJRHokkaidoNorthFreePassList';\nimport JRKyushuReserveLinkData from '../services/jrkyushu/JRKyushuReserveLinkData';\nimport { isMobileOnly } from 'react-device-detect';\nimport { excludedKeikyuStationList, keikyuLineList, tokyoMetroLineList } from '../services/ekispert/data/showTokyoMetroFreePassList';\nimport { isShowTokyoMetroFreePass } from '../services/linktivity/TokyoMetro';\nimport Cookies from 'js-cookie';\nimport Path from '../utils/path';\nimport UseTaxiCourse from '../services/ekispert/models/UseTaxiCourse';\nimport { getLimousineBusDataFactory, ReqTokyoLumousineBusFormat, ResTokyoLimousineBusFormat } from '../services/tokyolimousinebus/api';\nimport Environment from '../utils/environment';\nimport { setIsFast, setIsLeastTransferCount, setIsLowPrice } from '../utils/formatCourse';\nimport { SetUniversalMaaSWalkLinkArgs, setUniversalMaaSWalkLinkFactory } from '../services/universalMaas/util';\nimport { saveDirection } from '../utils/carRoute';\nimport PlaceInfoFactory from '../utils/placeInfoFactory';\nimport { GetDirectionAndFareSamplesResponse } from '../services/taxi/GetDirectionAndFare/models/getFareSamplesParams';\nimport { isArray } from 'underscore';\nimport { getTaxiCompanyConfiguration } from '../services/taxi/GetTaxiMetaInfo';\nimport i18n from '../i18n';\nimport Airlines, { AirlineList } from '../utils/Airlines';\nimport { getPlaneTimetabile } from '../services/ekispert/planeTimetable';\nimport AccessRestriction from '../utils/accessRestrictions';\nimport ReferrerParam from '../utils/referrerParam';\nimport JREEkinet from '../services/jreEkinet';\nimport { ConditionState } from '../states/conditionState';\nimport DateTime from '../utils/dateTime';\n\ninterface selectPointsTyps {\n train: string[],\n bus: string[],\n connection: string[],\n highway: string[],\n other: string[],\n [key: string]: string[]\n}\n\n// 羽田発ç€å›½éš›ç·šã§ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æœªæ±ºå®šæ™‚ã«AirportPointã‚’è¿”ã™\nfunction setHNDIntAirportPoint(isShowViaSection: boolean, hasPriorityAirportBus: boolean, lang: Lang) {\n // isShowViaSectionフラグãŒç„¡åŠ¹ã®éš›ã«ã¯å½“é¢ã¯ç¬¬3ターミナルを返ã™\n if(!isShowViaSection) {\n return AirportsAndStations[lang].HND_3\n }\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n return hasPriorityAirportBus? AirportsAndStations[lang].HND_3: AirportsAndStations[lang].HND_2;\n}\n\n// 羽田発ç€å›½éš›ç·šã§ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æœªæ±ºå®šæ™‚ã«AirportTerminalã‚’è¿”ã™\nfunction setHNDIntAirportTerminal(isShowViaSection: boolean, hasPriorityAirportBus: boolean) {\n if(!isShowViaSection) {\n return 'HND_3';\n }\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n return hasPriorityAirportBus? 'HND_3': 'HND_2';\n}\n\nfunction makeViaList(dep:string, arr:string, userVia:string = \"\"){\n let point = dep + ':';\n if(userVia !== \"\"){\n point += userVia + ':';\n }\n point += arr;\n return point;\n}\n\n/**\n * courseä¸ã®ä½•ç•ªç›®ã«ç©ºæ¸¯ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’経由ã™ã‚‹ã‹è©²å½“ã™ã‚‹ã‹ã‚’è¿”ã™\n * @param course \n * @param isDepartureGuide \n */\nexport function getTargetIdx(course: Course, isDepartureGuide: boolean) {\n // 途ä¸é§…を探索ã™ã‚‹åŒºé–“ã®åˆ¤åˆ¥\n // å¾’æ©åŒºé–“以外を使ã†åŒºé–“インデックス番å·ã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã™ã‚‹\n let nowalk_indexes = course.Route.Line.map((line, index)=>{\n return (line.Type && line.Type !== 'walk')? index: null;\n })\n .filter((line)=>{ return line !== null });\n // 出発案内ã§ã¯å¾’æ©ä»¥å¤–ã§ç©ºæ¸¯ã«ç€ã最後ã®åŒºé–“ã€åˆ°ç€æ¡ˆå†…ã§ã¯æœ€åˆã®åŒºé–“ã®é€”ä¸é€šéŽé§…ã‚’å–å¾—ã™ã‚‹\n return (isDepartureGuide? nowalk_indexes.slice(-1): nowalk_indexes)[0];\n}\n\n/**\n * ä½æ‰€æƒ…å ±ãƒ»ä½ç½®æƒ…å ±ã‚ˆã‚Šãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’ç”Ÿæˆã™ã‚‹\n * EWSã«ç›´æŽ¥æŠ•ã’ã‚‹ã¨æœ€å¯„ã‚Šã«ãƒã‚¹åœãŒ5件以上ã‚ã‚‹å ´åˆé‰„é“駅ãŒå–ã‚Œãªã„ãŸã‚\n * マニュアルã§ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’生æˆã™ã‚‹\n * @param \n */\nfunction* generateLandmark(pointType: string, pointCode: string, pointName: string) {\n const api = getEkispertAPIFactory();\n let points;\n switch(pointType){\n // 緯度経度ã®å ´åˆ\n case PointType.COORDINATE:\n case PointType.CURRENT_POSITION:\n points = yield call(api, {\n geoPoint: `${pointCode},2000`,\n gcs: Gcs.Wgs\n }, APIPath.GeoStation);\n break;\n // ä½æ‰€ã®å ´åˆ\n case PointType.ADDRESS:\n points = yield call(api, {\n address: `${pointCode},2000`,\n gcs: Gcs.Wgs\n }, APIPath.AddressStation);\n break;\n default:\n return pointCode;\n }\n if(!points) {\n throw new Error('指定ã—ãŸåœ°ç‚¹ã®å‘¨å›²ã«ãƒã‚¹åœãƒ»é§…ãŒã‚ã‚Šã¾ã›ã‚“ï¼')\n }\n\n let selectPoints: selectPointsTyps = {\n train: [],\n bus: [],\n connection: [],\n highway: [],\n other: []\n };\n\n if(!isArray(points)) {\n points = [points];\n }\n\n for(const point of points){\n let select = false;\n const type = (typeof point.Station.Type === 'object')? point.Station.Type.text: point.Station.Type;\n switch(type){\n case 'train':\n if(selectPoints.train.length < 2){\n selectPoints.train.push(point);\n select = true;\n }\n break;\n case 'bus':\n if(point.Station.Type.detail.includes('connection') && selectPoints.connection.length < 3) {\n selectPoints.connection.push(point);\n select = true;\n }\n else if(point.Station.Type.detail.includes('highway') && selectPoints.highway.length < 3) {\n selectPoints.highway.push(point);\n select = true;\n }\n else if(selectPoints.bus.length < 1){\n selectPoints.bus.push(point);\n select = true;\n }\n break;\n }\n if(!select){\n selectPoints.other.push(point);\n }\n }\n const searchPoint = Object.keys(selectPoints).reduce((acumlate, key)=>{\n Array.prototype.push.apply(acumlate, selectPoints[key]);\n return acumlate;\n }, []).slice(0, 10);\n // 地点åã«åŠè§’ãƒã‚¤ãƒ•ãƒ³ãŒã‚ã‚‹ã¨ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ç”ŸæˆãŒã§ããªããªã‚‹ã®ã§ç½®æ›ã™ã‚‹\n pointName = pointName.replace(/-/g, 'ー');\n // 地点生æˆã‚’è¡Œã†\n let pointData = `P-${pointName}-`;\n // é§…ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã™ã‚‹\n pointData += searchPoint.map((point: any)=>{ return point.Station.code; })+'-';\n // 所è¦æ™‚é–“ã‚’è¿½åŠ ã™ã‚‹\n pointData += searchPoint.map((point: any) => { return Ekispert.getWalkTime(point.Distance); }) + '--';\n // äº¤é€šæ‰‹æ®µã‚’è¿½åŠ ã™ã‚‹\n pointData += searchPoint.map(()=>{ return 'å¾’æ©'; })+'--0----';\n return pointData;\n}\n\n/**\n * å–å¾—ã—ãŸçµŒè·¯ã‹ã‚‰ç¾½ç”°ç©ºæ¸¯ç¬¬3ターミナルを経由ã™ã‚‹çµŒè·¯ã®ã¿ã‚’絞り込む。\n * @param courses å–å¾—ã—ãŸçµŒè·¯ã€‚\n * @param isDepartureGuide 出発案内ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * @param stationList 絞り込む駅ã®ãƒªã‚¹ãƒˆ\n * @param lang å–å¾—ã™ã‚‹è¨€èªž\n */\nfunction* filterViaStations(courses: Course[], isDepartureGuide: boolean, filterStationList: string[], lang: Lang){\n const api = getEkispertAPIFactory();\n const filterCourses: Course[] = [];\n for(const course of courses){\n const target_idx = getTargetIdx(course, isDepartureGuide);\n // å¾’æ©ã—ã‹ãªã„経路ã®å ´åˆã¯é™¤å¤–ã™ã‚‹\n if(target_idx === null){\n return;\n }\n // 通éŽé§…一覧をå–å¾—\n const params = {\n serializeData: course.SerializeData,\n sectionIndex: target_idx+1\n };\n const result = yield call(api, params, APIPath.PassStation);\n // 駅コードã®é…列ã«æ•´å½¢\n const stationList = result.map((point: PassPoint) => { return point.Station.code });\n // 通éŽé§…ã«ç‰¹å®šã®é§…ã‚’å«ã‚€ã‹åˆ¤å®š\n for(let station of filterStationList){\n if(stationList.includes(station)){\n // 該当ã™ã‚‹åŒºé–“ã«å¯¾ã—ã€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«çµŒç”±ã‚ã‚Šã¨ãƒ•ãƒ©ã‚°ã‚’ç«‹ã¦ã‚‹\n course.Route.Line[target_idx].isShowViaTerminal = true;\n // 経由ã™ã‚‹ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®é§…åã‚’å–å¾—ã™ã‚‹\n const viaStation = result.find((point: PassPoint) => { return point.Station.code === station });\n // PassStationã§ã¯æ—¥æœ¬èªžã—ã‹å–ã‚Œãªã„ã®ã§ã€è‹±èªžç‰ˆã§ã¯è‹±èªžã®é§…åã‚’å–å¾—ã™ã‚‹\n if(lang === Lang.en){\n const stationLight = yield call(api, {\n code: viaStation.Station.code,\n language: 'en'\n }, APIPath.LightStation);\n course.Route.Line[target_idx].viaTerminalName = stationLight.Name;\n } else {\n course.Route.Line[target_idx].viaTerminalName = viaStation.Station.Name;\n }\n course.Route.Line[target_idx].viaTerminalCode = viaStation.Station.code;\n filterCourses.push(course);\n break;\n }\n }\n }\n return filterCourses;\n}\n\n/**\n * 路線ã®ç¨®åˆ¥ï¼ˆå›½å†…ç·šã‹å›½éš›ç·šï¼‰ã‚’å–å¾—ã™ã‚‹ã€‚\n */\nfunction* runGetRouteType(action: ReturnType<typeof getRouteType.start>) {\n const { flightNumber } = action.payload;\n // Storeã‹ã‚‰Stateã‚’å–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n /** 航空会社コード。 */\n const airlineCode = state.condition.targetAirLine;\n try {\n yield put(switchisLoading(true));\n // ANA APIã‹ã‚‰é‹è¡Œæƒ…å ±ã‚’å–å¾—ã™ã‚‹ã€‚\n const api = getFlightFactory();\n /** é‹èˆªæƒ…å ±ã‚’å–å¾—ã™ã‚‹éš›ã®ã‚ªãƒ—ション。 */\n // (インクリメンタルサーãƒãƒ¢ãƒ¼ãƒ‰ã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚)\n const flightOptionsInIncremental = {\n isIncrementalSearch: true,\n language: state.condition.query.lang,\n airline: airlineCode,\n }\n const flight = yield call(api, flightNumber, state.condition.date, flightOptionsInIncremental, state.condition.targetAirLine);\n\n yield put(getRouteType.succeed({ flightNumber }, flight));\n } catch (error) {\n yield put(getRouteType.fail({ flightNumber }, error));\n yield put(switchisLoading(false));\n }\n}\n\n// ANA→駅ã™ã±ã‚ã¨ã®é †ã§APIã‚’å©ã。\nfunction* runGetFlight(action: ReturnType<typeof getFlight.start>) {\n const { flightNumber } = action.payload;\n // Storeã‹ã‚‰Stateã‚’å–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n\n try {\n yield put(switchisLoading(true));\n // ANA APIã‹ã‚‰é‹è¡Œæƒ…å ±ã‚’å–å¾—ã™ã‚‹ã€‚\n const api = getFlightFactory();\n // クエリã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼å…¥åŠ›ã®ç™»å ´ä¾¿ãŒåŒä¸€ã§ãªã„ãªã‚‰ã°ã‚¯ã‚¨ãƒªã¯ä½¿ç”¨ã—ãªã„\n // クエリã¨ãƒ¦ãƒ¼ã‚¶å…¥åŠ›ã®æ—¥ä»˜ãŒåŒä¸€ã§ãªã‘ã‚Œã°ã‚¯ã‚¨ãƒªã¯ä½¿ç”¨ã—ãªã„\n const query = state.condition.query;\n const queryDate = state.condition.isDepartureGuide? query.std: query.sta;\n const isReferenceQuery = (state.condition.flight === query.flightNumber) &&\n (queryDate && isSameDay(state.condition.date, queryDate));\n // クエリã§æŒ‡å®šã•ã‚ŒãŸå®šåˆ»ã®å‡ºç™ºæ—¥æ™‚ã‚’å‚ç…§ã™ã‚‹ã€‚(クエリãŒãªã„å ´åˆã¯ãƒ•ã‚©ãƒ¼ãƒ 上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã‚’å‚ç…§ã™ã‚‹ã€‚)\n const std = state.condition.query.std ? state.condition.query.std : state.condition.date;\n // クエリã§æŒ‡å®šã•ã‚ŒãŸå®šåˆ»ã®åˆ°ç€æ—¥æ™‚ã‚’å‚ç…§ã™ã‚‹ã€‚(クエリãŒãªã„å ´åˆã¯ãƒ•ã‚©ãƒ¼ãƒ 上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã‚’å‚ç…§ã™ã‚‹ã€‚)\n const sta = state.condition.query.sta ? state.condition.query.sta : state.condition.date;\n // フォーム上ã§æŒ‡å®šã—ãŸæ—¥ä»˜ã€‚\n const date = state.condition.date;\n /** 言語è¨å®šã€‚ */\n const lang = state.condition.query.lang;\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = state.condition.targetAirLine;\n let isAbleFlightInfo = Airlines.isAbleToGetFlightInfo(targetAirline);\n // ANA APIã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹æ乗日をè¨å®šã™ã‚‹ã€‚\n // クエリをå‚ç…§å¯èƒ½ãªå ´åˆã€ã‹ã¤ã€ã‚¯ã‚¨ãƒªã®å®šåˆ»ã®å‡ºç™ºæ—¥ä»˜ã¨åˆ°ç€æ—¥ä»˜ã‚’比較ã—ã€ç•°ãªã‚‹æ—¥ä»˜ã®å ´åˆã¯å‡ºç™ºæ—¥æ™‚ã®æ—¥ä»˜ã‚’指定ã™ã‚‹ã€‚\n // (ANA APIã®æ—¥ä»˜ã®åŸºæº–ã¯æ乗便ã®å‡ºç™ºæ—¥ã§ã‚ã‚‹ãŸã‚。)\n // (※ãƒã‚°å¯¾å¿œã®ãŸã‚ã«æ€¥ã„ã§ç›´ã—ãŸéƒ¨åˆ†ã®ãŸã‚ã€ã‚ã¨ã§è¦‹ç›´ã™ã€‚2020/03/27ç¾åœ¨ã€‚)\n const boardingDate = (isReferenceQuery && !isSameDay(std, sta)) ? std : date;\n /** 航空会社コード。 */\n const airlineCode = Airlines.getAirlineCode(targetAirline);\n /** é‹èˆªæƒ…å ±ã‚’å–å¾—ã™ã‚‹éš›ã®ã‚ªãƒ—ション。 */\n const flightOptions = {\n language: lang,\n airline: airlineCode,\n }\n /** é·ç§»å…ƒãƒªãƒ•ã‚¡ãƒ©ãƒ¼ */\n const referrer = state.condition.query.referrer;\n /** 空港HPã‹ã‚‰é·ç§»ã—ã¦ããŸã‹ */\n const isFromAirportSite = ReferrerParam.isAirportSite(referrer);\n // é‹è¡Œæƒ…å ±APIã«å¯¾å¿œã—ã¦ã„る事æ¥è€…(ANA)ã®å ´åˆã«ã¯é‹è¡Œæƒ…å ±APIã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹\n // TODO: let flight: FlightInfo ã§åž‹ã‚’定義ã™ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã§å¯¾å¿œã—ãŸã„\n let flight = isAbleFlightInfo?\n yield call(api, state.condition.flightNumber, boardingDate, flightOptions, state.condition.targetAirLine):\n yield call(getPlaneTimetabile, state.condition.query.fromAirportCode, state.condition.query.toAirportCode, boardingDate, state.condition.query.flightNumber, state.condition.targetAirLine);\n // é‹è¡Œæƒ…å ±APIã‹ã‚‰æƒ…å ±ãŒå–ã‚Œãšã€ã‹ã¤ç©ºæ¸¯HPã‹ã‚‰é·ç§»ã®å ´åˆã«ã¯çµæžœã‚’表示ã—ãªã„\n if(flight.errorMessage !== '' && isFromAirportSite) {\n isAbleFlightInfo = false;\n flight = yield call(getPlaneTimetabile, state.condition.query.fromAirportCode, state.condition.query.toAirportCode, boardingDate, state.condition.query.flightNumber, state.condition.targetAirLine);\n }\n // 空港HPã‹ã‚‰é·ç§»ã—ã¦ããŸå ´åˆ\n if(isFromAirportSite) {\n // è¨å®šã—ãŸæ—¥ä»˜ãŒä¸€æ˜¨æ—¥ä»¥å‰ã®å ´åˆã«ã¯çµŒè·¯æ¤œç´¢ã‚’出æ¥ãªã„よã†ã«ã™ã‚‹\n const now = new Date();\n const diffDay = differenceInCalendarDays(date, now);\n if(diffDay < -1) {\n throw new Error('一昨日以å‰ã®æ—¥ä»˜ãŒã‚»ãƒƒãƒˆã•ã‚ŒãŸå ´åˆã«ã¯æ¤œç´¢ãŒå‡ºæ¥ãªã„よã†ã«åˆ¶å¾¡ã‚’ã—ã¦ã„ã¾ã™ã€‚(AM-684)');\n }\n }\n // 到ç€æ¡ˆå†…ã‹ã¤ã‚¯ã‚¨ãƒªã§å®šåˆ»ã®æ—¥æ™‚ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã€ãƒ•ã‚©ãƒ¼ãƒ 上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã¨ANA APIレスãƒãƒ³ã‚¹ã®å®šåˆ»ã®åˆ°ç€æ—¥ä»˜ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã€‚\n if (!state.condition.isDepartureGuide && !isAbleFlightInfo) {\n // 到ç€æ—¥ä»˜ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’æ›´æ–°ã™ã‚‹ã€‚\n flight.setIsDifferentArrivalDate(date);\n // 日付ãŒä¸€è‡´ã—ã¦ã„ãªã„å ´åˆã¯1æ—¥å‰ã«ã—ã¦å†ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n if (flight.isDifferentArrivalDate && !isReferenceQuery) {\n // 日付を1æ—¥å‰ã«ã™ã‚‹ã€‚\n const reRequestDate = subDays(date, 1);\n // ANA APIã«å†ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ã€‚\n flight = yield call(api, state.condition.flightNumber, reRequestDate, flightOptions);\n // フォーム上ã§æŒ‡å®šã•ã‚ŒãŸæ—¥ä»˜ã¨ANA APIレスãƒãƒ³ã‚¹ã®å®šåˆ»ã®åˆ°ç€æ—¥ä»˜ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã€‚\n flight.setIsDifferentArrivalDate(date);\n // 1æ—¥å‰ã®é‹èˆªæƒ…å ±ã‚’å–å¾—ã—ã¦ã‚‚到ç€æ—¥ã®æ—¥ä»˜ãŒãƒ•ã‚©ãƒ¼ãƒ 上ã®æ—¥ä»˜ã¨ä¸€è‡´ã—ãªã‹ã£ãŸå ´åˆã€ç©ºã®é‹èˆªæƒ…å ±ã‚’è¿”ã™ã€‚\n if (flight.isDifferentArrivalDate) { flight = new FlightInfo(); }\n }\n }\n\n // ANAã‹ç‰¹å®šèˆªç©ºä¼šç¤¾ã®å ´åˆã«ã¯ã‚¯ã‚¨ãƒªã‚ˆã‚Šæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n if(isAbleFlightInfo || Airlines.isNotGetTimeTablePlane(targetAirline)) {\n if(Airlines.isNotGetTimeTablePlane(targetAirline)) {\n // 特定航空会社ã®å ´åˆã«ã¯å›½å†…線判定ã«å›ºå®šã—ã¾ã™\n flight.isDomestic = true;\n }\n if(isReferenceQuery) {\n // 日付ãŒå¤‰æ›´ã•ã‚Œã¦ã„ãªã„å ´åˆã€ã‚¯ã‚¨ãƒªã‚ˆã‚Šæƒ…å ±ã‚’æ›´æ–°ã™ã‚‹\n flight.updateByQuery(query);\n }\n }\n // é‹è¡Œæƒ…å ±ã‚’å–å¾—ã§ããªã„航空会社ã®å ´åˆã€æ—¥ä»˜ã‚’変ãˆãŸå ´åˆã§ã‚‚発ç€ç©ºæ¸¯ã ã‘ã¯å¤‰æ›´ã™ã‚‹\n // ANA・IBEX便ã§ã‚‚広島空港HPã‹ã‚‰é·ç§»ã—ãŸéš›ã«ã¯ç™ºç€ç©ºæ¸¯ã ã‘クエリã‹ã‚‰æ›´æ–°ã™ã‚‹\n else {\n flight.updatePartialQuery(query, state.condition.flight)\n }\n flight.updateHNDTerminalBySFJ();\n flight.statusCheck();\n if(flight.errorMessage !== '') {\n // ç¾åœ¨ã‚¢ãƒ—リケーション上ã§é–‹ã„ã¦ã„るパスã®æ–‡å—列をå–å¾—ã™ã‚‹ã€‚\n const pathName = state.router.location.pathname;\n /** 国内・国際判定を行ㆠ*/\n const isDomestic = isDomesticFlight(state.condition, pathName);\n flight.setIsDomestic(isDomestic);\n }\n // 注æ„モーダルを出ã™å¤§è¦æ¨¡ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãƒªã‚¹ãƒˆ\n const hugeAirportCode = ['HND', 'NRT', 'ITM', 'KIX', 'NGO', 'CTS', 'FUK', 'OKA', 'TYO', 'SPK'];\n // 空港到ç€æ™‚é–“ã®åŒæ„モーダルを出ã™ã‹åˆ¤å®šã™ã‚‹\n const isShowAirportModal = () => {\n // çµæžœç”»é¢ã¾ãŸã¯ã‚µãƒžãƒªãƒ¼ãƒªã‚¹ãƒˆç”»é¢ã§ã®ãƒªãƒãƒ¼ãƒ‰ã®å ´åˆã¯åŒæ„モーダルを表示ã™ã‚‹ãƒ•ãƒ©ã‚°ã‚’オンã«ã—ãªã„。\n if((!Path.isResult(state.router.location.pathname) && !Path.isSummary(state.router.location.pathname)) &&\n !state.condition.consentAirportArrivalTime) {\n // 以下ã®æ¡ä»¶ã‚’満ãŸã™å ´åˆ\n // 1. 出発案内ã§ã‚ã‚‹\n // 2. 空港到ç€æ™‚é–“ã‚’30分ã«å›ºå®šã•ã›ã¦ã„ã‚‹\n // 3. 利用者ãŒç©ºæ¸¯åˆ°ç€ç”»é¢ãƒ¢ãƒ¼ãƒ€ãƒ«ã«åŒæ„ã—ã¦ã„ãªã„\n // 4. æ乗便ãŒå¤§è¦æ¨¡ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’有ã™ã‚‹ç©ºæ¸¯ã‚’出発空港ã«æŒ‡å®šã—ã¦ã„ã‚‹\n if(state.condition.isDepartureGuide &&\n state.condition.arrivalTimeToAirport === 30 &&\n !state.condition.consentAirportArrivalTime &&\n hugeAirportCode.includes(flight.depAirportCode)\n ) {\n return true;\n }\n // ピーãƒã‚³ãƒ¼ãƒ‰ã‚·ã‚§ã‚¢ä¾¿ã‚’é¸æŠžã—ã¦ã„ã‚‹å ´åˆ\n else if(Airlines.isShowSearchNoticeModal(targetAirline)) {\n return true;\n }\n // 春秋航空を利用ã™ã‚‹å ´åˆ\n else if(targetAirline === 'SJO') {\n return true;\n }\n }\n return false;\n }\n // 空港到ç€æ™‚é–“ã§åŒæ„ãŒå¿…è¦ã‹\n if( isShowAirportModal() ) {\n yield put(switchAirportModalShow(true));\n return;\n } else {\n yield put(switchAirportModalShow(false));\n }\n yield put(getFlight.succeed({ flightNumber }, flight));\n } catch (error) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n // エラー発生時ã¯debugレベルã§ã®ã¿ãƒã‚°ã‚’出力ã™ã‚‹\n console.debug(error)\n }\n yield put(updateErrorMessage('no_get_flight'));\n // エラー発生時ã¯æ‰¿è«¾ãƒ•ãƒ©ã‚°ã‚’リセットã™ã‚‹\n yield put(switchConsentAirportArrivalTime(false));\n yield put(getFlight.fail({ flightNumber }, error));\n yield put(switchisLoading(false));\n }\n}\n\n/**\n * 探索æ¡ä»¶è©³ç´°ã‚’å–å¾—ã™ã‚‹ã€‚\n * @param action \n */\nfunction* runGetCondition() {\n // Storeã‹ã‚‰Stateã‚’å–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n const options = {\n shinkansen: state.condition.isEnabledShinkansen ? 'normal' : 'never',\n limitedExpress: state.condition.isEnabledLimitedExpress ? 'normal' : 'never',\n ticketSystemType: state.condition.isEnabledIc ? 'ic' : 'normal',\n preferredTicketOrder: state.condition.isEnabledIc ? 'ic' : 'none',\n // 空路ã¯å¸¸ã«åˆ©ç”¨ã—ãªã„。\n plane: 'never',\n }\n\n try {\n const api = getEkispertAPIFactory();\n const condtions = yield call(api, options, APIPath.Condition);\n\n yield put(getCondition.succeed({}, condtions));\n } catch (error) {\n yield put(getCondition.fail({}, error));\n yield put(switchisLoading(false));\n }\n}\n\n/**\n * タクシーメタデータをå–å¾—ã™ã‚‹\n */\nfunction* runGetTaxiCompanyConfigurations() {\n const params = {\n key: 'company_configuration',\n language: i18n.language\n }\n try {\n const response = yield call(getTaxiCompanyConfiguration, params);\n if(response.body) {\n yield put(updateTaxiCompanyConfigurations(response.body))\n }\n else {\n throw new Error('company_configuration response.body is undefined')\n }\n }\n catch(e) {\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isDev(env)) {\n console.error(e);\n }\n }\n}\n\n/**\n * レスã‚ューナウよりé‹è¡Œæƒ…å ±ã‚’å–å¾—ã™ã‚‹\n */\nfunction* runGetTrainInfo() {\n const api = getEkispertAPIFactory();\n const response = yield call(api, {}, APIPath.TrainInfo);\n // 検索処ç†ã‚’実行ä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n yield put(switchisLoading(true));\n try {\n // 扱ã„ã‚„ã™ã„å½¢å¼ã«å¤‰æ›ã™ã‚‹\n let traininfoList:TraininfoList = {};\n const informations: Traininfo[] = response.Information;\n for(const info of informations) {\n traininfoList[info.Line.code] = info;\n }\n yield put(updateTraininfo(traininfoList));\n }\n catch(e) {\n const env: string = process.env['REACT_APP_STAGE_ENV'] || '';\n if(Environment.isDev(env)) {\n console.error(e);\n }\n } finally {\n // 最後ã«ã‹ãªã‚‰ãšæ¤œç´¢å‡¦ç†ã‚’実行ä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n yield put(switchisLoading(false));\n }\n}\n\n/**\n * 駅ã™ã±ã‚ã¨APIã‹ã‚‰çµŒè·¯ã‚’å–å¾—ã™ã‚‹ã€‚\n */\nfunction * runGetExtreme() {\n // Storeã‹ã‚‰Stateã‚’å–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n // 探索æ¡ä»¶ã‚’å–å¾—ã™ã‚‹ã€‚\n const condition = state.condition;\n const general = state.general;\n // 最大表示経路数\n const SHOW_LIMIT_COURSE_NUM = 5;\n // 羽田国際線使用時ã«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æœªæ±ºå®šæ™‚ã«ã¯ç¬¬3ターミナルを固定ã§ä½¿ç”¨ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°\n const isShowViaSection: boolean = process.env['REACT_APP_IS_SHOW_VIA_SECTION'] === 'true';\n // 検索処ç†ã‚’実行ä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n // (実行完了時ã¯ã€ŒgetExtreme.succeedã€ã¾ãŸã¯ã€ŒgetExtreme.failã€ã®éƒ¨åˆ†ã§ãƒ•ãƒ©ã‚°ãŒæ›´æ–°ã•ã‚Œã‚‹ãŸã‚ã€\n // 経路å–å¾—ã®ã“ã®é–¢æ•°å†…ã§ã¯å®Œäº†æ™‚ã®ãƒ•ãƒ©ã‚°æ›´æ–°ã¯ã—ãªã„。)\n yield put(switchisLoading(true));\n // 経路å–å¾—ã«å¤±æ•—ã—ãŸãƒ•ãƒ©ã‚°ã‚’åˆæœŸåŒ–ã™ã‚‹\n yield put(switchIsFailInGetCourses(false));\n // 経路検索開始å‰ã«å‰å›žã®ã‚ャッシュを削除ã™ã‚‹\n // çµŒè·¯æƒ…å ±ã‚’å‰Šé™¤ã™ã‚‹\n yield put(updateDirections(null));\n // ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘æƒ…å ±ã‚’å‰Šé™¤ã™ã‚‹\n yield put(updateTaxiFareSummaries([]));\n // çµŒè·¯æƒ…å ±ã‚’å‰Šé™¤ã™ã‚‹\n yield put(updateCourse([]));\n\n try {\n // 駅コード・緯度経度・ä½æ‰€ã®ã„ãšã‚Œã‹ãŒå–å¾—ã§ããªã‹ã£ãŸå ´åˆã€ã‚¨ãƒ©ãƒ¼ã¨ã™ã‚‹ã€‚\n if (condition.pointCode === '') { throw Error('no_get_place'); }\n const api = getEkispertAPIFactory();\n\n const isDepartureGuide = condition.isDepartureGuide;\n // 空港到ç€æ™‚é–“\n const arrivalTimeToAirport = condition.arrivalTimeToAirport;\n const place = state.condition.place;\n\n // å–å¾—ã—ãŸèˆªç©ºä¾¿ã®æ™‚刻を元ã«æ¤œç´¢æ—¥æ™‚ã‚’å–å¾—ã™ã‚‹ã€‚\n // (出発案内ã®å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã—ãŸç©ºæ¸¯åˆ°ç€æ™‚é–“ã‚’åŠ å‘³ã—ãŸæ™‚刻をå–å¾—ã™ã‚‹ã€‚2020/01/22ç¾åœ¨ã€‚)\n const searchDate = isDepartureGuide ? condition.flightStatus.getSearchTime(state.condition.isDepartureGuide, condition.arrivalTimeToAirport) : condition.flightStatus.getSearchTime(state.condition.isDepartureGuide);\n // 国内線ã§ã‚ã‚‹ã‹ã‚’判別ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚\n const isDomestic = state.condition.flightStatus.isDomestic;\n const flight = state.condition.flightStatus;\n const lang = state.condition.query.lang;\n // 空港ãƒã‚¹å„ªå…ˆã®ãƒ•ãƒ©ã‚°ã€‚\n const hasPriorityAirportBus = state.condition.hasPriorityAirportBus;\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = state.condition.targetAirLine;\n\n const airportCode = isDepartureGuide ? flight.depAirportCode : flight.arrAirportCode;\n const airportName = isDepartureGuide ? flight.depAirportName : flight.arrAirportName;\n let airportPoint = '';\n /** ターミナルãŒæœªè¨å®šã§ã‚ã‚‹ã“ã¨ã‚’表ã™ãƒ•ãƒ©ã‚°ã€‚\n * (ç¾çŠ¶ã€ç¾½ç”°ç©ºæ¸¯ã®å›½éš›ç·šã§ã®ã¿åˆ©ç”¨ã™ã‚‹ã€‚2020/03/04ç¾åœ¨ã€‚)\n */\n let isNotSetTerminal = false;\n // æ¬ èˆªã®å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã‚’出ã™\n if(flight.isCanceled()){\n throw new Error(\"æ¬ èˆªã®æã‚ŒãŒã‚ã‚Šã¾ã™ã€‚\");\n }\n\n let airportPointAndTerminal = getAirportPointAndTerminal(isDomestic, flight, lang, hasPriorityAirportBus, isDepartureGuide);\n airportPoint = airportPointAndTerminal.airportPoint;\n isNotSetTerminal = airportPointAndTerminal.isNotSetTerminal;\n // 出発案内ã®å ´åˆã€‚\n if (isDepartureGuide) {\n switch (airportCode) {\n case 'SPK':\n case 'CTS':\n // 国内線・国際線ã¨ãƒã‚¹åœãŒç•°ãªã‚‹ãŸã‚分ã‘る。\n airportPoint = isDomestic ? AirportsAndStations[lang].CTS_DOM : AirportsAndStations[lang].CTS_INT;\n break;\n // 羽田ã®å ´åˆã¯å›½éš›ç·šã§ã‚ã‚‹ã‹ã¨ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åを見る。\n case 'HND':\n // 使用ターミナルをå称ç‰ã‹ã‚‰ç¢ºå®šã•ã›ã‚‹\n const HNDTerminal = flight.getHNDTerminal(isDepartureGuide);\n switch(HNDTerminal) {\n // 第一ターミナルã®å ´åˆ\n case 1:\n airportPoint = AirportsAndStations[lang].HND_1;\n break;\n // 第二ターミナルã®å ´åˆ\n case 2:\n airportPoint = AirportsAndStations[lang].HND_2;\n break;\n // 第三ターミナルã®å ´åˆ\n case 3:\n airportPoint = AirportsAndStations[lang].HND_3;\n break;\n // 第二ターミナル・第三ターミナル未確定ã®å ´åˆ\n case \"2_3\":\n // 出発ターミナルãŒæœªç¢ºå®šã®å ´åˆ\n // AWS経由ã®å ´åˆã«å‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®å ´åˆã«ã¯ã‚¯ã‚¨ãƒªã«ã€Œ2/3ã€ã¨æ¸¡ã•ã‚Œã‚‹\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n airportPoint = setHNDIntAirportPoint(isShowViaSection, hasPriorityAirportBus, lang);\n // ターミナルãŒæœªç¢ºå®šã§ã‚るフラグを立ã¦ã‚‹ã€‚\n isNotSetTerminal = true;\n break;\n }\n break;\n // æˆç”°ç©ºæ¸¯ã®å ´åˆ\n case 'NRT':\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3 && Airlines.isUseNRTThirdTerminal(targetAirline)) {\n airportPoint = AirportsAndStations[lang].NRT_3;\n }\n else {\n airportPoint = AirportsAndStations[lang].NRT;\n }\n // æ±äº¬ã‚¨ãƒªã‚¢ï¼ˆç¾½ç”°ãƒ»æˆç”°å…±ç”¨ï¼‰ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€‚\n case 'TYO':\n if (airportName.includes('Haneda')) {\n // 出発ターミナルåãŒç¬¬1ターミナルã®å ´åˆã€‚\n if (flight.depTerminal.includes('第1ターミナル') || flight.depTerminal.includes('Terminal 1') || flight.depTerminal === '1') {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = AirportsAndStations[lang].HND_1;\n } else {\n airportPoint = AirportsAndStations[lang].HND_2;\n }\n } else if (airportName.includes('Narita')) {\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = AirportsAndStations[lang].NRT_3;\n }\n else {\n airportPoint = AirportsAndStations[lang].NRT;\n }\n }\n break;\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…線(北・å—)ã§åœ°ç‚¹ã‚’分ã‘る。\n case 'FUK':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる日付ã§ã¯ãªã„å ´åˆã€‚\n if (!flight.isAvalableOperationInfo(isDepartureGuide)) {\n airportPoint = AirportsAndStations[lang].FUK_DOM;\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´åã«åŒ—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.securtyCheckPoint.includes('北') || flight.securtyCheckPoint.includes('North')) {\n airportPoint = AirportsAndStations[lang].FUK_DOM_NORTH;\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´ã«å—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.securtyCheckPoint.includes('å—') || flight.securtyCheckPoint.includes('South')) {\n airportPoint = AirportsAndStations[lang].FUK_DOM_SOUTH;\n // 未è¨å®šã®å ´åˆã€‚\n } else {\n airportPoint = AirportsAndStations[lang].FUK_DOM;\n }\n // 国際線ã®å ´åˆã€‚\n } else {\n airportPoint = AirportsAndStations[lang].FUK_INT;\n }\n break;\n // 那覇空港ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…ç·šã§åˆ†ã‘ã‚‹\n case 'OKA':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n airportPoint = AirportsAndStations[lang].OKA_DOM;\n } else {\n airportPoint = AirportsAndStations[lang].OKA_INT;\n }\n break;\n default:\n // ãã®ä»–ã®ç©ºæ¸¯ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®åœ°ç‚¹æƒ…å ±ã§æŽ¢ç´¢ã™ã‚‹ã€‚\n airportPoint = AirportsAndStations[lang][airportCode];\n break;\n }\n // 到ç€æ¡ˆå†…ã®å ´åˆã€‚\n } else {\n switch (airportCode) {\n case 'SPK':\n case 'CTS':\n // æ–°åƒæ³ç©ºæ¸¯ã®å ´åˆã€å›½å†…線・国際線ã¨ãƒã‚¹åœãŒç•°ãªã‚‹ãŸã‚分ã‘る。\n airportPoint = isDomestic ? ExitToStations[lang].CTS_DOM : ExitToStations[lang].CTS_INT;\n break;\n // 羽田ã®å ´åˆã¯å›½éš›ç·šã§ã‚ã‚‹ã‹ã¨ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åを見る。\n case 'HND':\n // 使用ターミナルをå称ç‰ã‹ã‚‰ç¢ºå®šã•ã›ã‚‹\n const HNDTerminal = flight.getHNDTerminal(isDepartureGuide);\n switch(HNDTerminal) {\n // 第一ターミナルã®å ´åˆ\n case 1:\n airportPoint = AirportsAndStations[lang].HND_1;\n break;\n // 第二ターミナルã®å ´åˆ\n case 2:\n airportPoint = AirportsAndStations[lang].HND_2;\n break;\n // 第三ターミナルã®å ´åˆ\n case 3:\n airportPoint = AirportsAndStations[lang].HND_3;\n // 第二ターミナル・第三ターミナル未確定ã®å ´åˆ\n case \"2_3\":\n // 出発ターミナルãŒæœªç¢ºå®šã®å ´åˆ\n // AWS経由ã®å ´åˆã«å‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®å ´åˆã«ã¯ã‚¯ã‚¨ãƒªã«ã€Œ2/3ã€ã¨æ¸¡ã•ã‚Œã‚‹\n\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n airportPoint = setHNDIntAirportPoint(isShowViaSection, hasPriorityAirportBus, lang);\n // ターミナルãŒæœªç¢ºå®šã§ã‚るフラグを立ã¦ã‚‹ã€‚\n isNotSetTerminal = true;\n break;\n }\n break;\n // æˆç”°ç©ºæ¸¯ã®å ´åˆ\n case 'NRT':\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = ExitToStations[lang].NRT_3;\n }\n else {\n airportPoint = ExitToStations[lang].NRT;\n }\n // æ±äº¬ã‚¨ãƒªã‚¢ï¼ˆç¾½ç”°ãƒ»æˆç”°å…±ç”¨ï¼‰ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€‚(英語版ã®ã¿è¿”ã£ã¦ãã‚‹ã“ã¨ãŒã‚る。)\n case 'TYO':\n // 空港åã«ã€ŒHanedaã€ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n if (airportName.includes('Haneda')) {\n // 国内線ã®å ´åˆã¯ç¬¬1・第2ターミナルã‹ã§åˆ†ã‘る。\n if (isDomestic) {\n // ターミナルåã¯æä¹—å£æƒ…å ±ã«ç¬¬1ターミナルã®å ´åˆã®ã¿å«ã¾ã‚Œã‚‹ã€‚\n if (flight.arrTerminal.includes('第1ターミナル') || flight.arrTerminal.includes('Terminal 1') || flight.arrTerminal === '1') {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang].HND_1;\n } else {\n // 第2ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang].HND_2;\n }\n // 国際線ã®å ´åˆã¯ä¿å®‰æ¤œæŸ»å ´ã¾ã§ã®æ¡ˆå†…ã¨ã™ã‚‹ã€‚\n } else {\n airportPoint = ExitToStations[lang].HND_3;\n }\n // 空港åã«ã€ŒNaritaã€ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (airportName.includes('Narita')) {\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = ExitToStations[lang].NRT_3;\n }\n else {\n airportPoint = ExitToStations[lang].NRT;\n }\n }\n break;\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€å›½å†…ç·šã®å—北ターミナルã€å›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æŒ¯ã‚Šåˆ†ã‘る。\n case 'FUK':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる日付ã§ã¯ãªã„å ´åˆã€‚\n if (!flight.isAvalableOperationInfo(isDepartureGuide)) {\n airportPoint = ExitToStations[lang].FUK_DOM;\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«åŒ—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.arrTerminal.includes('北') || flight.arrTerminal.includes('North')) {\n airportPoint = ExitToStations[lang].FUK_DOM_NORTH;\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«å—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.arrTerminal.includes('å—') || flight.arrTerminal.includes('South')) {\n airportPoint = ExitToStations[lang].FUK_DOM_SOUTH;\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«åŒ—・å—ã„ãšã‚Œã‚‚å«ã¾ã‚Œãªã„å ´åˆã€‚\n } else {\n airportPoint = ExitToStations[lang].FUK_DOM;\n }\n // 国際線ã®å ´åˆã€‚\n } else {\n airportPoint = ExitToStations[lang].FUK_INT;\n }\n break;\n // 那覇空港ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…ç·šã§åˆ†ã‘ã‚‹\n case 'OKA':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n airportPoint = AirportsAndStations[lang].OKA_DOM;\n } else {\n airportPoint = AirportsAndStations[lang].OKA_INT;\n }\n break;\n default:\n // ãã®ä»–ã®ç©ºæ¸¯ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®åœ°ç‚¹æƒ…å ±ã§æŽ¢ç´¢ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang][airportCode];\n break;\n }\n }\n\n let courses = [];\n let point: string = '';\n try {\n let setPointCode = condition.pointCode;\n // TypeãŒé§…以外ã®æ™‚ã¯ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã§ãƒ©ãƒ³ãƒ‰ãƒžãƒ¼ã‚¯ã‚’作æˆ\n if(condition.pointType !== PointType.STATION) {\n // 「レクー沖縄北谷スパ&リゾートã€ã®ã‚ˆã†ã«åŠè§’ã®ã€Œ&ã€ãŒå…¥ã£ã¦ã„ã‚‹ã¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã§ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã‚’ã™ã‚‹\n const setPointName = escapeString(condition.point);\n setPointCode = yield generateLandmark(condition.pointType, condition.pointCode, setPointName);\n }\n // 出発案内ã‹åˆ°ç€æ¡ˆå†…ã‹ã§åœ°ç‚¹ã‚’切り替ãˆã‚‹ã€‚\n // 経由ãŒã‚ã‚‹å ´åˆã¯è¿½åŠ ã™ã‚‹ã€‚\n point = isDepartureGuide ?\n makeViaList(setPointCode, airportPoint, condition.viaCode):\n makeViaList(airportPoint, setPointCode, condition.viaCode);\n // 羽田国際線発ç€ã§ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®å ´åˆã¯çµŒè·¯ã‚’8件å–å¾—ã™ã‚‹ã€‚\n const answerCount = isNotSetTerminal ? 8 : SHOW_LIMIT_COURSE_NUM;\n const interruptTransferStations = state.general.interruptTransfer.outbound.interruptTransferStations;\n // ä¹—æ›å›žé¿ã®é§…ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã®çµŒè·¯å–å¾—ã®å‡¦ç†ã€‚\n if (interruptTransferStations.length > 0) {\n /** ä¹—æ›å›žé¿ã®é§…æƒ…å ±ã‹ã‚‰é§…コードã®ã¿ã®é…列ã«ã—ãŸã‚‚ã®ã€‚ */\n const interruptTransferStationCodes = interruptTransferStations.map((i) => i.code);\n const params = {\n viaList: point,\n date: DateTime.JSTFormat(searchDate, 'yyyyMMdd'),\n time: DateTime.JSTFormat(searchDate, 'HHmm'),\n searchType: isDepartureGuide ? 'arrival' : 'departure',\n conditionDetail: state.condition.conditionDetail,\n gcs: 'wgs84',\n // クエリã«å¿œã˜ã¦å–å¾—ã™ã‚‹çµŒè·¯ã®è¨€èªžï¼ˆè‹±èªžãƒ»æ—¥æœ¬èªžï¼‰ã‚’切り替ãˆã‚‹ã€‚\n language: state.condition.query.lang === 'en' ? 'en' : 'ja',\n answerCount: answerCount,\n addStopStation: true,\n interruptTransferStationCodeList: interruptTransferStationCodes.join(':'),\n }\n courses = yield call(api, params, APIPath.Extreme);\n // ä¹—æ›å›žé¿ã®é§…ãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã®çµŒè·¯å–å¾—ã®å‡¦ç†ã€‚\n } else {\n const params = {\n viaList: point,\n date: DateTime.JSTFormat(searchDate, 'yyyyMMdd'),\n time: DateTime.JSTFormat(searchDate, 'HHmm'),\n searchType: isDepartureGuide ? 'arrival' : 'departure',\n conditionDetail: state.condition.conditionDetail,\n gcs: 'wgs84',\n // クエリã«å¿œã˜ã¦å–å¾—ã™ã‚‹çµŒè·¯ã®è¨€èªžï¼ˆè‹±èªžãƒ»æ—¥æœ¬èªžï¼‰ã‚’切り替ãˆã‚‹ã€‚\n language: state.condition.query.lang === 'en' ? 'en' : 'ja',\n answerCount: answerCount,\n addStopStation: true\n };\n courses = yield call(api, params, APIPath.Extreme);\n }\n }\n catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.debug(e);\n }\n }\n\n // å–å¾—ã—ãŸãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒundefinedã§ã¯ãªã„å ´åˆã«ã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®å€¤ã‚’代入ã™ã‚‹ã€‚\n if (typeof courses !== undefined) {\n const airportCode = isDepartureGuide? state.condition.flightStatus.depAirportCode: state.condition.flightStatus.arrAirportCode;\n const arrDate = state.condition.flightStatus.getFlightTimeDate(false);\n // å–å¾—ã—ãŸçµŒè·¯ãŒé…列ã®å ´åˆã¯ãã®ã¾ã¾ã€ã‚ªãƒ–ジェクトã®å ´åˆã¯é…列ã«ã¯ã‚る。\n courses = (courses instanceof Array) ? courses : [courses];\n\n // 空港ãƒã‚¹å„ªå…ˆãƒ¢ãƒ¼ãƒ‰ã®ãƒ•ãƒ©ã‚°ã€‚\n const hasPriorityAirportBus = state.condition.hasPriorityAirportBus;\n // 羽田空港国際線を利用ã—ãŸç€æ¤œç´¢ã®æ™‚ã¯ã€ç¬¬2ターミナル・第3ターミナル両方ãŒçµŒç”±ã«å«ã¾ã‚Œã¦ã„ã‚‹ã‹ç¢ºã‹ã‚る。\n if(isNotSetTerminal) {\n // 羽田国際線発ç€ã§ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®ãƒ•ãƒ©ã‚°ã‚’Reduxã«æ ¼ç´ã™ã‚‹\n yield put(switchIsNoSetTerminalHND(true));\n let filterStationList = [];\n // ターミナルãŒæœªç¢ºå®šã§ã€ç©ºæ¸¯ãƒã‚¹å„ªå…ˆãƒ¢ãƒ¼ãƒ‰ã®å ´åˆã¯ç¬¬2ターミナルを経由ã™ã‚‹çµŒè·¯ã®ã¿ã«çµžã‚Šè¾¼ã‚€ã€‚\n if(hasPriorityAirportBus){\n filterStationList = ['29510', '22911', '29512', '52106'];\n } else {\n // ターミナルãŒæœªç¢ºå®šã§ã€ç©ºæ¸¯ãƒã‚¹å„ªå…ˆãƒ¢ãƒ¼ãƒ‰ã§ã¯ãªã„å ´åˆã¯ç¬¬3ターミナルを経由ã™ã‚‹çµŒè·¯ã®ã¿ã«çµžã‚Šè¾¼ã‚€ã€‚\n filterStationList = ['29672', '305577', '51650', '29671'];\n }\n courses = yield filterViaStations(courses, isDepartureGuide, filterStationList, condition.query.lang);\n } else {\n yield put(switchIsNoSetTerminalHND(false));\n }\n\n // å–å¾—ã—ãŸç™ºç€åœ°ã®å称ãŒç©ºã«ãªã£ã¦ã„ã‚‹å ´åˆã¯ã€Redux上ã§ä¿æŒã—ã¦ã„る発ç€åœ°å称をé…列ã«è¿½åŠ ã™ã‚‹ã€‚\n // (発ç€åœ°ã«è‹±èªžã®åœ°ç‚¹åã‚’é¸æŠžã—ãŸå ´åˆã€é§…ã™ã±ã‚ã¨ã®çµŒè·¯æŽ¢ç´¢ã‚’実行ã™ã‚‹ã¨ç™ºç€åœ°ã®å称ãŒç©ºã«ãªã£ã¦ã—ã¾ã†ãŸã‚。)\n courses.map((course: any) => {\n if(Object.keys(course.Route.Point[0]).length === 0 ){\n course.Route.Point[0] = {\n Name: condition.point\n };\n }\n if(Object.keys(course.Route.Point.slice(-1)[0]).length === 0 ) {\n const idx = course.Route.Point.length;\n course.Route.Point[idx] = {\n Name: condition.point\n };\n }\n return null;\n });\n\n try {\n if(!place) {\n throw new Error('Placeæƒ…å ±ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚');\n }\n // タクシーを使用ã—ãŸå ´åˆã®å‡ºç™ºãƒ»ç›®çš„地ã‹ã‚‰ç©ºæ¸¯ã¾ã§ã®é“ã®ã‚Šã‚’ GoogleDirectionsAPI ã§æ±‚ã‚ã‚‹\n // TODO: 駅ã™ã±ã‚ã¨ã®æ¤œç´¢ã¨ã¯é–¢ä¿‚ãªã„ãŸã‚ã€ã“ã®éƒ¨åˆ†ã ã‘別ã®é–¢æ•°ã«åˆ‡ã‚Šåˆ†ã‘ã‚‹\n const taxiDirectionAndFare: GetDirectionAndFareSamplesResponse = yield saveDirection(isDepartureGuide, arrivalTimeToAirport, place, flight, lang, targetAirline);\n // GoogleDirectionAPIã®Responseã ã‘を抽出ã™ã‚‹\n const texiDirection = taxiDirectionAndFare.directionsApiResponse;\n // タクシー連æºã‚’ã™ã‚‹ã‹\n const hasTaxiCourse = texiDirection.status === 'OK';\n if(hasTaxiCourse) {\n yield put(updateDirections(texiDirection));\n // タクシーã®æ–™é‡‘æƒ…å ±ãŒã‚ã‚‹å ´åˆã«ã¯Reduxã«å…¥ã‚Œè¾¼ã‚€\n if(taxiDirectionAndFare.existMatchedCompany && taxiDirectionAndFare.fareSummaries?.length > 0) {\n yield put(updateTaxiFareSummaries(taxiDirectionAndFare.fareSummaries));\n }\n }\n const filterCourseNum = SHOW_LIMIT_COURSE_NUM;\n\n // 5件以上残ã£ãŸå ´åˆã€å…ˆé 5件ã®ã¿ã‚’表示ã™ã‚‹\n // タクシー連æºã‚’ã™ã‚‹å ´åˆã«ã¯å…ˆé 5件ã«è¿½åŠ ã—ã¦ã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ãŒ1件入る\n courses = courses.slice(0, filterCourseNum);\n\n // 空港ãƒã‚¹å„ªå…ˆãƒ¢ãƒ¼ãƒ‰ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã€çµŒè·¯ã‚’並ã³æ›¿ãˆã‚‹ã€‚\n if (state.condition.hasPriorityAirportBus) {\n courses = sortByAirportBus(courses);\n }\n // タクシー連æºã‚’ã™ã‚‹éš›ã«ã¯Courseã®å…ˆé ã‹æœ«å°¾ã«ã‚¿ã‚¯ã‚·ãƒ¼çµŒè·¯ã‚’入れ込む\n if(texiDirection && condition.place && hasTaxiCourse) {\n const hasPriorityCar = state.condition.hasPriorityCar;\n /** 対象ã¨ãªã‚‹ã‚¨ã‚¢ãƒ©ã‚¤ãƒ³ */\n const targetAirline = state.condition.targetAirLine;\n const arrivalTimeToAirport = UseTaxiCourse.getArrivalTimeToAirport(state.condition.arrivalTimeToAirport, state.condition.isDomestic, targetAirline);\n const taxiCourse = new UseTaxiCourse(\n texiDirection,\n state.condition.flightStatus,\n isDepartureGuide,\n arrivalTimeToAirport,\n condition.point,\n lang,\n taxiDirectionAndFare.routeInfo\n );\n // タクシー優先ã®å ´åˆã«ã¯1番目ã®çµŒè·¯ã«å…¥ã‚Œã‚‹\n if(hasPriorityCar) {\n courses.unshift(taxiCourse);\n }\n else {\n courses.push(taxiCourse);\n }\n }\n } catch(e) {\n // æƒ…å ±ãŒå–ã‚Œãªã„å ´åˆã«ã¯ã‚¿ã‚¯ã‚·ãƒ¼æ–™é‡‘æƒ…å ±ã‚’å‰Šé™¤ã™ã‚‹\n yield put(updateTaxiFareSummaries([]));\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n\n // çµæžœãŒ0件ã®å ´åˆã«ã¯ã‚¨ãƒ©ãƒ¼ã‚’表示ã™ã‚‹\n if(courses.length === 0){\n throw new Error('経路ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚');\n }\n\n // å„コースã§è¡¨ç¤ºã•ã‚Œã‚‹ç•ªå·ãƒ©ãƒ™ãƒ«ã‚’セットã™ã‚‹\n let idx = 0;\n courses = courses.map((course: Course)=>{\n course.displayIndex = course.isTaxi? 'taxi': String(++idx);\n return course;\n })\n\n // å„コースã®ã€Œæ—©ãƒ»å®‰ãƒ»æ¥½ã€ãƒ•ãƒ©ã‚°ã‚’ã¤ã‘ã‚‹\n courses = setFlags(courses);\n\n /** é·ç§»å…ƒãƒªãƒ•ã‚¡ãƒ©ãƒ¼ */\n const referrer = state.condition.query.referrer;\n /** å„種空港HPã‹ã‚‰é·ç§»ã—ã¦ããŸã‹ */\n const isAirportSiteTransit = ReferrerParam.isAirportSite(referrer);\n // 日本語版ã®ã¿Datalake関連ã®APIã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹\n if(state.condition.query.lang === Lang.ja) {\n try {\n // 許å¯ã—ã¦ã„ã‚‹ãƒã‚¹è·¯ç·šã®ä¸€è¦§ã‚’å–å¾—ã™ã‚‹\n const datalakeAllowBusListAPI = getDatalakeAllowBusListFactory();\n const AllowBusLineCode = yield call(datalakeAllowBusListAPI);\n\n // Datalakeã«æŠ•ã’ã‚‹ãŸã‚ã®ãƒã‚¹æƒ…å ±ã‚’æŠ½å‡ºã™ã‚‹\n // TODO: å–å¾—ã—ãŸçµæžœã‚’Reduxã«æ ¼ç´ã™ã‚‹\n const throwDatalakeBusData = extractionDatalakeBusData(AllowBusLineCode, courses);\n\n if(throwDatalakeBusData.length > 0) {\n // Datalakeã‹ã‚‰ãƒã‚¹æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n const datalakeApi = getDatalakeFactory();\n const responseDatalakeData = yield call(datalakeApi, throwDatalakeBusData);\n const datalakeData = responseDatalakeData.data.body;\n // Datalakeã®çµæžœæƒ…å ±ã‚’å…ƒã«ã€é€£æºå…ˆã®URLã‚’coursesã«åŸ‹ã‚込む\n courses = setKoboLink(courses, datalakeData);\n }\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n try {\n // UniversalMaaSå¾’æ©ãƒªãƒ³ã‚¯ä½œæˆ\n const universalMaasAPI = setUniversalMaaSWalkLinkFactory();\n // Redux-sagaã®callã¯å¼•æ•°ã‚’1ã¤ã—ã‹æŒ‡å®šã§ããªã„ãŸã‚ã€3ã¤ã®å¼•æ•°ã‚’1ã¤ã®ã‚ªãƒ–ジェクトã«ã¾ã¨ã‚ã¦æ¸¡ã—ã¦ã„ã‚‹\n const setUniversalMaaSWalkLinkArgs: SetUniversalMaaSWalkLinkArgs = {\n courses: courses,\n isDepartureGuide: isDepartureGuide,\n place: place\n };\n courses = yield call(universalMaasAPI, setUniversalMaaSWalkLinkArgs);\n }\n catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n }\n // æ±äº¬ãƒªãƒ ジンãƒã‚¹ã®é‹è¡Œæƒ…å ±ã¨å¯¾å¿œè¡¨ã‚ˆã‚Šåœç•™æ‰€ã‚³ãƒ¼ãƒ‰ãƒ»ã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹\n try {\n // リムジンãƒã‚¹APIã«å•ã„åˆã‚ã›ã‚‹ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‡ãƒ¼ã‚¿ã‚’抽出ã™ã‚‹\n const throwTokyoLimousineBusData = extractionTokyoLimousineBusDataCourses(courses);\n // ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«å•ã„åˆã‚ã›ã‚‹ä»¶æ•°ãŒ1件以上ã®å ´åˆã®ã¿å•ã„åˆã‚ã›ã‚’ã™ã‚‹\n if(throwTokyoLimousineBusData.length > 0) {\n const limousineBusDataAPI = getLimousineBusDataFactory();\n // リムジンãƒã‚¹APIã«é‹è¡Œæƒ…å ±ã¨å¯¾å¿œã™ã‚‹ãƒã‚¹åœã‚³ãƒ¼ãƒ‰ãƒ»ã‚¨ãƒªã‚¢ã‚³ãƒ¼ãƒ‰ã‚’å•ã„åˆã‚ã›ã‚‹\n const limousineBusData: ResTokyoLimousineBusFormat[] = yield call(limousineBusDataAPI, throwTokyoLimousineBusData);\n courses = setTokyoLimousineBusLink(courses, limousineBusData);\n }\n // 大阪リムジンãƒã‚¹ ã®åˆ¤å®šã‚’è¡Œã†\n setOsakaLimousineBusFlag(courses);\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n // ANAããŸåŒ—æµ·é“周éŠãƒ‘ス連æºã‚’表示ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’è¿½åŠ ã™ã‚‹\n if(isDisplayJRHokkaidoNorthFreePass(isDepartureGuide, airportCode, state.condition.date, state.condition.query.lang)) {\n courses.forEach((course: Course)=>{\n course = setShowJRHokkaidoNorthFreePassFlag(course);\n })\n }\n if(isShowTokyoMetroFreePass(isDepartureGuide, airportCode, arrDate, isAirportSiteTransit)) {\n // æ±äº¬ãƒ¡ãƒˆãƒãƒ•ãƒªãƒ¼ãƒ‘ス連æºã‚’表示ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’è¿½åŠ ã™ã‚‹\n courses = setShowTokyoMetroFreePass(courses);\n }\n // ä¹å·žå†…ã®ç©ºæ¸¯ã‚’発ç€ã™ã‚‹å ´åˆã®ã¿JRä¹å·žã®ãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹\n if(JRKyushuReserveLinkData.isShowLink(airportCode)) {\n // JRä¹å·žåˆ—車連æºãƒªãƒ³ã‚¯ã®ãƒ•ãƒ©ã‚°ã‚’è¿½åŠ ã—ã€ãƒªãƒ³ã‚¯ç”¨ãƒ‘ラメーターを構築ã™ã‚‹\n courses.forEach((course: Course)=>{\n course.JRKyushuReserveLinkData = new JRKyushuReserveLinkData(isMobileOnly, lang);\n // JRä¹å·žäºˆç´„リンクå¯èƒ½åŒºé–“を探索ã™ã‚‹\n course.JRKyushuReserveLinkData.setAll(course);\n });\n }\n\n // ãˆããã£ã¨é·ç§»URLを埋ã‚込む\n courses.forEach((course: Course) => {\n JREEkinet.insertJREEkinetURLInCourse(course, lang);\n });\n\n // é…å»¶æƒ…å ±ã‚’å–å¾—ã™ã‚‹\n yield runGetTrainInfo();\n if(!general.taxiCompanyConfigurations) {\n // タクシーメタデータをå–å¾—ã™ã‚‹\n yield runGetTaxiCompanyConfigurations();\n }\n }\n\n // 探索日時をå–得・è¨å®šã™ã‚‹ã€‚\n yield put(updateSearchedAt(new Date()));\n\n yield put(getExtreme.succeed({viaList: point, gcs: 'wgs84'}, courses));\n } catch (error) {\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(error);\n }\n // エラー発生時ã¯æ‰¿è«¾ãƒ•ãƒ©ã‚°ã‚’リセットã™ã‚‹\n yield put(switchConsentAirportArrivalTime(false));\n // ä¹—æ›ã—ãªã„駅ãŒè¨å®šã•ã‚Œã¦ã„ãªã„å ´åˆã®ã¿ã€çµŒè·¯ãŒå–å¾—ã§ããªã‹ã£ãŸã‚¨ãƒ©ãƒ¼ã‚’検索画é¢ã§è¡¨ç¤ºã™ã‚‹ã€‚\n // (çµæžœç”»é¢ã§ä¹—æ›å›žé¿ã®é§…を複数é¸æŠžã—ãŸéš›ã«ã€çµŒè·¯ãŒå˜åœ¨ã—ãªããªã‚Šã€ãƒ–ラウザãƒãƒƒã‚¯ã§æ¤œç´¢ç”»é¢ã§æˆ»ã£ãŸæ™‚ã«ã€ŒçµŒè·¯ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸã€è¦å‘Šã‚’表示ã•ã›ãªã„ãŸã‚。)\n if(general.interruptTransfer.outbound.interruptTransferStations.length === 0) { yield put(updateErrorMessage('no_get_route')); }\n yield put(getExtreme.fail({viaList: '', gcs: 'wgs84'}, error));\n // 経路å–å¾—ã«å¤±æ•—ã—ãŸãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n yield put(switchIsFailInGetCourses(true));\n } finally {\n // 最後ã«ã‹ãªã‚‰ãšæ¤œç´¢å‡¦ç†ã‚’実行ä¸ã§ã‚ã‚‹ã‹ã‚’表ã™ãƒ•ãƒ©ã‚°ã‚’ false ã«ã™ã‚‹ã€‚\n yield put(switchisLoading(false));\n }\n}\n\n/**\n * airportPointã¨airportTerminalã‚’å–å¾—ã™ã‚‹\n * \n * @return {airportPoint: string, airportTerminal: string , isNotSetTerminal: boolean}\n */\nexport function getAirportPointAndTerminal(isDomestic: boolean, flight: FlightInfo, lang: Lang, hasPriorityAirportBus: boolean, isDepartureGuide: boolean) {\n const airportCode = isDepartureGuide ? flight.depAirportCode : flight.arrAirportCode;\n const airportName = isDepartureGuide ? flight.depAirportName : flight.arrAirportName;\n // 羽田国際線使用時ã«ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æœªæ±ºå®šæ™‚ã«ã¯ç¬¬3ターミナルを固定ã§ä½¿ç”¨ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°\n const isShowViaSection: boolean = process.env['REACT_APP_IS_SHOW_VIA_SECTION'] === 'true';\n\n let airportPoint = '';\n let airportTerminal = '';\n let isNotSetTerminal = false;\n\n // 出発案内ã®å ´åˆã€‚\n if (isDepartureGuide) {\n switch (airportCode) {\n case 'SPK':\n case 'CTS':\n // 国内線・国際線ã¨ãƒã‚¹åœãŒç•°ãªã‚‹ãŸã‚分ã‘る。\n airportPoint = isDomestic ? AirportsAndStations[lang].CTS_DOM : AirportsAndStations[lang].CTS_INT;\n airportTerminal = isDomestic? 'CTS_DOM': 'CTS_INT';\n break;\n // 羽田ã®å ´åˆã¯å›½éš›ç·šã§ã‚ã‚‹ã‹ã¨ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åを見る。\n case 'HND':\n // 使用ターミナルをå称ç‰ã‹ã‚‰ç¢ºå®šã•ã›ã‚‹\n const HNDTerminal = flight.getHNDTerminal(isDepartureGuide);\n switch(HNDTerminal) {\n // 第一ターミナルã®å ´åˆ\n case 1:\n airportPoint = AirportsAndStations[lang].HND_1;\n airportTerminal = 'HND_1';\n break;\n // 第二ターミナルã®å ´åˆ\n case 2:\n airportPoint = AirportsAndStations[lang].HND_2;\n airportTerminal = 'HND_2';\n break;\n // 第三ターミナルã®å ´åˆ\n case 3:\n airportPoint = AirportsAndStations[lang].HND_3;\n airportTerminal = 'HND_3';\n break;\n // 第二ターミナル・第三ターミナル未確定ã®å ´åˆ\n case \"2_3\":\n // 出発ターミナルãŒæœªç¢ºå®šã®å ´åˆ\n // AWS経由ã®å ´åˆã«å‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®å ´åˆã«ã¯ã‚¯ã‚¨ãƒªã«ã€Œ2/3ã€ã¨æ¸¡ã•ã‚Œã‚‹\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n airportPoint = setHNDIntAirportPoint(isShowViaSection, hasPriorityAirportBus, lang);\n // 常時第3ターミナル表示フラグã‹ã€ç©ºæ¸¯ãƒã‚¹ã‚’使用ã™ã‚‹éš›ã«ã¯ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’第3ターミナルã¨ã™ã‚‹\n airportTerminal = setHNDIntAirportTerminal(isShowViaSection, hasPriorityAirportBus);\n // ターミナルãŒæœªç¢ºå®šã§ã‚るフラグを立ã¦ã‚‹ã€‚\n isNotSetTerminal = true;\n break;\n }\n break;\n // æˆç”°ç©ºæ¸¯ã®å ´åˆ\n case 'NRT':\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = AirportsAndStations[lang].NRT_3;\n airportTerminal = 'NRT_3';\n }\n else {\n airportPoint = AirportsAndStations[lang].NRT;\n airportTerminal = 'NRT';\n }\n // æ±äº¬ã‚¨ãƒªã‚¢ï¼ˆç¾½ç”°ãƒ»æˆç”°å…±ç”¨ï¼‰ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€‚\n case 'TYO':\n if (airportName.includes('Haneda')) {\n // 出発ターミナルåãŒç¬¬1ターミナルã®å ´åˆã€‚\n if (flight.depTerminal.includes('第1ターミナル') || flight.depTerminal.includes('Terminal 1') || flight.depTerminal === '1') {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = AirportsAndStations[lang].HND_1;\n airportTerminal = 'HND_1';\n } else {\n airportPoint = AirportsAndStations[lang].HND_2;\n airportTerminal = 'HND_2';\n }\n } else if (airportName.includes('Narita')) {\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = AirportsAndStations[lang].NRT_3;\n airportTerminal = 'NRT_3';\n }\n else {\n airportPoint = AirportsAndStations[lang].NRT;\n airportTerminal = 'NRT';\n }\n }\n break;\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…線(北・å—)ã§åœ°ç‚¹ã‚’分ã‘る。\n case 'FUK':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる日付ã§ã¯ãªã„å ´åˆã€‚\n if (!flight.isAvalableOperationInfo(isDepartureGuide)) {\n airportPoint = AirportsAndStations[lang].FUK_DOM;\n airportTerminal = 'FUK_DOM';\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´åã«åŒ—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.securtyCheckPoint.includes('北') || flight.securtyCheckPoint.includes('North')) {\n airportPoint = AirportsAndStations[lang].FUK_DOM_NORTH;\n airportTerminal = 'FUK_DOM_NORTH';\n // ANA APIã®ä¿å®‰æ¤œæŸ»å ´ã«å—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.securtyCheckPoint.includes('å—') || flight.securtyCheckPoint.includes('South')) {\n airportPoint = AirportsAndStations[lang].FUK_DOM_SOUTH;\n airportTerminal = 'FUK_DOM_SOUTH';\n // 未è¨å®šã®å ´åˆã€‚\n } else {\n airportPoint = AirportsAndStations[lang].FUK_DOM;\n airportTerminal = 'FUK_DOM';\n }\n // 国際線ã®å ´åˆã€‚\n } else {\n airportPoint = AirportsAndStations[lang].FUK_INT;\n airportTerminal = 'FUK_INT';\n }\n break;\n // 那覇空港ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…ç·šã§åˆ†ã‘ã‚‹\n case 'OKA':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n airportPoint = AirportsAndStations[lang].OKA_DOM;\n airportTerminal = 'OKA_DOM';\n } else {\n airportPoint = AirportsAndStations[lang].OKA_INT;\n airportTerminal = 'OKA_INT';\n }\n break;\n default:\n // ãã®ä»–ã®ç©ºæ¸¯ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®åœ°ç‚¹æƒ…å ±ã§æŽ¢ç´¢ã™ã‚‹ã€‚\n airportPoint = AirportsAndStations[lang][airportCode];\n airportTerminal = airportCode;\n break;\n }\n // 到ç€æ¡ˆå†…ã®å ´åˆã€‚\n } else {\n switch (airportCode) {\n case 'SPK':\n case 'CTS':\n // æ–°åƒæ³ç©ºæ¸¯ã®å ´åˆã€å›½å†…線・国際線ã¨ãƒã‚¹åœãŒç•°ãªã‚‹ãŸã‚分ã‘る。\n airportPoint = isDomestic ? ExitToStations[lang].CTS_DOM : ExitToStations[lang].CTS_INT;\n airportTerminal = isDomestic? 'CTS_DOM': 'CTS_INT';\n break;\n // 羽田ã®å ´åˆã¯å›½éš›ç·šã§ã‚ã‚‹ã‹ã¨ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åを見る。\n case 'HND':\n // 使用ターミナルをå称ç‰ã‹ã‚‰ç¢ºå®šã•ã›ã‚‹\n const HNDTerminal = flight.getHNDTerminal(isDepartureGuide);\n switch(HNDTerminal) {\n // 第一ターミナルã®å ´åˆ\n case 1:\n airportPoint = AirportsAndStations[lang].HND_1;\n airportTerminal = 'HND_1';\n break;\n // 第二ターミナルã®å ´åˆ\n case 2:\n airportPoint = AirportsAndStations[lang].HND_2;\n airportTerminal = 'HND_2';\n break;\n // 第三ターミナルã®å ´åˆ\n case 3:\n airportPoint = AirportsAndStations[lang].HND_3;\n airportTerminal = 'HND_3';\n break;\n // 第二ターミナル・第三ターミナル未確定ã®å ´åˆ\n case \"2_3\":\n // 出発ターミナルãŒæœªç¢ºå®šã®å ´åˆ\n // AWS経由ã®å ´åˆã«å‡ºç™ºã‚¿ãƒ¼ãƒŸãƒŠãƒ«ãŒæœªç¢ºå®šã®å ´åˆã«ã¯ã‚¯ã‚¨ãƒªã«ã€Œ2/3ã€ã¨æ¸¡ã•ã‚Œã‚‹\n // 空港ãƒã‚¹å„ªå…ˆã®å ´åˆã¯ç¬¬3ターミナルã€ãã†ã§ãªã‘ã‚Œã°ç¬¬2ターミナルã‹ã‚‰ã®çµŒè·¯æŽ¢ç´¢ã‚’ã™ã‚‹ã€‚\n airportPoint = setHNDIntAirportPoint(isShowViaSection, hasPriorityAirportBus, lang);\n // 常時第3ターミナル表示フラグã‹ã€ç©ºæ¸¯ãƒã‚¹ã‚’使用ã™ã‚‹éš›ã«ã¯ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã‚’第3ターミナルã¨ã™ã‚‹\n airportTerminal = setHNDIntAirportTerminal(isShowViaSection, hasPriorityAirportBus);\n // ターミナルãŒæœªç¢ºå®šã§ã‚るフラグを立ã¦ã‚‹ã€‚\n isNotSetTerminal = true;\n break;\n }\n break;\n // æˆç”°ç©ºæ¸¯ã®å ´åˆ\n case 'NRT':\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = ExitToStations[lang].NRT_3;\n airportTerminal = 'NRT_3';\n }\n else {\n airportPoint = ExitToStations[lang].NRT;\n airportTerminal = 'NRT';\n }\n // æ±äº¬ã‚¨ãƒªã‚¢ï¼ˆç¾½ç”°ãƒ»æˆç”°å…±ç”¨ï¼‰ã®ç©ºæ¸¯ã‚³ãƒ¼ãƒ‰ã®å ´åˆã€‚(英語版ã®ã¿è¿”ã£ã¦ãã‚‹ã“ã¨ãŒã‚る。)\n case 'TYO':\n // 空港åã«ã€ŒHanedaã€ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n if (airportName.includes('Haneda')) {\n // 国内線ã®å ´åˆã¯ç¬¬1・第2ターミナルã‹ã§åˆ†ã‘る。\n if (isDomestic) {\n // ターミナルåã¯æä¹—å£æƒ…å ±ã«ç¬¬1ターミナルã®å ´åˆã®ã¿å«ã¾ã‚Œã‚‹ã€‚\n if (flight.arrTerminal.includes('第1ターミナル') || flight.arrTerminal.includes('Terminal 1') || flight.arrTerminal === '1') {\n // æä¹—å£æƒ…å ±ãŒå˜åœ¨ã—ã€ç¬¬1ターミナルã®æ–‡å—列ãŒå«ã¾ã‚Œã¦ã„ãŸå ´åˆã®ã¿ã€ç¬¬1ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang].HND_1;\n airportTerminal = 'HND_1';\n } else {\n // 第2ターミナルã®åœ°ç‚¹ã‚’å–å¾—ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang].HND_2;\n airportTerminal = 'HND_2';\n }\n // 国際線ã®å ´åˆã¯ä¿å®‰æ¤œæŸ»å ´ã¾ã§ã®æ¡ˆå†…ã¨ã™ã‚‹ã€‚\n } else {\n airportPoint = ExitToStations[lang].HND_3;\n airportTerminal = 'HND_3';\n }\n // 空港åã«ã€ŒNaritaã€ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (airportName.includes('Narita')) {\n // æˆç”°ç©ºæ¸¯ã®å ´åˆã€ç¬¬ä¸‰ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã®å ´åˆã‚’想定ã™ã‚‹\n if(flight.getNRTTerminal(isDepartureGuide) === 3) {\n airportPoint = ExitToStations[lang].NRT_3;\n airportTerminal = 'NRT_3';\n }\n else {\n airportPoint = ExitToStations[lang].NRT;\n airportTerminal = 'NRT';\n }\n }\n break;\n // ç¦å²¡ç©ºæ¸¯ã®å ´åˆã€å›½å†…ç·šã®å—北ターミナルã€å›½éš›ç·šã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã«æŒ¯ã‚Šåˆ†ã‘る。\n case 'FUK':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n // ã‚¿ãƒ¼ãƒŸãƒŠãƒ«æƒ…å ±ãŒANA APIã‹ã‚‰å–å¾—ã§ãる日付ã§ã¯ãªã„å ´åˆã€‚\n if (!flight.isAvalableOperationInfo(isDepartureGuide)) {\n airportPoint = ExitToStations[lang].FUK_DOM;\n airportTerminal = 'FUK_DOM';\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«åŒ—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.arrTerminal.includes('北') || flight.arrTerminal.includes('North')) {\n airportPoint = ExitToStations[lang].FUK_DOM_NORTH;\n airportTerminal = 'FUK_DOM_NORTH';\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«å—ãŒå«ã¾ã‚Œã‚‹å ´åˆã€‚\n } else if (flight.arrTerminal.includes('å—') || flight.arrTerminal.includes('South')) {\n airportPoint = ExitToStations[lang].FUK_DOM_SOUTH;\n airportTerminal = 'FUK_DOM_SOUTH';\n // ANA APIã®åˆ°ç€ã‚¿ãƒ¼ãƒŸãƒŠãƒ«åã«åŒ—・å—ã„ãšã‚Œã‚‚å«ã¾ã‚Œãªã„å ´åˆã€‚\n } else {\n airportPoint = ExitToStations[lang].FUK_DOM;\n airportTerminal = 'FUK_DOM';\n }\n // 国際線ã®å ´åˆã€‚\n } else {\n airportPoint = ExitToStations[lang].FUK_INT;\n airportTerminal = 'FUK_INT';\n }\n break;\n // 那覇空港ã®å ´åˆã€å›½éš›ç·šãƒ»å›½å†…ç·šã§åˆ†ã‘ã‚‹\n case 'OKA':\n // 国内線ã®å ´åˆã€‚\n if (isDomestic) {\n airportPoint = AirportsAndStations[lang].OKA_DOM;\n airportTerminal = 'OKA_DOM';\n } else {\n airportPoint = AirportsAndStations[lang].OKA_INT;\n airportTerminal = 'OKA_INT';\n }\n break;\n default:\n // ãã®ä»–ã®ç©ºæ¸¯ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®åœ°ç‚¹æƒ…å ±ã§æŽ¢ç´¢ã™ã‚‹ã€‚\n airportPoint = ExitToStations[lang][airportCode];\n airportTerminal = airportCode;\n break;\n }\n }\n\n return {\n airportPoint: airportPoint,\n airportTerminal: airportTerminal,\n isNotSetTerminal: isNotSetTerminal,\n }\n}\n\nexport function setFlags(courses: Course[]): Course[] {\n // 早・安・楽ã®ãƒ•ãƒ©ã‚°ã‚’è¨å®šã™ã‚‹\n // 経路ã«ã€Œæ—©ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n courses = setIsFast(courses);\n\n // 経路ã«ã€Œå®‰ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n courses = setIsLowPrice(courses);\n\n // 経路ã«ã€Œæ¥½ã€ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n courses = setIsLeastTransferCount(courses);\n return courses;\n}\n\n/**\n * æ±äº¬ãƒªãƒ ジンãƒã‚¹APIã‹ã‚‰å–å¾—ã—ãŸæƒ…å ±ã‚’ã‚‚ã¨ã«ã€Coursesã«ãƒªãƒ ジンãƒã‚¹ 連æºãƒªãƒ³ã‚¯ã‚’埋ã‚込む\n * @param course \n * @param limousineBusData \n */\nexport function setTokyoLimousineBusLink(courses: Course[], limousineBusData: ResTokyoLimousineBusFormat[]) {\n limousineBusData.forEach((busData)=>{\n const route = courses[busData.courseIndex].Route;\n const line = route.Line[busData.lineIndex];\n line.tokyoLimousineBusLink = busData;\n line.isShowTokyoLimousineBus = !busData.isError;\n })\n return courses;\n}\n\n/**\n * 大阪リムジンãƒã‚¹ を使用ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’埋ã‚込む\n * @param courses\n */\nexport function setOsakaLimousineBusFlag(courses: Course[]) {\n return courses.forEach((course) => {\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n lines.forEach((line, iine_idx)=>{\n line.isShowOsakaLimousineBus = false;\n // 1. 連絡ãƒã‚¹å‡ºãªã„å ´åˆã«ã¯è¡¨ç¤ºã—ãªã„\n if(typeof line.Type === 'string' || line.Type?.text !== 'bus' || line.Type?.detail !== 'connection' ) {\n return;\n }\n // 2. 路線å㫠大阪空港交通 / 阪神ãƒã‚¹ / 阪急観光ãƒã‚¹ ãŒå«ã¾ã‚Œã‚‹å ´åˆã®ã¿è¡¨ç¤ºã™ã‚‹\n const osakaLimousineBusList = ['大阪空港交通', 'Osaka-Airport-Kotsu', '阪神ãƒã‚¹', 'Hanshin-Bus', '阪急観光ãƒã‚¹', 'Hankyu-Kotsu-Bus'];\n const isTargetOsakaLimousineBus = osakaLimousineBusList.some((busName)=>{\n return line.Name.includes(busName);\n })\n if(!isTargetOsakaLimousineBus) {\n return;\n }\n /**\n * 3. 到ç€ãƒã‚¹åœãŒã€Œæ¢…ç”°ã€ã€Œé›£æ³¢é§…å‰ã€ã€Œã‚ã¹ã®æ©‹é§…ã€ã€Œä¸Šæœ¬ç”ºé§…ã€ã®å ´åˆ\n * 梅田:ホテル阪神/ãƒãƒ¼ãƒ“ス大阪/新阪急ホテル/大阪マルビル\n */\n const targetBusStops = [\"308626\", \"304069\", \"308622\", \"307201\", \"304048\", \"304780\", \"305932\"];\n const points = Array.isArray(course.Route.Point)? course.Route.Point: [course.Route.Point];\n const arrPoint = points[iine_idx+1];\n line.isShowOsakaLimousineBus = targetBusStops.includes(arrPoint?.Station?.code);\n })\n return course;\n });\n}\n\n/**\n * Datalakeã‹ã‚‰å–å¾—ã—ãŸæƒ…å ±ã‚’å…ƒã«Coursesã«å·¥æˆ¿é€£æºãƒªãƒ³ã‚¯ã‚’埋ã‚込む\n * @param courses \n * @param datalakeData\n */\nexport function setKoboLink(courses: Course[], datalakeData: datalakeBusFormat[]) {\n datalakeData.map((busData)=>{\n const route = courses[busData.course_index].Route;\n const line = route.Line[busData.line_index];\n // 出発地・到ç€åœ°æƒ…å ±ã‚’è¿½åŠ ã™ã‚‹\n const depStationCode = route.Point[busData.line_index].Station.code;\n const arrStationCode = route.Point[busData.line_index+1].Station.code;\n line.koboBusLink = genarateKoboLink(busData, depStationCode, arrStationCode);\n return null;\n });\n return courses;\n}\n\n/**\n * JR北海é“『ANAããŸåŒ—æµ·é“周éŠãƒ‘スã€ã®ã‚¢ãƒ•ã‚£ãƒªã‚¨ã‚¤ãƒˆãƒªãƒ³ã‚¯ã‚’表示ã™ã‚‹ã‹ãƒ•ãƒ©ã‚°ã‚’å„区間ã«å…¥ã‚Œã‚‹\n */\nexport function setShowJRHokkaidoNorthFreePassFlag(course: Course) {\n try {\n if(course.OperationLinePattern) {\n const sections = course.OperationLinePattern.length? course.OperationLinePattern: [course.OperationLinePattern];\n sections.map((section: any, idx: number)=>{\n const routeLine = course.Route.Line[section.routeLineIndex-1];\n const lines = section.Line.length? section.Line: [section.Line];\n // 1区間ã«è·¨ã‚‹ç·šåŒºã®ä¸€è¦§\n const lineList = lines.map((line: any)=>{ return line.code; });\n // 対象区間ã®ç·šåŒºãŒç¯„囲内ã‹ã‚’ãƒã‚§ãƒƒã‚¯\n let showSectionLink = lineList.reduce((x: boolean, a: number) => {\n return x && (ShowJRHookaidoNorthFreePass.showLineList.includes(Number(a)))\n }, true);\n if(showSectionLink) {\n // åœè»Šé§…一覧をå–å¾—\n const stopStationList = routeLine.InsideInformation?.Stop.map((x)=>{\n return Number(x.Point.Station.code);\n });\n // åœè»Šé§…ã«ãƒ•ãƒªãƒ¼ãƒ‘ス区間外ã®é§…ãŒå«ã¾ã‚Œã¦ã„ãªã„ã‹ãƒã‚§ãƒƒã‚¯\n showSectionLink = stopStationList?.reduce((x, a)=>{\n return x && !ShowJRHookaidoNorthFreePass.outOfFreePassStationList.includes(a);\n }, true);\n }\n routeLine.isShowJRHokkaidoFreePass = showSectionLink;\n return null;\n });\n // ä¹—ã‚Šæ›ãˆé§…ã®é§…コードListã‚’å–å¾—ã—ã¾ã™\n const sectionPointList = course.Route.Point.map((x)=>{\n return x.Station? x.Station.code: null;\n });\n // ã©ã®åŒºé–“ã¾ã§ã‚’表示対象ã¨ã™ã‚‹ã‹ã‚’求ã‚ã‚‹\n // arrStationList ã«ä¹—ã£ã¦ã„る駅リストã«ãƒžãƒƒãƒã™ã‚‹æœ€å¾Œã®é§…ã¾ã§ã‚’表示対象ã¨ã™ã‚‹\n let endIdx: number = Infinity;\n sectionPointList.forEach((x, idx)=>{\n endIdx = (x && ShowJRHookaidoNorthFreePass.arrStationList.includes(Number(x)))? idx: endIdx;\n });\n // 最終地点より先ã¯é€£æºãƒªãƒ³ã‚¯ã‚’éžè¡¨ç¤ºã¨ã™ã‚‹\n for(let i=endIdx; i<course.Route.Line.length; i++){\n course.Route.Line[i].isShowJRHokkaidoFreePass = false;\n }\n }\n } catch(e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n return course;\n}\n\n/**\n * æ±äº¬ãƒ¡ãƒˆãƒãƒ•ãƒªãƒ¼ãƒ‘ス連æºã‚’表示ã™ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’å„区間ã«å…¥ã‚Œã‚‹\n * @param courses フラグを入れる経路リスト\n */\nexport function setShowTokyoMetroFreePass(courses: Course[]) {\n return courses.map((course)=>{\n try {\n if(course.OperationLinePattern) {\n const sections = course.OperationLinePattern.length? course.OperationLinePattern: [course.OperationLinePattern];\n // æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„・京急をå«ã‚€è·¯ç·šãƒªã‚¹ãƒˆ\n const tokyoSubwayAndKeikyuLineList: number[] = tokyoMetroLineList.concat(keikyuLineList);\n // 京急本線ã®ã†ã¡å¯¾è±¡å¤–ã®é§…リスト\n const excludedKeikyuStationArray: number[] = excludedKeikyuStationList.map((station)=>{\n return station.code;\n });\n const courseLineList = sections.reduce((courseLineList: number[], section: any)=>{\n const routeLine = course.Route.Line[section.routeLineIndex-1];\n const lines = section.Line.length? section.Line: [section.Line];\n // 1区間ã«è·¨ã‚‹ç·šåŒºã®ä¸€è¦§\n const lineList = lines.map((line: any)=>{ return Number(line.code); });\n // 対象区間ã®ç·šåŒºãŒå…¨ã¦ãŒç¯„囲内(æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„)ã‹ã‚’ãƒã‚§ãƒƒã‚¯\n routeLine.hasOnlyTokyoSubwaySeciton = lineList.reduce((x: boolean, a: number) => {\n return x && (tokyoMetroLineList.includes(a))\n }, true);\n // 京急ã®åŒºé–“ã‚’å«ã‚€ã‹\n const hasKeikyuSection = lineList.reduce((x: boolean, a: number) => {\n return x || (keikyuLineList.includes(a))\n }, false);\n // 京急・æ±äº¬åœ°ä¸‹é‰„ã§å®Œçµã™ã‚‹ã‹\n const hasOnlyKeikyuOrTokyoSubway = lineList.reduce((x: boolean, a: number) => {\n return x && (tokyoSubwayAndKeikyuLineList.includes(a))\n }, true);\n // 対象区間ãŒäº¬æ€¥ã‚‚ã—ãã¯æ±äº¬åœ°ä¸‹é‰„ã§å®Œçµã™ã‚‹ã‹ã‚’ãƒã‚§ãƒƒã‚¯\n // 京急リンクã¯å›½å†…線利用ã¨æ°—ã«ã—ã‹è¡¨ç¤ºã—ãªã„ãŸã‚制御を入れる\n routeLine.hasTargetKeikyuSection = hasKeikyuSection && hasOnlyKeikyuOrTokyoSubway;\n if(routeLine.hasTargetKeikyuSection) {\n // åœè»Šé§…ã®ä¸€è¦§ã‚’å–å¾—ã™ã‚‹\n const stopList = routeLine.InsideInformation?.Stop.map((stop)=>{\n return Number(stop.Point.Station.code);\n });\n if(Array.isArray(stopList)) {\n // ãƒã‚±ãƒƒãƒˆã®æœ‰åŠ¹ç¯„囲外ã®é§…ã‚’å«ã¾ãªã„ã‹\n const isNotIncludeTicketexcludedKeikyuArea: boolean = stopList.reduce((x: boolean, station: number)=>{\n return x && !excludedKeikyuStationArray.includes(station);\n }, true);\n routeLine.hasTargetKeikyuSection = isNotIncludeTicketexcludedKeikyuArea;\n }\n }\n return courseLineList.concat(lineList)\n }, []);\n // 1経路ä¸ã«æ±äº¬ãƒ¡ãƒˆãƒãƒ»éƒ½å–¶åœ°ä¸‹é‰„を使用ã™ã‚‹åŒºé–“ãŒã‚ã‚‹ã‹ã‚’判定ã™ã‚‹\n course.hasTokyoSubwaySection = courseLineList.reduce((x: boolean, a: number)=>{\n return x || tokyoMetroLineList.includes(a);\n }, false);\n // 1経路ä¸ã«äº¬æ€¥&TokyoSuwayTicketã®ãƒœã‚¿ãƒ³ã‚’表示ã™ã‚‹åŒºé–“ãŒå«ã¾ã‚Œã‚‹\n course.hasKeikyuAndSubwayTicketSection = course.Route.Line.reduce((result: boolean, line: Line)=>{\n return result || (line.hasTargetKeikyuSection || false );\n }, false);\n }\n } catch (e) {\n // dev環境ã®ã¿ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’出力\n if(process.env['REACT_APP_STAGE_ENV'] === 'dev') {\n console.error(e);\n }\n }\n return course;\n });\n}\n\n/**\n * 工房連æºã®ãƒªãƒ³ã‚¯ãƒ‘ラメータを生æˆã™ã‚‹\n * @param busData ä¸é–“層ã‹ã‚‰å–å¾—ã—ãŸãƒã‚¹ãƒ‡ãƒ¼ã‚¿\n * @param depStaCode 区間出発地ã®é§…コード(駅ã™ã±ã‚ã¨ï¼‰\n * @param arrStaCode 区間到ç€åœ°ã®é§…コード(駅ã™ã±ã‚ã¨ï¼‰\n */\nfunction genarateKoboLink(busData: datalakeBusFormat, depStaCode: string, arrStaCode: string) {\n const baseURL = 'https://secure.j-bus.co.jp/hon/BusService?';\n const query: KoboLink = {\n host: baseURL,\n query: {\n wayflg: '0',\n gpcd: busData.gpcd,\n rocd: ('000'+busData.rocd).slice(-4),\n \"dtym[0]\": busData.dtym,\n \"dtdd[0]\": ('0'+busData.dtdd).slice(-2),\n \"bncd[0]\": ('000'+busData.bncd).slice(-4),\n \"bscd[0]\": ('0'+busData.bscd).slice(-2),\n \"dscd[0]\": \"00\",\n \"affiliateid\": \"JbDpuWc\"\n },\n onelineQuery: ''\n };\n const stationTable: ({ [key: string]: string; } | null) = busData.stationTable || null;\n if(stationTable) {\n const bfcd: string = stationTable[depStaCode];\n const isDevEnv = process.env['REACT_APP_STAGE_ENV'] === 'dev';\n if(bfcd) {\n query.query[\"bfcd[0]\"] = bfcd;\n } else if(isDevEnv) {\n console.error(\"発車オーライãƒãƒƒãƒˆé€£æº:å‡ºç™ºé§…æƒ…å ±ãŒå–å¾—ã§ãã¾ã›ã‚“\");\n console.error(\"bfcd[0]: \"+bfcd);\n }\n const btcd: string = stationTable[arrStaCode];\n if(btcd) {\n query.query[\"btcd[0]\"] = btcd;\n } else if(isDevEnv) {\n console.error(\"発車オーライãƒãƒƒãƒˆé€£æº:到ç€é§…æƒ…å ±ãŒå–å¾—ã§ãã¾ã›ã‚“\");\n console.error(\"btcd[0]: \"+btcd);\n }\n }\n // é·ç§»ãƒªãƒ³ã‚¯ã®ã‚¯ã‚¨ãƒªéƒ¨åˆ†ã‚’生æˆ\n // TODO: new URLSearchParams() を使ã£ã¦æ›¸ãç›´ã™\n query.onelineQuery = Object.keys(query.query).reduce((x, a)=>{\n return `${x}&${a}=${query.query[a]}`;\n }, \"\").slice(1);\n return query;\n}\n\n/**\n * Datalakeã«æŠ•ã’ã‚‹ãŸã‚ã®ãƒã‚¹æƒ…å ±ã‚’æŠ½å‡ºã™ã‚‹\n * @param AllowBusLineCode 許å¯ã™ã‚‹ãƒã‚¹è·¯ç·šã‚³ãƒ¼ãƒ‰ã®ä¸€è¦§\n * @param courses ç¾åœ¨ã®çµŒè·¯ä¸€è¦§\n */\nexport function extractionDatalakeBusData(AllowBusLineCode:string[] ,courses: Course[]) {\n let datalakeBusList: datalakeBusFormat[] = [];\n courses.map((course, c_idx)=>{\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n lines.map((line, i)=>{\n if(line.Type) {\n const lineType = (typeof line.Type === 'string') ? line.Type : line.Type.text;\n if( lineType === 'bus' && line.InsideInformation ) {\n const navigatorTransportation = new URLSearchParams(line.InsideInformation.navigatorTransportation);\n let setLineCode = navigatorTransportation.get('LINE') || \"\";\n // line_codeã¯3æ¡ã®å ´åˆãŒã‚ã‚‹ã®ã§ç©´åŸ‹ã‚ã™ã‚‹\n setLineCode = setLineCode.padStart(4, '0');\n // 許å¯ã—ã¦ã„ã‚‹ãƒã‚¹è·¯ç·šã®ã¿APIå´ã«å•ã„åˆã‚ã›ã‚‹\n if(AllowBusLineCode.includes(setLineCode)) {\n datalakeBusList.push({\n input_date: format(new Date(line.DepartureState.Datetime.text), 'yyyyMMdd'),\n input_line_code: setLineCode,\n input_station_code: course.Route.Point[i].Station.code,\n course_index: c_idx,\n line_index: i,\n input_time: Number( format(new Date(line.DepartureState.Datetime.text), 'HHmm') ).toString()\n });\n }\n }\n }\n return null;\n });\n return null;\n });\n return datalakeBusList;\n}\n\n/**\n * 指定ã—ãŸä¾¿ãŒæ±äº¬ãƒªãƒ ジンãƒã‚¹ã‹ã‚’判定ã™ã‚‹\n * @param depCode 出発地駅コード\n * @param arrCode 到ç€åœ°é§…コード\n */\nfunction isTokyoLimousineBus(depCode: string, arrCode: string) {\n // depCodeã‹arrCodeãŒnullãªã‚‰falseã‚’è¿”ã™\n if(!depCode || !arrCode){\n return false;\n }\n // 羽田・æˆç”°ç©ºæ¸¯ã®æœ€å¯„ã‚Šã®ãƒã‚¹åœãƒªã‚¹ãƒˆ\n const airportBusStopTable: any = {\n narita: ['29574', '304034', '29573'],\n haneda: ['29511', '305577', '29512']\n }\n const airpotBusStopList: string[] = Object.keys(airportBusStopTable).reduce((x, a)=>{ return x.concat(airportBusStopTable[a]) }, []);\n return airpotBusStopList.includes(depCode) || airpotBusStopList.includes(arrCode);\n}\n\n/**\n * 対象区間ãŒé«˜é€Ÿãƒã‚¹ãƒ»é€£çµ¡ãƒã‚¹ã‹ã‚’判定ã™ã‚‹\n * @param lineType 駅ã™ã±ã‚ã¨ä¸Šã®çµŒè·¯ã®è·¯ç·šç¨®åˆ¥ã€‚\n */\nconst isHighWayAirportBus = (lineType: string | TypeClass) => {\n if(typeof lineType === 'string') {\n return false;\n }\n else {\n // ãƒã‚¹ã§ã‹ã¤ã€è·¯ç·šãƒã‚¹ä»¥å¤–ãªã‚‰trueã‚’è¿”ã™\n return lineType.text === 'bus' && lineType.detail !== 'local';\n }\n}\n\n/**\n * extractionTokyoLimousineBusData ã‚’å…¨ã¦ã®çµŒè·¯ã«å¯¾ã—ã¦è¡Œã†\n * @param courses ç¾åœ¨ã®çµŒè·¯ä¸€è¦§ \n */\nfunction extractionTokyoLimousineBusDataCourses(courses: Course[]) {\n let limousineBusList: ReqTokyoLumousineBusFormat[] = [];\n courses.forEach((course, course_index)=>{\n limousineBusList = limousineBusList.concat(extractionTokyoLimousineBusData(course, course_index));\n });\n return limousineBusList;\n};\n\n/**\n * å–å¾—ã—ãŸçµŒè·¯ã®å†…ã€æ±äº¬ãƒªãƒ ジンãƒã‚¹ã®åŒºé–“を抽出ã—ã€é‹è¡Œæƒ…å ±ã‚’å•ã„åˆã‚ã›ã‚‹åœŸå°ã‚’作る \n * @param course 検索ã™ã‚‹ã‚³ãƒ¼ã‚¹\n * @param course_index 対象ã®ã‚³ãƒ¼ã‚¹ã®idx\n */\nexport function extractionTokyoLimousineBusData(course: Course, course_index: number){\n let limousineBusList: ReqTokyoLumousineBusFormat[] = [];\n const lines = Array.isArray(course.Route.Line)? course.Route.Line: [course.Route.Line];\n lines.forEach((line, line_index)=>{\n // 高速ãƒã‚¹ã®å ´åˆã®ã¿å¯¾è±¡ã¨ã™ã‚‹\n if(line.Type && isHighWayAirportBus(line.Type)) {\n const depPoint = course.Route.Point[line_index];\n const arrPoint = course.Route.Point[line_index+1];\n const depCode = depPoint.Station?.code;\n const arrCode = arrPoint.Station?.code;\n // 羽田・æˆç”°ç™ºç€ã§ã€è·¯ç·šä»¥å¤–ã®ãƒã‚¹ã ã£ãŸã‚‰ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã«æŠ•ã’ã‚‹\n if(isTokyoLimousineBus(depCode, arrCode)) {\n const depTime = new Date(line.DepartureState.Datetime.text);\n limousineBusList.push({\n courseIndex: course_index,\n lineIndex: line_index,\n depCode: depCode,\n arrCode: arrCode,\n depTime: String(depTime.getTime()/1000)\n })\n }\n }\n });\n return limousineBusList;\n}\n\n/**\n * 経路ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ãŒå«ã¾ã‚Œã‚‹é †ã«ä¸¦ã³æ›¿ãˆã‚‹ã€‚\n * @param courses 経路ã®é…列。\n */\nfunction sortByAirportBus(courses: Course[]) {\n // å–å¾—ã—ãŸçµŒè·¯ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ãŒã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã‚’セットã™ã‚‹ã€‚\n courses.forEach((course) => {\n course.hasAirportBus = false;\n course.Route.Line.forEach((l) => {\n // 交通種別ãŒãªã„å ´åˆã‚„æ–‡å—列ã®å ´åˆã¯ä½•ã‚‚ã—ãªã„。\n if (!l.Type || typeof l.Type === 'string') { return }\n // 交通種別ã®è©³ç´°ãŒã€Œé€£çµ¡ãƒã‚¹ã€ã®å ´åˆã®ã¿ãƒ•ãƒ©ã‚°ã‚’trueã«ã™ã‚‹ã€‚\n if (l.Type.detail === 'connection') { course.hasAirportBus = true; }\n })\n })\n // 空港連絡ãƒã‚¹ãŒå«ã¾ã‚Œã¦ã„る経路ãŒå‰ã®æ–¹ï¼ˆé…列ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ãŒè‹¥ã„é †ï¼‰ã«ãªã‚‹ã‚ˆã†ã«ã‚½ãƒ¼ãƒˆã™ã‚‹ã€‚\n courses.sort((course1, course2) => {\n let result = 0;\n // å‰å¾Œã®çµŒè·¯ãŒã©ã¡ã‚‰ã‚‚空港連絡ãƒã‚¹ã‚’å«ã‚€å ´åˆã¯é †åºã‚’変ãˆãªã„。\n if (course1.hasAirportBus && course2.hasAirportBus) result = 0;\n // å‰å¾Œã®çµŒè·¯ãŒã©ã¡ã‚‰ã‚‚空港連絡ãƒã‚¹ã‚’å«ã¾ãªã„å ´åˆã¯é †åºã‚’変ãˆãªã„。\n if (!course1.hasAirportBus && !course2.hasAirportBus) result = 0;\n // ç›´å‰ã®çµŒè·¯ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ã‚’å«ã¿ã€ç›´å¾Œã®çµŒè·¯ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ãŒãªã„å ´åˆã€ç›´å‰ã®çµŒè·¯ãŒå‰ã«ãるよã†ã«ã‚½ãƒ¼ãƒˆã™ã‚‹ã€‚\n if (course1.hasAirportBus && !course2.hasAirportBus) result = -1;\n // ç›´å‰ã®çµŒè·¯ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ãŒãªãã€ç›´å¾Œã®çµŒè·¯ã«ç©ºæ¸¯é€£çµ¡ãƒã‚¹ã‚’å«ã‚€å ´åˆã€ç›´å¾Œã®çµŒè·¯ãŒå‰ã«ãるよã†ã‚½ãƒ¼ãƒˆã™ã‚‹ã€‚\n if (!course1.hasAirportBus && course2.hasAirportBus) result = 1;\n return result;\n })\n return courses;\n}\n\n/** æ乗便ã®ç„¡ã„å†åˆ¤å®šã‚’行ㆠ*/\nconst isDomesticFlight = (condition: ConditionState, pathName: string) =>{\n /** 指定日付ã®ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±ãŒã‚ã‚‹å ´åˆã«ã¯ãã¡ã‚‰ã‚’利用ã™ã‚‹ */\n if(condition.flightStatusUserSetDateForSearchAd.getIsAbleUse()) {\n return condition.flightStatusUserSetDateForSearchAd.isDomestic;\n }\n if(condition.flightStatusForSeachAd.getIsAbleUse()) {\n return condition.flightStatusForSeachAd.isDomestic;\n }\n if(condition.flightStatus.getIsAbleUse()) {\n return condition.flightStatus.isDomestic;\n }\n /** ãƒ•ãƒ©ã‚¤ãƒˆæƒ…å ±ãŒå…¨éƒ¨ä½¿ãˆãªã„å ´åˆã«ã¯ã€pathã«ã‚ˆã£ã¦å‚照先を返る */\n if(Path.isSearch(pathName)) {\n /** 検索画é¢ã®å ´åˆã€isDomestic値ã‹ã‚‰å‚ç…§ã™ã‚‹ */\n return condition.isDomestic;\n }\n else {\n /** ãれ以外ã®å ´åˆã«ã¯ クエリパラメータより判æ–ã™ã‚‹ */\n return condition.query.isDomestic;\n }\n}\n\n/**\n * çµæžœãƒšãƒ¼ã‚¸ã«é·ç§»ã™ã‚‹éš›ã®ã‚¯ã‚¨ãƒªæ–‡å—列を作æˆã™ã‚‹ã€‚\n * @param condition Reduxã§ç®¡ç†ã—ã¦ã„る状態ã®å€¤ã€‚\n */\nfunction makeResultQueryString(state: State) {\n const condition = state.condition;\n const general = state.general;\n // 定刻ã®å‡ºç™ºæ™‚刻。(nullã®å ´åˆã¯ç©ºæ–‡å—ã‚’è¨å®šã™ã‚‹ã€‚)\n const std = condition.query.std ? DateTime.JSTFormat(condition.query.std, 'yyyyMMddHHmm') : '';\n // 定刻ã®åˆ°ç€æ™‚刻。(nullã®å ´åˆã¯ç©ºæ–‡å—ã‚’è¨å®šã™ã‚‹ã€‚)\n const sta = condition.query.sta ? DateTime.JSTFormat(condition.query.sta, 'yyyyMMddHHmm') : '';\n // フォーム上ã§è¨å®šã•ã‚ŒãŸæ—¥ä»˜ã€‚(yyyyMMddå½¢å¼ã®å€¤ã‚’Dateåž‹ã«ã™ã‚‹ã€‚)\n const date = condition.date ? DateTime.JSTFormat(condition.date, 'yyyyMMdd') : '';\n // ä¸èº«ã®ã‚ã‚‹UniversalMaaSクエリã ã‘をサマリー画é¢ã«é€£æºã™ã‚‹\n const universalMaasQuery: any = general.universalMaaSQuery;\n Object.keys(universalMaasQuery).forEach((key: string) => {\n if(!universalMaasQuery[key]) {\n delete universalMaasQuery[key];\n }\n })\n // ç¾åœ¨ã‚¢ãƒ—リケーション上ã§é–‹ã„ã¦ã„るパスã®æ–‡å—列をå–å¾—ã™ã‚‹ã€‚\n const pathName = state.router.location.pathname;\n const isDomestic = isDomesticFlight(condition, pathName);\n return new URLSearchParams({\n point: condition.point,\n pointCode: condition.pointCode,\n pointType: condition.pointType,\n flight: condition.flight,\n flightNumber: condition.flightNumber,\n date: date,\n hasVia: condition.hasVia.toString(),\n via: condition.via,\n viaCode: condition.viaCode,\n isDepartureGuide: condition.isDepartureGuide.toString(),\n // クエリã§æ¸¡ã£ã¦ããŸåˆ°ç€æ¡ˆå†…ã§ã‚ã‚‹ã‹ã®ãƒ•ãƒ©ã‚°ã€‚\n // (ANA APIã§æœŸé–“外ã®å ´åˆã«é©åˆ‡ã«ã‚¯ã‚¨ãƒªã®ç™ºç€æ™‚刻をé¸æŠžã™ã‚‹ãŸã‚。)\n // TODO: isDepartureGuideã¨ä»Šå¾Œçµ±åˆã§ããªã„ã‹æ¤œè¨Žã€‚(2020/03/28ç¾åœ¨ï¼‰\n isArrivalGuide: (!condition.isDepartureGuide).toString(),\n isEnabledShinkansen: condition.isEnabledShinkansen.toString(),\n isEnabledLimitedExpress: condition.isEnabledLimitedExpress.toString(),\n isEnabledIc: condition.isEnabledIc.toString(),\n hasPriorityAirportBus: condition.hasPriorityAirportBus.toString(),\n hasPriorityCar: condition.hasPriorityCar.toString(),\n isShowBarrierFreeInfo: general.mode.isShowBarrierFreeInfo.toString(),\n arrivalTimeToAirport: condition.arrivalTimeToAirport.toString(),\n // 以é™ã¯ASWã¾ãŸã¯ANAアプリã‹ã‚‰é€ã‚‰ã‚Œã‚‹ãƒ‘ラメーターã®å€¤ã€‚\n // ※便åã®ã‚ーã¯ãƒ•ã‚©ãƒ¼ãƒ 上ã§è¨å®šã—ãŸå€¤ã¨é‡è¤‡ã™ã‚‹ãŸã‚ã€ä»–ã®éƒ¨åˆ†ã§ã®å¤‰æ•°åã¨ç•°ãªã£ãŸå称ã«ã—ã¦ã„る。\n reservedFlight: condition.query.flightNumber,\n arrAirport: condition.query.arrAirport,\n depAirport: condition.query.depAirport,\n fromAirportCode: condition.query.fromAirportCode,\n toAirportCode: condition.query.toAirportCode,\n fromTerminal: condition.query.fromTerminal,\n toTerminal: condition.query.toTerminal,\n targetAirLine: condition.targetAirLine.toString(),\n lang: condition.query.lang,\n referrer: condition.query.referrer,\n cityName: condition.cityName,\n std: std,\n sta: sta,\n isDomestic: isDomestic,\n ...universalMaasQuery\n }).toString();\n}\n\n/** çµæžœãƒšãƒ¼ã‚¸ã‚’表示ã™ã‚‹ã€‚*/\nfunction* runDisplayResult() {\n // Reduxã§ç®¡ç†ã—ã¦ã„る値をå–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n // Cookieã«é–¢ã™ã‚‹æƒ…å ±ã‚’æ ¼ç´ã™ã‚‹\n const cookieStatus = {\n // リンクティビティã‹ã‚‰é·ç§»ã—ã¦ããŸéš›ã«çµŒè·¯ã‚’復元ã™ã‚‹ãŸã‚ã®å„種クエリをä¿å˜ã™ã‚‹\n query: {\n name: \"ana_airport_access_navi_resultquery\",\n // リンクティビティã‹ã‚‰é·ç§»ã—ã¦ããŸéš›ã®æœ‰åŠ¹æœŸé™ã¯1時間ã¨è¨å®šã™ã‚‹\n limit: addHours(new Date(), 1)\n }\n }\n // クエリ文å—列を作æˆã™ã‚‹ã€‚\n const queryString = makeResultQueryString(state);\n // çµæžœãƒšãƒ¼ã‚¸ã‚’表示ã™ã‚‹ãƒ‘スã®æ–‡å—列を定義ã™ã‚‹ã€‚\n const path = '/summary?' + queryString;\n // リンクティビティã‹ã‚‰æˆ»ã£ãŸéš›ã«å¾©å…ƒã™ã‚‹URLã‚’Cookieã«ä¿å˜ã—ã¾ã™\n Cookies.set(cookieStatus.query.name, queryString, { expires: cookieStatus.query.limit });\n if(state.condition.place !== null) {\n // å–å¾—ã—ãŸåœ°ç‚¹ã®Placeæƒ…å ±ã‚’webStorageã«ä¿å˜ã™ã‚‹\n PlaceInfoFactory.setPlaceData(state.condition.pointCode, state.condition.place);\n }\n\n // ç¾åœ¨ã‚¢ãƒ—リケーション上ã§é–‹ã„ã¦ã„るパスã®æ–‡å—列をå–å¾—ã™ã‚‹ã€‚\n const pathName = state.router.location.pathname;\n // 検索画é¢ã‹ã‚‰ã®é·ç§»ã®å ´åˆã®ã¿ã€/summaryパスã¸é·ç§»ã•ã›ã‚‹ã€‚\n if (hasDisplayedSearch(pathName)) yield put(push(path));\n // 探索日時をå–å¾—ã™ã‚‹ã€‚\n const searchDate = state.condition.flightStatus.getSearchTime(state.condition.isDepartureGuide);\n // 開発環境ã®å ´åˆï¼ˆç’°å¢ƒå¤‰æ•°ã§é–‹ç™ºç’°å¢ƒã¨è¨å®šã—ã¦ã„ã‚‹å ´åˆï¼‰ã®ã¿ã€æŽ¢ç´¢æ—¥æ™‚ã«1970å¹´ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹éš›ã¯ã‚¢ãƒ©ãƒ¼ãƒˆã‚’出ã™ã€‚\n if (process.env['REACT_APP_STAGE_ENV'] === 'dev' && searchDate.getFullYear() === 1970) {\n window.alert('検索日時ã«1970å¹´ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã™ã€‚');\n }\n // 広告ãƒãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’進ã¾ã›ã‚‹\n yield put(randomTmpAdRoatationValue());\n}\n\n/** 経路検索処ç†ã®çµ‚了後ã«ã‚¢ã‚¯ã‚»ã‚¹ãƒã‚°ã‚’é€ä¿¡ã™ã‚‹ã€‚ */\nfunction* sendAccessLogAfterSeach() {\n // Reduxã§ç®¡ç†ã—ã¦ã„る値をå–å¾—ã™ã‚‹ã€‚\n const state: State = yield select();\n /** ç¾åœ¨ã®ãƒ‘ス。 */\n let pathName = state.router.location.pathname;\n // ç¾åœ¨ã®ãƒ‘スãŒæ¤œç´¢ç”»é¢ï¼ˆã€Œ/ã€ã¾ãŸã¯ã€Œ/searchã€ï¼‰ã®å ´åˆã€ã€Œ/summaryã€ã«ç½®ãæ›ãˆã‚‹ã€‚\n // (原則ã€æ¤œç´¢æ¡ä»¶ç”»é¢ã§ã¯çµŒè·¯æ¤œç´¢å‡¦ç†ã‚’実行ã—ãªã„ãŸã‚。)\n if (Path.isSearch(pathName)) {\n pathName = Path.SUMMARY;\n }\n}\n\n/**\n * 検索画é¢ã‚’é–‹ã„ã¦ã„ã‚‹ã‹ã‚’パスã‹ã‚‰ã€‚判別ã™ã‚‹ã€‚\n * @param path ç¾åœ¨é–‹ã„ã¦ã„るパス。\n */\nfunction hasDisplayedSearch(path: string) {\n // é–‹ã„ã¦ã„るページãŒã€Œ/resultã€ã€Œ/summaryã€ã§ã¯ãªã„å ´åˆã®ã¿ã€trueã‚’è¿”ã™ã€‚\n return (!Path.isResult(path) && !Path.isSummary(path));\n}\n\nexport function* watchGetRouteType() {\n yield takeLatest(ConditionActionType.ANA_GET_ROUTE_TYPE_START, runGetRouteType);\n}\n\nexport function* watchGetMembers() {\n yield takeLatest(ConditionActionType.ANA_GET_FLIGHT_START, runGetFlight);\n}\n\nexport function* watchGetFlightSuccess() {\n // ANA APIã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒå®Œäº†ã—ãŸå¾Œã«ã€æŽ¢ç´¢æ¡ä»¶è©³ç´°ã‚’å–å¾—ã™ã‚‹ã€‚\n yield takeLatest(ConditionActionType.ANA_GET_FLIGHT_SUCCEED, runGetCondition);\n}\n\nexport function* watchGetConditionSuccess() {\n // 探索æ¡ä»¶è©³ç´°ã‚’å–å¾—ã—ãŸå¾Œã«ã€çµŒè·¯æŽ¢ç´¢ã‚’実行ã™ã‚‹ã€‚\n yield takeLatest(ConditionActionType.EKISPERT_GET_CONDITION_SUCCEED, runGetExtreme);\n}\n\nexport function* watchGetCourses() {\n // 経路をå–å¾—ã§ããŸå¾Œã«ã€çµæžœãƒšãƒ¼ã‚¸ã¸é·ç§»ã™ã‚‹ã€‚\n yield takeLatest(ConditionActionType.EKISPERT_GET_EXTREME_SUCCEED, runDisplayResult);\n}\n\nexport function* watchSetFlight(){\n yield takeLatest(ConditionActionType.EKISPERT_GET_EXTREME_SUCCEED, sendAccessLogAfterSeach);\n}\n\nexport default function* rootSaga() {\n yield all([\n fork(watchGetMembers),\n fork(watchGetFlightSuccess),\n fork(watchGetConditionSuccess),\n fork(watchGetCourses),\n fork(watchGetRouteType),\n ]);\n yield fork(watchSetFlight);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport configureStore, { sagaMiddleware, history } from './store';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './index.css';\nimport './i18n';\nimport rootSaga from './sagas';\nimport 'react-app-polyfill/stable';\nimport { CookiesProvider } from 'react-cookie';\n\nconst store = configureStore();\n\nReactDOM.render(\n <Provider store={store}>\n <CookiesProvider>\n <App history={history} />\n </CookiesProvider>\n </Provider>,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\nsagaMiddleware.run(rootSaga);\n"],"sourceRoot":""}