{"version":3,"sources":["redux/actions/tollStationsActions.js","redux/actions/resultOptionsActions.js","config/constants.js","redux/actions/submittedFormDataActions.js","redux/actions/vehicleOptionsActions.js","redux/actions/geolocationActions.js","config/positionConfig.js","redux/actions/formDataActions.js","redux/configureStore.js","redux/actions/resultActions.js","config/apiConfig.js","utils/cookies.js","redux/actions/autoCompleteActions.js","serviceWorker.js","components/menu/IntercomButton.js","utils/utils.js","utils/hooks.js","assets/svg/Clear.js","components/form/SearchDropdown.js","components/form/ViaSearchDropdowns.js","components/form/SearchDropdowns.js","components/form/WeightClassSelect.js","components/form/WeightClassOption.js","components/form/DropdownSelect.js","components/common/Toggle.js","assets/svg/loading.svg","components/common/Icon.js","assets/svg/Car.js","assets/svg/Truck.js","components/form/VehicleOptions.js","components/common/Submit.js","components/form/Form.js","assets/svg/expand.svg","components/common/ExpansionPanel.js","components/menu/Header.js","components/result/RouteInfo.js","components/print/PrintDocument.js","assets/svg/Exit.js","components/print/PrintView.js","components/print/PrintModal.js","assets/svg/print.svg","components/print/Print.js","components/result/ChargePoint.js","components/result/RouteDetails.js","components/result/RouteSummary.js","components/result/ResultOptions.js","components/result/RouteResult.js","components/result/Result.js","components/menu/Footer.js","components/menu/Menu.js","config/mapStyle.js","components/map/MapContainer.js","components/map/MapMarker.js","components/map/InfoBox.js","components/map/MapStation.js","components/map/MapComponent.js","components/menu/LimitReached.js","components/menu/OverloadedDialog.js","App.js","index.js","redux/reducers/overloadedReducer.js","redux/rootReducer.js","redux/reducers/autoCompleteReducer.js","redux/reducers/formDataReducer.js","redux/reducers/submittedFormDataReducer.js","redux/reducers/resultOptionsReducer.js","redux/reducers/tollStationsReducer.js","redux/reducers/resultReducer.js","redux/reducers/vehicleOptionsReducer.js","redux/reducers/geolocationReducer.js","redux/reducers/monthlyLimitReducer.js","redux/configureStore.prod.js","redux/actions/overloadedActions.js","redux/actions/monthlyLimitActions.js"],"names":["SET_TOLLSTATIONS","SET_VISIBLETOLLSTATIONS","getTollStations","_ref","Object","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_home_vsts_work_1_s_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","dispatch","wrap","_context","prev","next","abrupt","fetch","getTollStationsURL","method","headers","Ocp-Apim-Subscription-Key","then","result","json","stations","map","station","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__","Visible","type","stop","_x","apply","this","arguments","setVisibileTollStations","__webpack_require__","d","__webpack_exports__","SET_AUTOPASS","SET_RUSHTID","setAutopass","setRushtid","payload","isDev","process","STATIC_URL","sizes","SMALL","MEDIUM","LARGE","HUGE","GIGANTIC","IGNORE","iconSizes","_iconSizes","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__","SET_SUBMITTEDFORMDATA","setSubmittedFormData","SET_VEHICLEOPTIONS","getVehicleOptions","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__","getState","_getState","formData","getVehicleOptionsURL","status","setOverloaded","ok","weightClass","setWeightClass","Vektverdier","find","el","Defaultverdi","smallVehicleType","setSmallVehicleType","Litenbilverdier","bigVehicleType","setBigVehicleType","Storbilverdier","vehicleOptions","_x2","SET_GEOLOCATION","setGeolocation","location","default","pos","lat","lng","zoom","nord","oslo","kristiansand","porsgrunn","stavanger","haugesund","bergen","trondheim","bodø","harstad","førde","SET_FROM","SET_TO","ADD_VIA","REMOVE_VIA","SET_WEIGHTCLASS","SET_SMALLVEHICLETYPE","SET_BIGVEHICLETYPE","SET_ROUNDTRIP","SET_FORMDATA","setFrom","setTo","addVia","removeVia","setRoundTrip","setFormData","submitForm","_resultActions__WEBPACK_IMPORTED_MODULE_0__","_submittedFormDataActions__WEBPACK_IMPORTED_MODULE_1__","history","length","undefined","replace","concat","btoa","JSON","stringify","getResult","module","exports","require","SELECT_ROUTE","SET_RESULT","SET_RESULT_LOADING","selectRoute","setResultLoading","setResult","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__","_getState$monthlyLimi","limit","monthlyCount","request","monthlyLimit","Fra","from","Til","to","Vialiste","via","Dato_yyyymmdd","Tidspunkt_hhmm","Bilsize","Idx","Litenbiltype","Storbiltype","Billengdeunder","Retur","roundTrip","Tidsreferanser","setMonthlyLimitReached","getResultURL","body","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__","Tur","route","index","listPolylinePointsEncoded","rest","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__","Selected","Path","encodedPolyline","polylineDecoder","decode","point","reduce","acc","val","addMonthlyCount","AvgiftsPunkter","mapApiKey","getGooglePlacesURL","_constants__WEBPACK_IMPORTED_MODULE_0__","data","vehicleOptionsCookie","cookies","Cookies","getWeightClass","vehicleoptions","get","vehiclesize","setWeightClassCookie","size","set","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__","path","getSmallVehicleType","smallvehicletype","setSmallVehicleTypeCookie","getBigVehicleType","bigvehicletype","setBigVehicleTypeCookie","getMonthlyCountCookie","c","m","parseInt","setMonthlyCountCookie","count","month","Date","getMonth","SET_AUTOCOMPLETE","RESET_AUTOCOMPLETE","setAutoComplete","id","resetAutoComplete","getAutoComplete","response","autoCompleteData","sent","t0","console","log","Boolean","window","hostname","match","useStyles","createUseStyles","theme","button","color","colorPrimary","backgroundColor","border","borderColor","borderRadius","padding","margin","position","top","right","zIndex","&:hover","cursor","Button","classes","react_default","createElement","className","getMax","array","len","max","Infinity","getMin","min","submitValidate","prevFormData","keys","every","key","isVehicleType","toll","Id","Vehicle_type_id","findToll","rushtid","Country","Avgifter","Navn","includes","Feetype_id","Rushperiod_id","Size_type_id","sumToll","autopass","extraFB","t","PrisRabbattert","Pris","formatPrice","price","toFixed","toString","durationShort","duration","hours","Math","trunc","minutes","lowerFirstLetter","string","charAt","toLowerCase","slice","openIntercomWithMsg","msg","Intercom","useSearch","search","_useState","useState","_useState2","slicedToArray","searchText","setSearchText","_useState3","_useState4","debouncer","setDebouncer","_useState5","_useState6","setHasSearched","doSearch","trim","useEffect","clearTimeout","setTimeout","Clear","fill","height","width","xmlns","viewBox","defaultProps","withStyles","icon","userSelect","selectStyles","control","provided","state","objectSpread","boxShadow","selectProps","error","colors","danger","fontSize","maxWidth","menu","display","options","marginTop","option","neutral20","isSelected","primary50","isFocused","primary25","indicatorsContainer","noOptionsMessage","singleValue","input","overflow","whiteSpace","textOverflow","& div","Input","props","chunk_5d200a41_browser_esm","assign","isHidden","SearchDropdown","autoComplete","setError","iconOnClick","value","setValue","setRef","placeholder","_useSearch","_useSearch2","_useAutoCompleteCooki","_useCookies","useCookies","_useCookies2","setCookie","inputStates","useSelector","toConsumableArray","autocomplete","_autoCompleteData","elements","filter","elem","some","inputElem","inputId","push","newArr","findIndex","times","sort","x","y","useAutoCompleteCookies","_useAutoCompleteCooki2","addCookie","setIsFocused","hasContent","setHasContent","setIsSelected","_useState7","_useState8","inputValue","setInputValue","selectRef","useRef","useTheme","label","Name","root","ref","react_select_browser_esm","components","onInputChange","inputVal","action","onChange","onFocus","onBlur","onKeyDown","evt","preventDefault","shiftKey","target","selectionStart","setSelectionRange","selectionEnd","isSearchable","styles","selectTheme","primary","colorText","neutral30","colorWarning","placeholderFocused","placeholderSelected","placeholderWarning","onClick","e","svg_Clear","transition","backgroundPrimary","left","lineHeight","pointerEvents","outline","addViaRow","justifyContent","addViaButton","background","ViaSearchDropdowns","onAddVia","onRemoveVia","viaDropdowns","setViaDropdowns","focusVia","newVia","v","i","visible","current","focus","handleRemoveVia","viaDropdownList","form_SearchDropdown","tabIndex","SearchDropdowns","fromError","setFromError","toError","setToError","submit","useDispatch","_useSelector","Fragment","form_ViaSearchDropdowns","WeightClassContext","createContext","flex","alignItems","WeightClassSelect","children","selected","selectedOption","selectOption","Provider","flexGrow","WeightClassOption","_useContext","useContext","borderBottom","valueContainer","DropdownSelect","setSelected","selectOptions","defaultValue","inline","&:focus","body_on","body_off","toggle","toggle_on","toggle_off","label_on","label_off","Toggle","onToggle","toggled","setFocus","role","symbol","browser_symbol_default","use","content","loading","browser_sprite_build_default","add","_createUseStyles","svg","defineProperty","Icon","svgObject","title","iconRef","style","svgClasses","classnames","xlinkHref","Car","version","xmlnsXlink","stroke","strokeWidth","strokeLinecap","strokeLinejoin","loader","VehicleOptions","form_WeightClassSelect","colorGray","hover","form_WeightClassOption","svg_Car","Truck","form_DropdownSelect","common_Toggle","common_Icon","Loading","fontFamily","fontWeight","defaultBorder","Submit","validate","active","setActive","onMouseEnter","disabled","withRouter","submittedFormData","params","formDataStringFromURL","atob","parse","handleSubmit","form_SearchDropdowns","form_VehicleOptions","common_Submit","expand_symbol","expand","borderLeft","notSelected","summary","appearance","details","expanded","iconContainer","float","flexShrink","iconExpanded","transform","iconDir","ExpansionPanel","animationSpeed","getExpanded","isExpanded","setIsExpanded","isInitialMount","detailsElem","collapsePanel","parentNode","requestAnimationFrame","offsetHeight","expandPanel","addEventListener","removeEventListener","ExpandIcon","textAlign","textDecoration","link","Header","href","bold","span","RouteInfo","distance","split","document","page","boxSizing","@media(min-width: 60rem)","sqrt","row","trip","paddingBottom","borderTop","&:(last-child)","secondPage","PrintDocument","setOverflow","pageNumber","PrintContext","tur","retur","turSum","returSum","totalSum","totalDistance","totalDuration","resultOptions","pageRef","scrollHeight","returStations","turStations","result_RouteInfo","TidNice","DistanseNice","durationLong","date","currentDate","getDate","getFullYear","menu_Header","Exit","container","exitButton","bottom","printButton","pageSwitch","pageSwitchButton","PrintView","onExit","setPageNumber","handleClick","print_PrintDocument","svg_Exit","lib_default","trigger","PrintModal","react_aria_modal_default","titleText","focusDialog","print_PrintView","print_symbol","print","Print","setVisible","PrintIcon","print_PrintModal","&:not(:last-child)","&:before","name","star","timesregel","ChargePoint","bp","rushIndex","Rushstart","discountedPrice","avgift","TimesregelNavn","isToll","rushtime","common_ExpansionPanel","verticalPadding","PrisRabbatertNice","PrisNice","Timesregel","marginLeft","LNullutslipprabatt","SNullutslipprabatt","Autopassrabatt","divider","noStations","RouteDetails","roundtripChargePoints","tripSum","roundtripSum","chargePoints","result_ChargePoint","Latitude","Longitude","react","info","textColor","RouteSummary","ResultOptions","overflowY","&:last-child","isIE11","notExpanded","RouteResult","totalPriceFormated","round","Meters","Seconds","result_RouteSummary","result_RouteDetails","result_ResultOptions","print_Print","flexFlow","wrapper","maxHeight","Result","result_RouteResult","navMenu","& a","@media(max-width: 60rem)","terms","colorInactive","Footer","minHeight","MainMenu","resultLoading","form_Form","result_Result","menu_Footer","mapStyle","featureType","elementType","stylers","visibility","saturation","lightness","MapContainer","React","memo","compose","withProps","googleMapURL","loadingElement","containerElement","mapElement","withScriptjs","withGoogleMap","markers","routes","bounds","getRef","mapRef","fitBounds","react_google_maps_lib","center","disableDefaultUI","zoomControl","bomstasjon","url","scaledSize","ferge","MarkerComponent","defaultPosition","Number","opacity","minWidth","fadeIn","header","marginBottom","road","lastRow","paddingLeft","listStyleType","listStylePosition","InfoBoxComponent","infoBoxRef","fade","setFade","reportErrorButton","vehicleName","rushPeriod","rushToll","InfoBox","google","maps","LatLng","closeBoxURL","disableAutoPan","pane","enableEventPropagation","pixelOffset","Size","onDomReady","onTransitionEnd","Vegnr","Informasjon","MapStation","infoBoxVisible","setInfoBoxVisible","MapMarker","map_InfoBox","polylineOptions","clickable","strokeColor","strokeWeight","alternative","colorGrey","strokeOpacity","setBounds","setMapRef","geolocation","tollStations","latValues","latlng","lngValues","sw","ne","LatLngBounds","getBounds","_unused","tollMarkers","map_MapStation","map_MapContainer","dialog","LimitReached","OverloadedDialog","colorSelected","navigator","userAgent","indexOf","@global","html","WebkitFontSmoothing","MozOsxFontSmoothing","App","limitReached","initMonthlyCount","useMonthlyLimit","overloaded","react_jss_esm","Menu","react_responsive_default","query","IntercomButton","map_MapComponent","menu_LimitReached","menu_OverloadedDialog","store","configureStore","createBrowserHistory","ReactDOM","render","es","es6","react_router","exact","component","getElementById","serviceWorker","ready","registration","unregister","initState","rootReducer","combineReducers","newState","_vehicleOptionsCookie","initialState","positionConfig","SET_MONTHLY_COUNT","SET_MONTHLY_LIMIT_REACHED","SET_OVERLOADED","createStore","applyMiddleware","thunkMiddleware","setMonthlyCount","_getMonthlyCountCooki","_getMonthlyCountCooki2","currentMonth","_home_vsts_work_1_s_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__","_ref2","_callee2","_getMonthlyCountCooki3","_getMonthlyCountCooki4","_context2","_x3"],"mappings":"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","file":"static/js/main.ad897d24.chunk.js","sourcesContent":["import {getTollStationsURL} from \"../../config/apiConfig\";\n\nexport const SET_TOLLSTATIONS = \"SET_TOLLSTATIONS\";\nexport const GET_TOLLSTATIONS = \"GET_TOLLSTATIONS\";\nexport const SET_VISIBLETOLLSTATIONS = \"SET_VISIBLETOLLSTATIONS\";\n\nexport const setTollStations = stations => {\n return {\n type: SET_TOLLSTATIONS,\n stations\n };\n};\n\nexport const getTollStations = () => {\n return async dispatch => {\n return fetch(getTollStationsURL, {\n method: \"GET\",\n headers: {\n \"Ocp-Apim-Subscription-Key\": \"5896465cf03d4dd8ac065e1d2a6f2556\"\n }\n })\n .then(result => {\n return result.json();\n })\n .then(result => {\n dispatch(\n setTollStations(\n result.map(station => ({\n ...station,\n Visible: true\n }))\n )\n );\n });\n };\n};\n\nexport const setVisibileTollStations = stations => {\n return {\n type: SET_VISIBLETOLLSTATIONS,\n stations\n };\n};\n","export const SET_AUTOPASS = \"SET_AUTOPASS\";\nexport const SET_RUSHTID = \"SET_RUSHTID\";\n\nexport const setAutopass = payload => {\n return {\n type: SET_AUTOPASS,\n payload\n };\n};\n\nexport const setRushtid = payload => {\n return {\n type: SET_RUSHTID,\n payload\n };\n};","export const isDev = !process.env.NODE_ENV || process.env.NODE_ENV === \"development\";\nexport const STATIC_URL = \"/static/media/\"\n\nexport const sizes = {\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n HUGE: \"HUGE\",\n GIGANTIC: \"GIGANTIC\",\n IGNORE: \"IGNORE\"\n};\n\nexport const iconSizes = {\n [sizes.SMALL]: \"15px\",\n [sizes.MEDIUM]: \"20px\",\n [sizes.LARGE]: \"25px\",\n [sizes.HUGE]: \"40px\",\n [sizes.GIGANTIC]: \"100rem\"\n};","export const SET_SUBMITTEDFORMDATA = \"SET_SUBMITTEDFORMDATA\";\n\nexport const setSubmittedFormData = payload => {\n return {\n type: SET_SUBMITTEDFORMDATA,\n payload\n };\n};","import {getVehicleOptionsURL} from \"../../config/apiConfig\";\nimport {setWeightClass, setSmallVehicleType, setBigVehicleType} from \"./formDataActions\";\nimport {setOverloaded} from \"./overloadedActions\";\n\nexport const SET_VEHICLEOPTIONS = \"SET_VEHICLEOPTIONS\";\n\nexport const setVehicleOptions = vehicleOptions => {\n return {\n type: SET_VEHICLEOPTIONS,\n vehicleOptions\n };\n};\n\nexport const getVehicleOptions = () => {\n return async (dispatch, getState) => {\n const {formData} = getState();\n return fetch(getVehicleOptionsURL, {\n method: \"GET\",\n headers: {\n \"Ocp-Apim-Subscription-Key\": \"5896465cf03d4dd8ac065e1d2a6f2556\"\n }\n })\n .then(result => {\n if (result.status === 429) {\n dispatch(setOverloaded(true));\n return null;\n }\n if (result.ok) {\n return result.json();\n }\n return null;\n })\n .then(result => {\n if (!formData.weightClass) {\n dispatch(\n setWeightClass(\n result.Vektverdier.find(\n el => el.Defaultverdi === \"1\"\n )\n )\n );\n }\n if (!formData.smallVehicleType) {\n dispatch(\n setSmallVehicleType(\n result.Litenbilverdier.find(\n el => el.Defaultverdi === \"1\"\n )\n )\n );\n }\n if (!formData.bigVehicleType) {\n dispatch(\n setBigVehicleType(\n result.Storbilverdier.find(\n el => el.Defaultverdi === \"1\"\n )\n )\n );\n }\n dispatch(setVehicleOptions(result));\n });\n };\n};\n","export const SET_GEOLOCATION = \"SET_GEOLOCATION\";\n\nexport const setGeolocation = location => {\n return {\n type: SET_GEOLOCATION,\n location\n };\n};\n\nexport const getGeolocation = () => {\n return dispatch => {\n navigator.geolocation.getCurrentPosition(position => {\n dispatch(\n setGeolocation({\n pos: {\n lat: position.coords.latitude,\n lng: position.coords.longitude\n },\n zoom: 12\n })\n );\n });\n };\n};\n","export default {\n \"default\":{pos: {lat: 61, lng: 9}, zoom: 7},\n \"nord\":{pos: {lat: 69.27, lng: 20.26}, zoom: 7},\n \"oslo\": {pos: {lat: 59.90, lng: 10.76}, zoom: 12},\n \"kristiansand\": {pos: {lat: 58.16, lng: 8.01}, zoom: 14},\n \"porsgrunn\": {pos: {lat: 59.14, lng: 9.65}, zoom: 12},\n \"stavanger\": {pos: {lat: 58.93, lng: 5.74}, zoom: 12},\n \"haugesund\": {pos: {lat: 59.41, lng: 5.27}, zoom: 13},\n \"bergen\": {pos: {lat: 60.39, lng: 5.32}, zoom: 12},\n \"trondheim\": {pos: {lat: 63.41, lng: 10.43}, zoom: 12},\n \"bodø\": {pos: {lat: 67.28, lng: 14.41}, zoom: 13},\n \"harstad\": {pos: {lat: 68.79, lng: 16.54}, zoom: 13},\n \"førde\": {pos: {lat: 61.45, lng: 5.85}, zoom: 13}\n}","import {getResult} from \"./resultActions\";\nimport {setSubmittedFormData} from \"./submittedFormDataActions\";\n\nexport const SET_FROM = \"SET_FROM\";\nexport const SET_TO = \"SET_TO\";\nexport const ADD_VIA = \"ADD_VIA\";\nexport const REMOVE_VIA = \"REMOVE_VIA\";\nexport const SET_WEIGHTCLASS = \"SET_WEIGHTCLASS\";\nexport const SET_SMALLVEHICLETYPE = \"SET_SMALLVEHICLETYPE\";\nexport const SET_BIGVEHICLETYPE = \"SET_BIGVEHICLETYPE\";\nexport const SET_ROUNDTRIP = \"SET_ROUNDTRIP\";\nexport const SET_FORMDATA = \"SET_FORMDATA\";\n\nexport const setFrom = payload => {\n return {\n type: SET_FROM,\n payload\n };\n};\n\nexport const setTo = payload => {\n return {\n type: SET_TO,\n payload\n };\n};\n\nexport const addVia = payload => {\n return {\n type: ADD_VIA,\n payload\n };\n};\n\nexport const removeVia = payload => {\n return {\n type: REMOVE_VIA,\n payload\n };\n};\n\nexport const setWeightClass = payload => {\n return {\n type: SET_WEIGHTCLASS,\n payload\n };\n};\n\nexport const setSmallVehicleType = payload => {\n return {\n type: SET_SMALLVEHICLETYPE,\n payload\n };\n};\n\nexport const setBigVehicleType = payload => {\n return {\n type: SET_BIGVEHICLETYPE,\n payload\n };\n};\n\nexport const setRoundTrip = payload => {\n return {\n type: SET_ROUNDTRIP,\n payload\n };\n};\n\nexport const setFormData = (payload) => {\n return {\n type: SET_FORMDATA,\n payload\n }\n}\n\nexport const submitForm = (history = null) => {\n return (dispatch, getState) => {\n const {formData} = getState();\n if (history) {\n history.replace(`/rute/${btoa(JSON.stringify(formData))}`);\n }\n dispatch(setSubmittedFormData(formData));\n dispatch(getResult());\n };\n};","/* eslint-disable global-require */\nif (process.env.NODE_ENV === \"production\") {\n module.exports = require(\"./configureStore.prod\");\n} else {\n module.exports = require(\"./configureStore.dev\");\n}","import polylineDecoder from \"@mapbox/polyline\";\nimport {getResultURL} from \"../../config/apiConfig\";\nimport {addMonthlyCount, setMonthlyLimitReached} from \"./monthlyLimitActions\";\nimport {setOverloaded} from \"./overloadedActions\";\nimport {setVisibileTollStations} from \"./tollStationsActions\";\n\nexport const SELECT_ROUTE = \"SELECT_ROUTE\";\nexport const SET_RESULT = \"SET_RESULT\";\nexport const SET_RESULT_LOADING = \"SET_RESULT_LOADING\";\n\nexport const selectRoute = payload => {\n return {\n type: SELECT_ROUTE,\n payload\n };\n};\n\nexport const setResultLoading = payload => {\n return {\n type: SET_RESULT_LOADING,\n payload\n };\n};\n\nexport const setResult = payload => {\n return {\n type: SET_RESULT,\n payload\n };\n};\n\nexport const getResult = () => {\n return async (dispatch, getState) => {\n const {\n formData,\n monthlyLimit: {limit, monthlyCount}\n } = getState();\n\n const request = {\n Fra: formData.from,\n Til: formData.to,\n Vialiste: formData.via,\n Dato_yyyymmdd: \"\",\n Tidspunkt_hhmm: \"\",\n Bilsize: formData.weightClass.Idx,\n Litenbiltype:\n formData.weightClass.Idx === \"1\"\n ? formData.smallVehicleType.Idx\n : \"0\",\n Storbiltype:\n formData.weightClass.Idx === \"2\"\n ? formData.bigVehicleType.Idx\n : \"0\",\n Billengdeunder: formData.weightClass.Idx === \"1\" ? \"5\" : \"9\",\n Retur: formData.roundTrip,\n Tidsreferanser: \"0\"\n };\n\n if (monthlyCount >= limit) {\n dispatch(setMonthlyLimitReached());\n return null;\n }\n\n dispatch(setResultLoading(true));\n\n return fetch(getResultURL, {\n method: \"POST\",\n headers: {\n \"Ocp-Apim-Subscription-Key\": \"5896465cf03d4dd8ac065e1d2a6f2556\"\n },\n body: JSON.stringify(request)\n })\n .then(result => {\n if (result.status === 429) {\n dispatch(setOverloaded(true));\n return null;\n }\n return result.json();\n })\n .then(json => {\n return {\n ...json,\n Tur: json.Tur.map((route, index) => {\n const {listPolylinePointsEncoded, ...rest} = route;\n return {\n ...rest,\n Selected: index === 0,\n Path: route.listPolylinePointsEncoded\n .map(encodedPolyline => {\n return polylineDecoder\n .decode(encodedPolyline)\n .map(point => ({\n lat: point[0],\n lng: point[1]\n }));\n })\n .reduce((acc, val) => acc.concat(val), [])\n };\n })\n };\n })\n .then(payload => {\n dispatch(addMonthlyCount());\n dispatch(setResultLoading(false));\n dispatch(setResult(payload));\n dispatch(\n setVisibileTollStations(\n payload.Tur.map(route => {\n return route.AvgiftsPunkter;\n }).reduce((acc, val) => acc.concat(val), [])\n )\n );\n });\n };\n};\n","import {isDev} from \"./constants\";\n\nexport const mapApiKey = \"AIzaSyAdB55iuvy-d9Z0yEKfdSrXRKA8gjt7vxg\";\n\nexport const getResultURL = isDev\n ? \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/findRouteDescriptions\"\n : \"https://dibkunnskapapi.azure-api.net/api/bomstasjoner/findRouteDescriptions\";\n\nexport const getTollStationsURL = isDev\n ? \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/GetBomstasjoner\"\n : \"https://dibkunnskapapi.azure-api.net/api/bomstasjoner/GetBomstasjoner\";\n\nexport const getVehicleOptionsURL = isDev\n ? \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/GetGuidata\"\n : \"https://dibkunnskapapi.azure-api.net/api/bomstasjoner/GetGuidata\";\n\nexport const getGooglePlacesURL = data => {\n return isDev\n ? `https://bompengeapiet-test.azurewebsites.net/api/Address/GetGooglePlaces/${data}/false`\n : `https://dibkunnskapapi.azure-api.net/api/Address/GetGooglePlaces/${data}/false`;\n};\n\n/* export const getResultURL =\n \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/findRouteDescriptions\";\nexport const getTollStationsURL =\n \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/GetBomstasjoner\";\nexport const getVehicleOptionsURL =\n \"https://bompengeapiet-test.azurewebsites.net/api/bomstasjoner/GetGuidata\";\nexport const getGooglePlacesURL = data => {\n return `https://bompengeapiet-test.azurewebsites.net/api/Address/GetGooglePlaces/${data}/false`;\n}; */\n","import Cookies from \"universal-cookie\";\n\nexport const vehicleOptionsCookie = () => {\n const cookies = new Cookies();\n\n const getWeightClass = () => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n if (vehicleoptions && vehicleoptions.vehiclesize) {\n return vehicleoptions.vehiclesize;\n }\n return null;\n };\n\n const setWeightClassCookie = size => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n cookies.set(\n \"vehicleoptions\",\n {...vehicleoptions, vehiclesize: size},\n {path: \"/\"}\n );\n };\n\n const getSmallVehicleType = () => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n if (vehicleoptions && vehicleoptions.smallvehicletype) {\n return vehicleoptions.smallvehicletype;\n }\n return null;\n };\n\n const setSmallVehicleTypeCookie = type => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n cookies.set(\n \"vehicleoptions\",\n {...vehicleoptions, smallvehicletype: type},\n {path: \"/\"}\n );\n };\n\n const getBigVehicleType = () => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n if (vehicleoptions && vehicleoptions.bigvehicletype) {\n return vehicleoptions.bigvehicletype;\n }\n return null;\n };\n\n const setBigVehicleTypeCookie = type => {\n const vehicleoptions = cookies.get(\"vehicleoptions\");\n cookies.set(\n \"vehicleoptions\",\n {...vehicleoptions, bigvehicletype: type},\n {path: \"/\"}\n );\n };\n\n return {\n getWeightClass,\n setWeightClassCookie,\n getSmallVehicleType,\n setSmallVehicleTypeCookie,\n getBigVehicleType,\n setBigVehicleTypeCookie\n };\n};\n\nexport const getMonthlyCountCookie = () => {\n const cookies = new Cookies();\n const c = cookies.get(\"count\");\n const m = cookies.get(\"month\");\n const count = c ? parseInt(c) : 1; // eslint-disable-line\n const month = m ? parseInt(m) : -1; // eslint-disable-line\n\n return [count, month];\n};\n\nexport const setMonthlyCountCookie = count => {\n const cookies = new Cookies();\n const date = new Date();\n const month = date.getMonth();\n cookies.set(\"count\", count, {path: \"/\"});\n cookies.set(\"month\", month, {path: \"/\"});\n};\n","import {getGooglePlacesURL} from \"../../config/apiConfig\";\n\nexport const SET_AUTOCOMPLETE = \"SET_AUTOCOMPLETE\";\nexport const RESET_AUTOCOMPLETE = \"RESET_AUTOCOMPLETE\";\n\nexport const setAutoComplete = (data, id) => {\n return {\n type: SET_AUTOCOMPLETE,\n payload: {data, id}\n };\n};\n\nexport const resetAutoComplete = id => {\n return {\n type: RESET_AUTOCOMPLETE,\n payload: {id}\n };\n};\n\nexport const getAutoComplete = (data, id) => {\n return async dispatch => {\n try {\n const response = await fetch(getGooglePlacesURL(data), {\n method: \"GET\",\n headers: {\n \"Ocp-Apim-Subscription-Key\": \"5896465cf03d4dd8ac065e1d2a6f2556\"\n }\n });\n const autoCompleteData = await response.json();\n dispatch(setAutoComplete(autoCompleteData, id));\n }\n catch (event) {\n // TODO ADD ERROR HANDLING\n // eslint-disable-next-line\n console.log(\"Error: \", event);\n }\n };\n};","/* eslint-disable */\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.1/8 is 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\nexport function register(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(process.env.PUBLIC_URL, window.location.href);\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, 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, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\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 React from \"react\";\nimport {createUseStyles} from \"react-jss\";\n/* import {openIntercom} from \"../../utils/utils\"; */\n\nconst useStyles = createUseStyles(theme => ({\n button: {\n color: theme.colorPrimary,\n backgroundColor: \"white\",\n border: \"1px solid\",\n borderColor: theme.colorPrimary,\n borderRadius: theme.borderRadius,\n padding: \"0.4rem 0.6rem\",\n margin: \"1rem\",\n position: \"fixed\",\n top: \"0\",\n right: \"0\",\n zIndex: \"5\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n}));\n\nconst Button = () => {\n const classes = useStyles();\n return (\n openIntercom()} */\n >\n Tilbakemelding\n \n );\n};\n\nexport default Button;\n","export const getMax = array => {\n let len = array.length;\n let max = -Infinity;\n // eslint-disable-next-line\n while (len--) {\n max = array[len] > max ? array[len] : max;\n }\n return max;\n};\n\nexport const getMin = array => {\n let len = array.length;\n let min = Infinity;\n // eslint-disable-next-line\n while (len--) {\n min = array[len] < min ? array[len] : min;\n }\n return min;\n};\n\n// Gets the bounds(south west and north east point) for the given path\nexport const getBounds = path => {\n const latValues = path.map(latlng => latlng.lat);\n const lngValues = path.map(latlng => latlng.lng);\n const sw = {lat: getMin(latValues), lng: getMin(lngValues)};\n const ne = {lat: getMax(latValues), lng: getMax(lngValues)};\n return new window.google.maps.LatLngBounds(sw, ne);\n};\n\n// Check if form data has changed since last submit by comparing current data and previous data\nexport const submitValidate = (formData, prevFormData) => {\n return !Object.keys(formData).every(\n key => formData[key] === prevFormData[key]\n );\n};\n\n// Checks if the toll is for the correct vehicle selected\nexport const isVehicleType = (toll, formData) => {\n if (formData.weightClass) {\n if (formData.weightClass.Id === \"s\") {\n return (\n (toll.Vehicle_type_id === formData.weightClass.Id &&\n formData.bigVehicleType.Id !== \"snu\") ||\n toll.Vehicle_type_id === formData.bigVehicleType.Id ||\n (toll.Vehicle_type_id === \"\" &&\n formData.bigVehicleType.Id !== \"snu\")\n );\n }\n if (formData.weightClass.Id === \"l\") {\n return (\n (toll.Vehicle_type_id === formData.weightClass.Id &&\n formData.smallVehicleType.Id !== \"lnu\" &&\n formData.smallVehicleType.Id !== \"lhyd\") ||\n toll.Vehicle_type_id === formData.smallVehicleType.Id ||\n (toll.Vehicle_type_id === \"\" &&\n formData.smallVehicleType.Id !== \"lnu\" &&\n formData.smallVehicleType.Id !== \"lhyd\")\n );\n }\n return false;\n }\n return false;\n};\n\n// For stations with more than one toll, finds the correct toll for vehicle selected\nexport const findToll = (station, formData, rushtid) => {\n if (!station.Country || station.Country === \"Norge\") {\n if (station.Avgifter.length === 1) {\n if (isVehicleType(station.Avgifter[0], formData)) {\n return station.Avgifter[0];\n }\n return undefined;\n }\n if (station.Navn.includes(\"Ferje\") && station.Avgifter.length > 1) {\n if (formData.smallVehicleType.Id === \"lnu\") {\n return station.Avgifter.find(toll => {\n return toll.Vehicle_type_id === \"lnu\"\n });\n }\n return station.Avgifter.find(toll => {\n return toll.Feetype_id === \"bp\" && toll.Vehicle_type_id !== \"mc\";\n });\n }\n if (station.Avgifter.length > 1) {\n return station.Avgifter.find(toll => {\n if (toll.Feetype_id === \"bp\" && isVehicleType(toll, formData)) {\n if (formData.weightClass.Id === \"l\") {\n return rushtid\n ? toll.Rushperiod_id !== \"\" &&\n (toll.Size_type_id === \"0-6\" ||\n toll.Size_type_id === \"\")\n : toll.Rushperiod_id === \"\" &&\n (toll.Size_type_id === \"0-6\" ||\n toll.Size_type_id === \"\");\n }\n if (formData.weightClass.Id === \"s\") {\n return rushtid\n ? toll.Rushperiod_id !== \"\" &&\n (toll.Size_type_id === \"8-10\" ||\n toll.Size_type_id === \"6.01-12.4\" ||\n toll.Size_type_id === \"\")\n : toll.Rushperiod_id === \"\" &&\n (toll.Size_type_id === \"8-10\" ||\n toll.Size_type_id === \"6.01-12.4\" ||\n toll.Size_type_id === \"\");\n }\n }\n if (toll.Feetype_id === \"fb\") {\n if (toll.Vehicle_type_id === formData.weightClass.Id) {\n return true;\n }\n if (formData.weightClass.Id === \"l\") {\n if (\n (formData.smallVehicleType.Id === \"lnu\" ||\n formData.smallVehicleType.Id === \"lhyd\") &&\n toll.Vehicle_type_id === \"lnu\"\n ) {\n return (\n toll.Size_type_id === \"0-6\" &&\n toll.Vehicle_type_id === \"lnu\"\n );\n }\n return (\n toll.Size_type_id === \"0-6\" &&\n toll.Vehicle_type_id === \"\"\n );\n }\n return toll.Size_type_id === \"8-10\";\n }\n return undefined;\n });\n }\n }\n return null;\n};\n\n// Sums the toll price for the stations and options provided\nexport const sumToll = (stations, vehicleOptions, rushtid, autopass) =>\n stations.reduce((acc, station) => {\n const toll = findToll(station, vehicleOptions, rushtid);\n let extraFB = null;\n if (station.Avgifter.length > 1) {\n extraFB = station.Avgifter.find(t => {\n return t.Feetype_id === \"fb\";\n });\n }\n return (\n acc +\n (extraFB ? (autopass ? extraFB.PrisRabbattert : extraFB.Pris) : 0) +\n (toll ? (autopass ? toll.PrisRabbattert : toll.Pris) : 0)\n );\n }, 0);\n\n// Converts the price to a string with 2 decimal points and , instead of .\nexport const formatPrice = price =>\n `kr. ${price\n .toFixed(2)\n .toString()\n .replace(\".\", \",\")}`;\n\nexport const durationLong = duration => {\n const hours = Math.trunc(duration / 60);\n const minutes = Math.trunc(duration % 60);\n return `${hours > 0 ? `${hours} timer` : \"\"} ${\n minutes > 0 ? `${minutes} min` : \"\"\n }`;\n};\n\nexport const durationShort = duration => {\n const hours = Math.trunc(duration / 60);\n const minutes = Math.trunc(duration % 60);\n return `${hours > 0 ? `${hours}t` : \"\"} ${\n minutes > 0 ? `${minutes}m` : \"\"\n }`;\n};\n\nexport const lowerFirstLetter = string => {\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\n\nexport const openIntercom = () => {\n if (window && window.Intercom) window.Intercom(\"show\");\n};\n\nexport const openIntercomWithMsg = msg => {\n if (window && window.Intercom) window.Intercom(\"showNewMessage\", msg);\n};\n","import {useState, useEffect} from \"react\";\nimport {useCookies} from \"react-cookie\";\nimport {useDispatch, useSelector} from \"react-redux\";\nimport {initMonthlyCount} from \"../redux/actions/monthlyLimitActions\";\n\nexport const useSearch = (search, id) => {\n const [searchText, setSearchText] = useState(\"\");\n const [debouncer, setDebouncer] = useState(null);\n const [hasSearched, setHasSearched] = useState(false);\n\n const shouldSearch = () => !!searchText;\n\n const doSearch = () => {\n if (searchText.length >= 3) {\n search(searchText.trim(), id);\n setHasSearched(true);\n } else {\n setDebouncer(null);\n }\n };\n\n const initializeSearch = () => {\n if (!hasSearched) {\n setDebouncer(setTimeout(doSearch, 500));\n } else {\n setDebouncer(setTimeout(doSearch, 500));\n }\n };\n\n useEffect(() => {\n clearTimeout(debouncer);\n\n if (shouldSearch()) {\n initializeSearch();\n }\n\n return () => {\n clearTimeout(debouncer);\n };\n }, [searchText]);\n\n return [searchText, setSearchText];\n};\n\nexport const useAutoCompleteCookies = (autoComplete, id) => {\n const [cookies, setCookie] = useCookies([\"autocomplete\"]);\n const inputStates = useSelector(state => [\n state.formData.from,\n state.formData.to,\n ...state.formData.via\n ]);\n let autoCompleteData = [...autoComplete];\n\n if (!cookies.autocomplete) {\n setCookie(\"autocomplete\", [], {path: \"/\"});\n }\n\n const elements =\n cookies.autocomplete &&\n cookies.autocomplete.filter(elem => {\n return inputStates.some(inputElem => {\n return id !== inputElem.inputId && elem.Id === inputElem.Id;\n });\n });\n\n if (\n cookies.autocomplete &&\n autoCompleteData.length === 0 &&\n cookies.autocomplete.length > 0\n ) {\n if (elements && elements.length > 0) {\n autoCompleteData = cookies.autocomplete.filter(\n el => !elements.includes(el)\n );\n } else {\n autoCompleteData.push(...cookies.autocomplete);\n }\n }\n\n const addCookie = val => {\n let index = -1;\n\n let newArr = [];\n if (cookies.autocomplete.length > 0) {\n index = cookies.autocomplete.findIndex(el => {\n return el.Id === val.Id;\n });\n newArr = [...cookies.autocomplete];\n }\n if (index !== -1) {\n newArr[index] = {\n ...val,\n times: newArr[index].times ? newArr[index].times + 1 : 1\n };\n } else {\n newArr.push({...val, times: 1});\n }\n setCookie(\n \"autocomplete\",\n newArr.sort((x, y) => y.times - x.times),\n {\n path: \"/\"\n }\n );\n };\n\n return [autoCompleteData, addCookie];\n};\n\nexport const useMonthlyLimit = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(initMonthlyCount());\n }, []);\n\n return useSelector(state => state.monthlyLimit.limitReached);\n};\n\nexport const useOverloaded = () => {\n return useSelector(state => state.overloaded.overloaded);\n};\n","import React from \"react\";\nimport withStyles from \"react-jss\";\nimport PropTypes from \"prop-types\";\n\nconst styles = {\n icon: {\n position: \"absolute\",\n top: \"0.8rem\",\n right: \"0.7rem\",\n userSelect: \"none\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n};\n\nconst Clear = ({fill, height, width}) => {\n\n return (\n \n \n \n \n );\n}\n\nClear.defaultProps = {\n fill: \"black\",\n height: \"22\",\n width: \"22\"\n}\n\nClear.propTypes = {\n fill: PropTypes.string,\n height: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n}\n\nexport default withStyles(styles)(Clear);","import React, {useState, useEffect, useRef} from \"react\";\nimport PropTypes from \"prop-types\";\nimport withStyles, {useTheme} from \"react-jss\";\nimport Select, {components} from \"react-select\";\nimport {useSearch, useAutoCompleteCookies} from \"../../utils/hooks\";\nimport ClearIcon from \"../../assets/svg/Clear\";\n\nconst styles = theme => ({\n root: {\n margin: \"0.8rem auto\",\n position: \"relative\"\n },\n placeholder: {\n transition: \"all 150ms ease\",\n position: \"absolute\",\n color: theme.colorText,\n backgroundColor: theme.backgroundPrimary,\n top: \"1.1rem\",\n left: \"0.4rem\",\n lineHeight: \"1rem\",\n padding: \"0rem 0.4rem\",\n fontSize: \"1.2rem\",\n pointerEvents: \"none\",\n userSelect: \"none\"\n },\n placeholderSelected: {\n top: \"-0.6rem\",\n fontSize: \"1.1rem\"\n },\n placeholderFocused: {\n top: \"-0.6rem\",\n fontSize: \"1.1rem\",\n color: theme.colorPrimary\n },\n placeholderWarning: {\n top: \"-0.6rem\",\n fontSize: \"1.1rem\",\n color: theme.colorWarning\n },\n button: {\n position: \"absolute\",\n right: \"0.7rem\",\n top: \"0.7rem\",\n padding: \"0\",\n backgroundColor: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n outline: \"none\"\n }\n});\n\nconst selectStyles = {\n control: (provided, state) => ({\n ...provided,\n boxShadow: state.selectProps.error\n ? `0 0 0 1px ${state.theme.colors.danger}`\n : provided.boxShadow,\n borderColor: state.selectProps.error\n ? state.theme.colors.danger\n : provided.borderColor,\n fontSize: \"1.2rem\",\n cursor: \"text\",\n maxWidth: \"100%\"\n }),\n menu: (provided, state) => ({\n ...provided,\n display: state.options.length === 0 ? \"none\" : \"block\",\n marginTop: \"1px\"\n\n }),\n option: (provided, state) => ({\n ...provided,\n color: state.theme.colors.neutral20,\n cursor: \"pointer\",\n backgroundColor: state.isSelected\n ? state.theme.colors.primary50\n : state.isFocused\n ? state.theme.colors.primary25\n : provided.backgroundColor,\n \"&:hover\": {\n backgroundColor: state.isSelected ? \"\" : provided.backgroundColor\n }\n }),\n indicatorsContainer: () => ({\n display: \"none\"\n }),\n noOptionsMessage: () => ({\n display: \"none\"\n }),\n singleValue: () => ({\n display: \"none\"\n }),\n input: provided => ({\n ...provided,\n width: \"25rem\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n \"& div\": {\n width: \"100%\"\n }\n })\n};\n\nconst Input = props => {\n return ;\n};\n\nconst SearchDropdown = props => {\n const {\n autoComplete,\n classes,\n error,\n setError,\n getAutoComplete,\n id,\n iconOnClick,\n value,\n setValue,\n setRef,\n resetAutoComplete,\n placeholder\n } = props;\n\n const [searchText, setSearchText] = useSearch(getAutoComplete, id);\n const [autoCompleteData, addCookie] = useAutoCompleteCookies(\n autoComplete,\n id\n );\n const [isFocused, setIsFocused] = useState(false);\n const [hasContent, setHasContent] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n const selectRef = useRef(0);\n const theme = useTheme();\n\n useEffect(() => {\n setInputValue(value);\n if (value.length > 0) {\n setHasContent(true);\n } else {\n setHasContent(false);\n }\n }, [value]);\n\n useEffect(() => {\n if (searchText.length < 1) {\n resetAutoComplete(id);\n setHasContent(false);\n } else {\n setHasContent(true);\n }\n }, [searchText]);\n\n const handleChange = val => {\n setInputValue(val.label);\n setIsSelected(true);\n setValue({Name: val.label, Id: val.value, inputId: id});\n addCookie({Name: val.label, Id: val.value});\n };\n const handleFocus = () => {\n if (setError) setError(false);\n setIsFocused(true);\n };\n const handleBlur = () => {\n if (setError) setError(false);\n setIsFocused(false);\n };\n\n const handleInputChange = (inputVal, action) => {\n if (action.action !== \"input-blur\" && action.action !== \"menu-close\") {\n setSearchText(inputVal);\n setInputValue(inputVal);\n }\n };\n\n const handleKeyDown = evt => { // eslint-disable-line\n switch (evt.key) {\n case \"Home\":\n evt.preventDefault();\n if (evt.shiftKey) evt.target.selectionStart = 0; // eslint-disable-line\n else evt.target.setSelectionRange(0, 0);\n break;\n case \"End\":\n evt.preventDefault();\n const len = evt.target.value.length; // eslint-disable-line\n if (evt.shiftKey) evt.target.selectionEnd = len; // eslint-disable-line\n else evt.target.setSelectionRange(len, len);\n break;\n default: break\n }\n };\n\n const options = autoCompleteData\n .map(el => ({\n value: el.Id,\n label: el.Name\n }))\n .slice(0, 5);\n\n return (\n
\n ({\n ...selectTheme,\n borderRadius: theme.borderRadius,\n colors: {\n ...selectTheme.colors,\n primary: theme.colorPrimary,\n primary25: \"rgba(4, 162, 176,0.1)\",\n primary50: \"rgba(4, 162, 176,0.2)\",\n neutral20: theme.colorText,\n neutral30: theme.colorText,\n danger: theme.colorWarning\n }\n })}\n />\n \n {placeholder}\n
\n {iconOnClick && (\n iconOnClick(e, id)}\n >\n \n \n )}\n \n );\n};\n\nSearchDropdown.defaultProps = {\n autoComplete: [],\n error: false,\n iconOnClick: null,\n placeholder: \"\",\n setError: null,\n setRef: null,\n value: \"\"\n};\n\nSearchDropdown.propTypes = {\n autoComplete: PropTypes.arrayOf(PropTypes.objectOf(PropTypes.string)),\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\n error: PropTypes.bool,\n getAutoComplete: PropTypes.func.isRequired,\n id: PropTypes.number.isRequired,\n iconOnClick: PropTypes.func,\n placeholder: PropTypes.string,\n resetAutoComplete: PropTypes.func.isRequired,\n value: PropTypes.string,\n setError: PropTypes.func,\n setValue: PropTypes.func.isRequired,\n setRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({current: PropTypes.instanceOf(Element)})\n ])\n};\n\nexport default withStyles(styles)(SearchDropdown);\n","import React, {useState, useEffect, useRef} from \"react\";\nimport {useSelector} from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport SearchDropdown from \"./SearchDropdown\";\n\n\nconst useStyles = createUseStyles(theme => ({\n addViaRow: {\n display: \"flex\",\n justifyContent: \"flex-end\"\n },\n addViaButton: {\n margin: \"-0.3rem 0.4rem\",\n padding: \"0\",\n cursor: \"pointer\",\n color: theme.colorPrimary,\n background: \"none\",\n border: \"none\",\n outline: \"none\"\n }\n}));\n\nconst ViaSearchDropdowns = props => {\n const {\n autoComplete,\n getAutoComplete,\n resetAutoComplete,\n onAddVia,\n onRemoveVia\n } = props;\n\n const via = useSelector(state => state.formData.via);\n\n const [viaDropdowns, setViaDropdowns] = useState([]);\n const classes = useStyles();\n const focusVia = useRef(null);\n\n useEffect(() => {\n if (via.length > 0) {\n const newVia = via.map((v, i) => ({id: i , key: `via${i }`, visible: true, value: v.Name}));\n setViaDropdowns(newVia)\n }\n }, [via])\n\n useEffect(() => {\n if (viaDropdowns.length > 0 && focusVia.current !== null) {\n focusVia.current.focus();\n }\n }, [viaDropdowns]);\n\n const addViaDropdown = () => {\n setViaDropdowns(\n viaDropdowns.concat({\n id: viaDropdowns.length,\n key: `via${viaDropdowns.length}`,\n visible: true\n })\n );\n };\n\n const handleRemoveVia = (e, id) => {\n setViaDropdowns(\n viaDropdowns.map(el => ({\n ...el,\n visible: el.visible && el.id !== id - 2\n }))\n );\n onRemoveVia(id);\n };\n\n const viaDropdownList = viaDropdowns\n .filter(el => el.visible)\n .map(el => (\n \n \n \n ));\n \n return (\n
\n {viaDropdownList}\n {viaDropdownList.length < 3 && (\n \n \n + Via\n \n \n )}\n
\n );\n};\n\nViaSearchDropdowns.propTypes = {\n autoComplete: PropTypes.objectOf(\n PropTypes.arrayOf(PropTypes.objectOf(PropTypes.string)),\n ).isRequired,\n getAutoComplete: PropTypes.func.isRequired,\n resetAutoComplete: PropTypes.func.isRequired,\n onAddVia: PropTypes.func.isRequired,\n onRemoveVia: PropTypes.func.isRequired\n};\n\nexport default ViaSearchDropdowns;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport SearchDropdown from \"./SearchDropdown\";\nimport ViaSearchDropdowns from \"./ViaSearchDropdowns\";\nimport {\n addVia,\n removeVia,\n setFrom,\n setTo\n} from \"../../redux/actions/formDataActions\";\n\nimport {getAutoComplete, resetAutoComplete} from \"../../redux/actions/autoCompleteActions\";\n\nconst SearchDropdowns = props => {\n const {fromError, setFromError, toError, setToError, submit} = props;\n const dispatch = useDispatch();\n const {autoComplete, from, to, via} = useSelector(state => ({\n autoComplete: state.autoComplete,\n from: state.formData.from.Name,\n to: state.formData.to.Name,\n via: state.formData.via\n }));\n\n return (\n <>\n dispatch(getAutoComplete(data, id))}\n error={fromError}\n setError={setFromError}\n placeholder=\"Fra\"\n id={0}\n value={from}\n setValue={val => dispatch(setFrom(val))}\n resetAutoComplete={id => dispatch(resetAutoComplete(id))}\n />\n dispatch(getAutoComplete(data, id))}\n onAddVia={val => dispatch(addVia(val))}\n onRemoveVia={id => dispatch(removeVia(id))}\n resetAutoComplete={id => dispatch(resetAutoComplete(id))}\n submit={submit}\n via={via}\n />\n dispatch(getAutoComplete(data, id))}\n error={toError}\n setError={setToError}\n placeholder=\"Til\"\n id={1}\n value={to}\n setValue={val => dispatch(setTo(val))}\n resetAutoComplete={id => dispatch(resetAutoComplete(id))}\n />\n \n );\n};\n\nSearchDropdowns.propTypes = {\n fromError: PropTypes.bool.isRequired,\n setFromError: PropTypes.func.isRequired,\n toError: PropTypes.bool.isRequired,\n setToError: PropTypes.func.isRequired,\n submit: PropTypes.func.isRequired\n}\n\nexport default SearchDropdowns;\n","import React, {useState, useEffect, useRef, createContext} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\n\nexport const WeightClassContext = createContext({});\n\nconst useStyles = createUseStyles({\n root: {\n flex: \"1\",\n display: \"flex\",\n alignItems: \"stretch\"\n }\n});\n\nconst WeightClassSelect = props => {\n const {\n children,\n selected,\n colors,\n onChange\n } = props;\n const classes = useStyles();\n const [selectedOption, selectOption] = useState(selected);\n const ref = useRef(false);\n\n useEffect(() => {\n if (ref.current) {\n if (onChange) onChange(selectedOption);\n } else {\n ref.current = true;\n }\n },[selectedOption])\n\n return (\n \n
\n {children}\n
\n
\n );\n}\n\nWeightClassSelect.defaultProps = {\n colors: {\n default: \"red\",\n selected: \"blue\"\n },\n onChange: () => {}\n}\n\nWeightClassSelect.propTypes = {\n children: PropTypes.node.isRequired,\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.objectOf(PropTypes.string)\n ]).isRequired,\n colors: PropTypes.objectOf(\n PropTypes.string\n ),\n onChange: PropTypes.func\n}\n\nexport default WeightClassSelect;","import React, {useContext} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport {WeightClassContext} from \"./WeightClassSelect\";\n\nconst useStyles = createUseStyles({\n option: {\n flexGrow: \"1\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n border: \"none\",\n background: \"none\",\n outline: \"none\",\n color: props => props.colors.default,\n \"&:hover\": {\n backgroundColor: \"rgba(4, 162, 176, 0.1)\",\n cursor: \"pointer\"\n }\n },\n selected: {\n color: props => props.colors.selected\n }\n});\n\nconst WeightClassOption = props => {\n const {children, value} = props;\n const {\n selectedOption,\n selectOption,\n colors\n } = useContext(WeightClassContext);\n const classes = useStyles({...props, colors});\n const isSelected = value === selectedOption\n \n return (\n selectOption(value)}\n >\n {children}\n \n );\n};\n\nWeightClassOption.propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.objectOf(PropTypes.string).isRequired\n};\n\nexport default WeightClassOption;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Select from \"react-select\";\nimport {createUseStyles, useTheme} from \"react-jss\";\n\nconst useStyles = createUseStyles({\n root: {\n width: \"10rem\",\n margin: \"0 1.6rem\"\n }\n});\n\nconst selectStyles = {\n control: (provided, state) => ({\n ...provided,\n border: \"none\",\n borderBottom: \"1px solid gray\",\n borderRadius: \"0\",\n boxShadow: \"none\",\n color: state.theme.colors.neutral20,\n fontSize: \"1.2rem\",\n cursor: \"pointer\",\n padding: \"0 0.2rem\",\n backgroundColor: state.isFocused\n ? state.theme.colors.primary25\n : provided.backgroundColor\n }),\n menu: provided => ({\n ...provided,\n marginTop: \"1px\"\n }),\n option: (provided, state) => ({\n ...provided,\n color: state.theme.colors.neutral20,\n cursor: \"pointer\",\n backgroundColor: state.isSelected\n ? state.theme.colors.primary50\n : state.isFocused\n ? state.theme.colors.primary25\n : provided.backgroundColor,\n \"&:hover\": {\n backgroundColor: state.isSelected ? \"\" : provided.backgroundColor\n }\n }),\n indicatorsContainer: () => ({\n border: \"none\"\n }),\n valueContainer: () => ({\n padding: \"0\"\n })\n};\n\nconst DropdownSelect = props => {\n const {options, setSelected, selected} = props;\n const classes = useStyles();\n const theme = useTheme();\n \n const handleChange = (option) => {\n setSelected(options.find(el => el.Id === option.value));\n }\n\n const selectOptions = options.map(el => ({\n value: el.Id,\n label: el.Navn\n })).slice(0, 5);\n\n return (\n
\n ({\n ...selectTheme,\n borderRadius: theme.borderRadius,\n colors: {\n ...selectTheme.colors,\n primary: theme.colorPrimary,\n primary25: \"rgba(4, 162, 176,0.1)\",\n primary50: \"rgba(4, 162, 176,0.2)\",\n neutral20: theme.colorText,\n neutral30: theme.colorText,\n danger: theme.colorWarning\n }\n })}\n />\n
\n );\n};\n\nDropdownSelect.defaultProps = {\n selected: null\n}\n\nDropdownSelect.propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool\n ])\n )\n ).isRequired,\n setSelected: PropTypes.func.isRequired,\n selected: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool\n ])\n )\n}\n\nexport default DropdownSelect;\n","import React, {useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n display: props => (props.inline ? \"inline-flex\" : \"block\"),\n color: props => props.color,\n padding: \"1px\",\n width: \"auto\",\n cursor: \"pointer\",\n alignItems: \"center\",\n fontSize: \"1rem\",\n \"&:focus\": {\n outline: \"none\"\n }\n },\n body: {\n width: props => (props.size ? `${props.size * 1.8}rem` : \"1.6rem\"),\n height: props => (props.size ? `${props.size / 2}rem` : \"0.5rem\"),\n margin: props =>\n props.inline\n ? props.size\n ? `${props.size / 2}rem`\n : \"0.5rem\"\n : props.size\n ? `${props.size / 2}rem auto`\n : \"0.5rem auto\",\n borderRadius: \"1rem\",\n transition: \"all 0.1s ease\"\n },\n body_on: {\n backgroundColor: \"rgba(4, 162, 176, 0.5)\"\n },\n body_off: {\n backgroundColor: \"#e6e6e6\"\n },\n toggle: {\n position: \"relative\",\n width: props => (props.size ? `${props.size}rem` : \"1rem\"),\n height: props => (props.size ? `${props.size}rem` : \"1rem\"),\n borderRadius: \"1rem\",\n transition: \"all 0.1s ease\",\n top: \"-50%\"\n },\n toggle_on: {\n backgroundColor: theme.colorPrimary,\n left: \"50%\"\n },\n toggle_off: {\n backgroundColor: \"#d9d7d7\",\n left: \"0%\"\n },\n label_on: {\n userSelect: \"none\",\n color: theme.colorPrimary,\n transition: \"all 0.15s ease\"\n },\n label_off: {\n userSelect: \"none\",\n color: \"grey\",\n transition: \"all 0.15s ease\"\n },\n focus: {\n color: theme.colorPrimary\n }\n}));\n\nconst Toggle = props => {\n const {label, onToggle, submit, toggled} = props;\n const classes = useStyles(props);\n const [isFocused, setFocus] = useState(false);\n\n const handleClick = () => {\n onToggle(!toggled);\n };\n\n const handleKeyDown = e => {\n if (e.key === \"ArrowRight\") {\n onToggle(true);\n } else if (e.key === \"ArrowLeft\") {\n onToggle(false);\n } else if (e.key === \"Space\") {\n onToggle(!toggled);\n } else if (e.key === \"Enter\") {\n if (submit) submit();\n }\n };\n\n return (\n setFocus(true)}\n onBlur={() => setFocus(false)}\n role=\"none\"\n >\n \n {label}\n \n \n \n \n \n );\n};\n\nToggle.defaultProps = {\n label: \"\",\n submit: null,\n toggled: false,\n onToggle: null\n};\n\nToggle.propTypes = {\n onToggle: PropTypes.func,\n label: PropTypes.string,\n submit: PropTypes.func,\n toggled: PropTypes.bool\n};\n\nexport default Toggle;\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"loading\",\n \"use\": \"loading-usage\",\n \"viewBox\": \"0 0 100 100\",\n \"content\": \"\\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 \\n\\n\\n\\n\\n\\n \\n \\n\\n\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport classnames from \"classnames\";\nimport {sizes, iconSizes} from \"../../config/constants\";\n\nconst useStyles = createUseStyles({\n svg: {\n color: color => color,\n display: \"block\"\n },\n [sizes.SMALL]: {\n height: iconSizes[sizes.SMALL],\n width: iconSizes[sizes.SMALL]\n },\n [sizes.MEDIUM]: {\n height: iconSizes[sizes.MEDIUM],\n width: iconSizes[sizes.MEDIUM]\n },\n [sizes.LARGE]: {\n height: iconSizes[sizes.LARGE],\n width: iconSizes[sizes.LARGE]\n },\n [sizes.HUGE]: {\n height: iconSizes[sizes.HUGE],\n width: iconSizes[sizes.HUGE]\n }\n});\n\nconst Icon = props => {\n const {className, color, size, svg: svgObject, title, iconRef, style} = props;\n const classes = useStyles(color);\n\n const svgClasses = classnames(\n classes.svg,\n {\n [classes[size]]: size !== sizes.IGNORE\n },\n className\n );\n\n return (\n \n {title && {title}}\n \n \n );\n};\n\nIcon.defaultProps = {\n className: \"\",\n color: \"inherit\",\n size: sizes.MEDIUM,\n title: \"\",\n style: null,\n iconRef: null\n};\n\nIcon.propTypes = {\n className: PropTypes.string,\n color: PropTypes.string,\n size: PropTypes.oneOf(Object.getOwnPropertyNames(sizes)),\n svg: PropTypes.shape({\n id: PropTypes.string.isRequired,\n viewBox: PropTypes.string.isRequired\n }).isRequired,\n title: PropTypes.string,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n iconRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({current: PropTypes.any})\n ])\n};\n\nexport default Icon;\n","/* eslint-disable */\nimport React from \"react\";\n\nconst Car = ({height, width}) => {\n return (\n \n \n
\n \n );\n}\n\nexport default Car;","/* eslint-disable */\nimport React from \"react\";\n\nconst Car = ({height, width}) => {\n return (\n \n \n \n \n );\n}\n\nexport default Car;","import React, {useEffect} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport {createUseStyles, useTheme} from \"react-jss\";\nimport WeightClassSelect from \"./WeightClassSelect\";\nimport WeightClassOption from \"./WeightClassOption\";\nimport DropdownSelect from \"./DropdownSelect\";\nimport Toggle from \"../common/Toggle\";\nimport Loading from \"../../assets/svg/loading.svg\";\nimport Icon from \"../common/Icon\";\nimport Car from \"../../assets/svg/Car\";\nimport Truck from \"../../assets/svg/Truck\";\nimport {getVehicleOptions} from \"../../redux/actions/vehicleOptionsActions\";\nimport {\n setWeightClass,\n setSmallVehicleType,\n setBigVehicleType,\n setRoundTrip\n} from \"../../redux/actions/formDataActions\";\n\nconst useStyles = createUseStyles({\n root: {\n margin: \"1rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n loader: {\n display: \"inline\",\n margin: \"0 auto\"\n },\n toggle: {\n margin: \"0 0.2rem\"\n }\n});\n\nconst VehicleOptions = ({submit}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const theme = useTheme();\n const {vehicleOptions, formData} = useSelector(state => ({\n vehicleOptions: state.vehicleOptions,\n formData: state.formData\n }));\n\n useEffect(() => {\n dispatch(getVehicleOptions());\n }, []);\n\n return (\n
\n {vehicleOptions.Vektverdier ? (\n <>\n el.Idx === formData.weightClass.Idx\n )}\n onChange={selected => dispatch(setWeightClass(selected))}\n colors={{\n default: theme.colorGray,\n selected: theme.colorPrimary,\n hover: \"rgba(4, 162, 176, 0.1)\"\n }}\n >\n el.Navn === \"Liten bil\"\n )}\n >\n \n \n el.Navn === \"Stor bil\"\n )}\n >\n \n \n \n {formData.weightClass &&\n formData.weightClass.Idx === \"1\" ? (\n \n dispatch(setSmallVehicleType(selected))\n }\n submit={submit}\n />\n ) : (\n \n dispatch(setBigVehicleType(selected))\n }\n submit={submit}\n />\n )}\n
\n dispatch(setRoundTrip(val))}\n submit={submit}\n toggled={formData.roundTrip === \"1\"}\n />\n
\n \n ) : (\n \n )}\n
\n );\n};\n\n/* */\n\nVehicleOptions.propTypes = {\n submit: PropTypes.func.isRequired\n};\n\nexport default VehicleOptions;\n","import React, {useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\n\nconst useStyles = createUseStyles(theme => ({\n button: {\n padding: \"0.5rem 3rem\",\n color: \"white\",\n fontFamily: \"inherit\",\n fontSize: \"1.2rem\",\n fontWeight: \"800\",\n userSelect: \"none\",\n backgroundColor: theme.colorPrimary,\n border: theme.defaultBorder,\n borderRadius: theme.borderRadius,\n outline: \"blue\"\n }\n}));\n\nconst Submit = props => {\n const { \n children, \n onClick, \n validate\n } = props;\n const classes = useStyles();\n const [active, setActive] = useState(true);\n\n return (\n validate && setActive(validate)}\n disabled={!active}\n style={{\n cursor: active ? \"pointer\" : \"not-allowed\"\n }}\n type=\"button\"\n >\n {children}\n \n );\n};\n\nSubmit.defaultProps = {\n children: null,\n validate: null,\n onClick: () => {}\n}\n\nSubmit.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element)\n ]),\n onClick: PropTypes.func,\n validate: PropTypes.func\n};\n\nexport default Submit;\n","import React, {useEffect, useState} from \"react\";\nimport {createUseStyles} from \"react-jss\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport {withRouter} from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport {submitForm, setFormData} from \"../../redux/actions/formDataActions\";\nimport {submitValidate} from \"../../utils/utils\";\nimport SearchDropdowns from \"./SearchDropdowns\";\nimport VehicleOptions from \"./VehicleOptions\";\nimport Submit from \"../common/Submit\";\n\nconst useStyles = createUseStyles({\n root: {\n padding: \"0 1.2rem\"\n },\n submit: {\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"1rem 0\"\n }\n});\n\nconst Form = ({match, history}) => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const {formData, submittedFormData} = useSelector(state => ({\n formData: state.formData,\n submittedFormData: state.submittedFormData\n }));\n const [fromError, setFromError] = useState(false);\n const [toError, setToError] = useState(false);\n\n useEffect(() => {\n if (match.params.formData) {\n try {\n const formDataStringFromURL = atob(match.params.formData);\n if (JSON.stringify(formData) !== formDataStringFromURL) {\n dispatch(setFormData(JSON.parse(formDataStringFromURL)));\n setTimeout(() => {\n dispatch(submitForm());\n }, 1000);\n }\n } catch (error) {\n history.replace(\"\");\n }\n }\n }, [match]);\n\n const handleSubmit = () => {\n if (submitValidate(formData, submittedFormData)) {\n if (formData.from === \"\" || formData.to === \"\") {\n if (formData.from === \"\") setFromError(true);\n if (formData.to === \"\") setToError(true);\n } else if (\n formData.from.Name === formData.to.Name &&\n formData.via.length === 0\n ) {\n setToError(true);\n } else {\n dispatch(submitForm(history));\n }\n }\n };\n\n return (\n
\n \n \n
\n submitValidate(formData, submittedFormData)}\n >\n BEREGN\n \n
\n \n );\n};\n\nForm.propTypes = {\n match: PropTypes.objectOf(PropTypes.any).isRequired,\n history: PropTypes.objectOf(PropTypes.any).isRequired\n}\n\nexport default withRouter(Form);\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"expand\",\n \"use\": \"expand-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {useState, useRef, useEffect} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport ExpandIcon from \"../../assets/svg/expand.svg\";\nimport Icon from \"./Icon\";\n\nconst useStyles = createUseStyles(theme => ({\n selected: {\n borderLeft: `6px solid ${theme.colorPrimary}`\n },\n notSelected: {\n borderLeft: \"6px solid rgb(255,255,255)\"\n },\n summary: {\n backgroundColor: \"white\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n fontFamily: \"inherit\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n transition: \"height 300ms ease\",\n outline: \"none\",\n padding: \"0\",\n width: \"100%\",\n appearance: \"none\",\n overflow: \"hidden\"\n },\n details: {\n padding: \"0 1rem\",\n overflow: \"hidden\"\n },\n expanded: {\n padding: \"0 1rem\",\n borderLeft: props =>\n props.borderLeft === \"small\" && `2px solid ${theme.colorPrimary}`\n },\n iconContainer: {\n float: \"left\",\n display: \"flex\",\n justifyContent: \"center\",\n width: \"12%\",\n flexShrink: 0\n },\n icon: {\n userSelect: \"none\"\n },\n iconExpanded: {\n transform: props =>\n props.iconDir === \"left\" ? \"rotate(-180deg)\" : \"rotate(180deg)\",\n transition: \"transform 300ms ease\"\n }\n}));\n\nconst ExpansionPanel = props => {\n const {\n children,\n expanded,\n id,\n icon,\n iconDir,\n summary,\n setSelected,\n selected,\n animationSpeed,\n getExpanded\n } = props;\n\n const [isExpanded, setIsExpanded] = useState(expanded);\n const isInitialMount = useRef(true);\n const detailsElem = useRef(0);\n const iconRef = useRef(0);\n const classes = useStyles(props);\n\n useEffect(() => {\n if (getExpanded) getExpanded(isExpanded);\n }, [isExpanded]);\n\n const collapsePanel = () => {\n const {transition} = detailsElem.current.parentNode.style;\n detailsElem.current.parentNode.style.transition = \"\";\n requestAnimationFrame(() => {\n detailsElem.current.parentNode.style.height = `${detailsElem.current.offsetHeight}px`;\n detailsElem.current.parentNode.style.transition = transition;\n requestAnimationFrame(() => {\n setIsExpanded(false);\n });\n });\n };\n\n const expandPanel = () => {\n if (iconRef.current) {\n iconRef.current.style.transform =\n iconDir === \"left\" ? \"rotate(-180deg)\" : \"rotate(180deg)\";\n }\n detailsElem.current.parentNode.style.height = `${detailsElem.current.offsetHeight}px`;\n const expand = () => {\n detailsElem.current.parentNode.removeEventListener(\n \"transitionend\",\n expand\n );\n detailsElem.current.parentNode.style.height = \"auto\";\n setIsExpanded(true);\n };\n detailsElem.current.parentNode.addEventListener(\n \"transitionend\",\n expand\n );\n };\n\n useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n } else if (selected && !isExpanded) {\n expandPanel();\n } else if (!selected && isExpanded) {\n collapsePanel();\n }\n }, [selected]);\n\n const handleClick = () => {\n if (setSelected && !selected) {\n setSelected(id);\n }\n if (isExpanded) {\n collapsePanel();\n } else {\n expandPanel();\n }\n };\n\n return (\n
\n \n {icon && iconDir === \"left\" && (\n
\n \n
\n )}\n {summary}\n {icon && iconDir === \"right\" && (\n
\n \n
\n )}\n \n \n
{children}
\n
\n \n );\n};\n\nExpansionPanel.defaultProps = {\n id: null,\n expanded: false,\n icon: null,\n iconDir: \"right\",\n animationSpeed: 300,\n setSelected: () => {},\n selected: null,\n getExpanded: () => {}\n};\n\nExpansionPanel.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element)\n ]).isRequired,\n expanded: PropTypes.bool,\n id: PropTypes.number,\n icon: PropTypes.bool,\n iconDir: PropTypes.string,\n summary: PropTypes.element.isRequired,\n setSelected: PropTypes.func,\n selected: PropTypes.bool,\n animationSpeed: PropTypes.number,\n getExpanded: PropTypes.func\n};\n\nexport default ExpansionPanel;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n padding: \"0.8rem 0\",\n color: theme.colorPrimary,\n fontFamily: \"Caveat Brush\",\n textAlign: \"center\",\n fontSize: props => props.fontSize ? props.fontSize : \"2.2rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textDecoration: \"none\"\n },\n link: {\n textDecoration: \"none\"\n }\n}));\n\nconst Header = props => {\n const {children, href} = props;\n const classes = useStyles(props);\n return (\n \n
{children}
\n
\n );\n};\n\nHeader.defaultProps = {\n children: null,\n href: \"\"\n}\n\nHeader.propTypes = {\n href: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element)\n ])\n};\n\nexport default Header;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport {formatPrice} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles({\n root: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontWeight: props => props.bold ? \"bold\" : \"normal\",\n color: props => props.color,\n margin: \"0.5rem 0\",\n padding: props => props.padding\n },\n span: {\n display: \"flex\",\n alignItems: \"center\"\n }\n});\n\nconst RouteInfo = (props) => {\n const {from, to, distance, duration, price} = props;\n const classes = useStyles(props);\n\n return (\n
\n \n {`${from.Name.split(\",\")[0]} - ${to.Name.split(\",\")[0]}`}\n \n {distance && {distance}}\n {duration && {duration}}\n {price && {formatPrice(price)}}\n
\n );\n};\n\nRouteInfo.defaultProps = {\n from: \"\",\n to: \"\",\n distance: \"\",\n duration: \"\",\n price: \"\"\n}\n\nRouteInfo.propTypes = {\n from: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])),\n to: PropTypes.objectOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])),\n distance: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n duration: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n price: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n}\n\nexport default RouteInfo;\n","import React, {useContext, useEffect, useRef} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector} from \"react-redux\";\nimport {createUseStyles, useTheme} from \"react-jss\";\nimport Header from \"../menu/Header\";\nimport RouteInfo from \"../result/RouteInfo\";\nimport {PrintContext} from \"./Print\"; // eslint-disable-line\nimport {findToll, durationLong, formatPrice} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n document: {\n fontSize: \"1.2vh\"\n },\n page: {\n boxSizing: \"border-box\",\n backgroundColor: \"white\",\n padding: \"6vh\",\n width: \"100vw\",\n height: \"100vh\",\n \"@media(min-width: 60rem)\": {\n height: \"90vh\",\n width: `calc(90vh/${Math.sqrt(2)})`\n }\n },\n row: {\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n trip: {\n paddingBottom: \"1rem\",\n borderTop: `1px solid ${theme.colorPrimary}`,\n borderBottom: `1px solid ${theme.colorPrimary}`,\n \"&:(last-child)\": {\n borderTop: \"none\"\n }\n },\n bold: {\n fontWeight: \"700\"\n },\n secondPage: {\n position: \"absolute\",\n top: \"-100%\"\n }\n}));\n\nconst PrintDocument = props => {\n const {overflow, setOverflow, pageNumber} = props;\n\n const {\n tur,\n retur,\n turSum,\n returSum,\n totalSum,\n totalDistance,\n totalDuration\n } = useContext(PrintContext);\n\n const {autopass, rushtid, submittedFormData} = useSelector(state => ({\n autopass: state.resultOptions.autopass,\n rushtid: state.resultOptions.rushtid,\n submittedFormData: state.submittedFormData\n }));\n\n const classes = useStyles();\n const theme = useTheme();\n const pageRef = useRef(0);\n\n useEffect(() => {\n if (pageRef.current.offsetHeight < pageRef.current.scrollHeight) {\n setOverflow(true);\n } else {\n setOverflow(false);\n }\n }, []);\n\n const turStations = tur.AvgiftsPunkter.map(station => {\n const toll = findToll(station, submittedFormData, rushtid);\n let extraFB = null;\n if (station.Avgifter.length > 1) {\n extraFB = station.Avgifter.find(t => {\n return t.Feetype_id === \"fb\";\n });\n }\n\n return (\n
\n {station.Navn}\n \n {autopass\n ? formatPrice((toll ? toll.PrisRabbattert : 0) + (extraFB ? extraFB.PrisRabbattert : 0))\n : formatPrice(toll.Pris + (extraFB ? extraFB.Pris : 0))}\n \n
\n );\n });\n\n let returStations;\n if (retur)\n returStations = (\n \n \n {retur.AvgiftsPunkter.map(station => {\n const toll = findToll(station, submittedFormData, rushtid);\n let extraFB = null;\n if (station.Avgifter.length > 1) {\n extraFB = station.Avgifter.find(t => {\n return t.Feetype_id === \"fb\";\n });\n }\n return (\n
\n {station.Navn}\n \n {autopass\n ? formatPrice(toll.PrisRabbattert + (extraFB ? extraFB.PrisRabbattert : 0))\n : formatPrice(toll.Pris + (extraFB ? extraFB.Pris : 0))}\n \n
\n );\n })}\n \n );\n\n const result = (\n
\n Totalt:\n {totalDistance}km\n {durationLong(totalDuration)}\n {totalSum}\n
\n );\n\n const date = new Date();\n const currentDate = `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`;\n\n return (\n \n
\n
bompengekalkulator.no
\n
{currentDate}
\n
\n \n {turStations}\n
\n\n {returStations && !overflow && returStations}\n {!overflow && result}\n
\n {overflow && (\n
\n {returStations}\n {result}\n
\n )}\n \n );\n};\n\nPrintDocument.propTypes = {\n overflow: PropTypes.bool.isRequired,\n setOverflow: PropTypes.func.isRequired,\n pageNumber: PropTypes.string.isRequired\n};\n\nexport default PrintDocument;\n","/* eslint-disable */\nimport React from \"react\";\n\nconst Exit = ({fill, height, width}) => {\n return (\n \n \n \n \n );\n};\n\nexport default Exit;\n","import React, {useState, useRef} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport ReactToPrint from \"react-to-print\";\nimport PrintDocument from \"./PrintDocument\"; // eslint-disable-line\nimport Submit from \"../common/Submit\";\nimport Exit from \"../../assets/svg/Exit\";\n\nconst useStyles = createUseStyles({\n container: {\n boxSizing: \"border-box\",\n backgroundColor: \"white\",\n width: \"100vw\",\n height: \"100vh\",\n position: \"relative\",\n overflow: \"hidden\",\n \"@media(min-width: 60rem)\": {\n marginTop: \"5vh\",\n height: \"90vh\",\n width: `calc(90vh/${Math.sqrt(2)})`\n }\n },\n exitButton: {\n backgroundColor: \"transparent\",\n border: \"none\",\n outline: \"none\",\n cursor: \"pointer\",\n position: \"absolute\",\n top: \"0\",\n right: \"0\",\n padding: \"1rem\"\n },\n bottom: {\n display: \"flex\",\n justifyContent: \"space-evenly\",\n position: \"absolute\",\n bottom: \"2vh\",\n width: \"100%\"\n },\n printButton: {\n flex: \"1\",\n boxSizing: \"border-box\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n pageSwitch: {\n flex: \"1\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"1.4rem\",\n color: \"gray\"\n },\n pageSwitchButton: {\n fontSize: \"1.5rem\",\n backgroundColor: \"white\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"gray\"\n }\n});\n\nconst PrintView = ({onExit}) => {\n const [overflow, setOverflow] = useState(false);\n const [pageNumber, setPageNumber] = useState(\"1\");\n const classes = useStyles();\n const document = useRef(0);\n\n const handleClick = () => {\n if (pageNumber === \"1\") {\n setPageNumber(\"2\");\n } else {\n setPageNumber(\"1\");\n }\n };\n\n return (\n
\n
\n \n
\n onExit(false)}\n >\n \n \n
\n {overflow &&}\n \n
Print ut
}\n content={() => document.current}\n />\n
\n {overflow && (\n \n \n {pageNumber} av 2\n \n \n )}\n
\n
\n );\n};\n\nPrintView.propTypes = {\n onExit: PropTypes.func.isRequired\n};\n\nexport default PrintView;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport AriaModal from \"react-aria-modal\";\nimport PrintView from \"./PrintView\"; // eslint-disable-line\n\nconst PrintModal = ({onExit}) => {\n return (\n onExit(false)}\n focusDialog\n >\n \n \n );\n}\n\nPrintModal.propTypes = {\n onExit: PropTypes.func.isRequired\n};\n\nexport default PrintModal;","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"print\",\n \"use\": \"print-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\\n \\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import React, {createContext, useState} from \"react\";\nimport {createUseStyles} from \"react-jss\";\nimport PrintModal from \"./PrintModal\"; // eslint-disable-line\nimport Icon from \"../common/Icon\";\nimport PrintIcon from \"../../assets/svg/print.svg\";\n\nexport const PrintContext = createContext({});\n\nconst useStyles = createUseStyles({\n button: {\n backgroundColor: \"transparent\",\n border: \"none\",\n outline: \"none\",\n cursor: \"pointer\"\n }\n});\n\nconst Print = (props) => {\n const [visible, setVisible] = useState(false);\n const classes = useStyles();\n\n return (\n \n setVisible(!visible)}\n >\n \n \n {visible && }\n \n );\n};\n\nexport default Print;\n","/* eslint-disable */\nimport React from \"react\";\nimport {useSelector} from \"react-redux\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\nimport ExpansionPanel from \"../common/ExpansionPanel\";\nimport {openIntercomWithMsg, formatPrice} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n width: \"90%\",\n borderTop: \"1px solid rgba(0,0,0,.125)\",\n borderBottom: \"5px solid rgb(250,0,0)\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: \"0\"\n },\n \"&:before\": {\n display: \"none\"\n }\n },\n summary: {\n padding: \"0.25rem 0 0.25rem 1rem\",\n width: \"90%\",\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n name: {\n fontSize: \"1.1rem\",\n fontWeight: \"500\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n },\n price: {\n fontSize: \"1.1rem\",\n textAlign: \"right\",\n fontWeight: \"500\",\n position: \"relative\"\n },\n button: {\n backgroundColor: \"inherit\",\n border: \"none\",\n outline: \"none\",\n padding: \"0\",\n cursor: \"pointer\",\n color: theme.colorPrimary\n },\n details: {\n lineHeight: \"1rem\"\n },\n star: {\n color: theme.colorPrimary,\n fontSize: \"1.3rem\",\n fontWeight: \"900\",\n margin: \"0 0.25rem\"\n },\n timesregel: {\n display: \"flex\"\n }\n}));\n\nconst ChargePoint = ({station}) => {\n const classes = useStyles();\n const {autopass, rushtid, formData} = useSelector(state => ({\n autopass: state.resultOptions.autopass,\n rushtid: state.resultOptions.rushtid,\n formData: state.formData\n }));\n\n let extraFB = null;\n let bp = null;\n if (station.Avgifter.length > 1) {\n extraFB = station.Avgifter.find(toll => {\n return toll.Feetype_id === \"fb\";\n });\n bp = station.Avgifter.find(toll => {\n return toll.Feetype_id === \"bp\";\n });\n }\n\n const rushIndex = station.Avgifter.findIndex(toll => {\n return (\n toll.Feetype_id === \"bp\" &&\n (rushtid ? toll.Rushstart !== \"\" : toll.Rushstart === \"\")\n );\n });\n\n let discountedPrice = 0;\n let price = 0;\n const avgift = station.Avgifter[rushIndex === -1 ? 0 : rushIndex];\n\n if (avgift) {\n discountedPrice = avgift.PrisRabbattert;\n price = avgift.Pris;\n }\n\n if (extraFB) {\n discountedPrice += extraFB.PrisRabbattert;\n price += extraFB.Pris;\n }\n\n const summary = (\n
\n {station.Navn}\n \n {station.Avgifter.length > 0\n ? autopass\n ? formatPrice(discountedPrice)\n : formatPrice(price)\n : \"kr 0\"}\n {station.TimesregelNavn !== \"\" && autopass && (\n \n *\n \n )}\n \n
\n );\n\n const isToll = station.Avgifter.length > 0;\n let rushtime = [];\n\n if (station.Avgifter.length > 1) {\n rushtime = station.Avgifter.filter(toll => {\n return toll.Rushperiod_id !== \"\";\n }).map(toll => {\n return toll.Rushperiod_id;\n });\n }\n\n return (\n \n {isToll ? (\n
\n {extraFB &&\n (autopass ? (\n <>\n
Bompenger: {bp.PrisRabbatertNice}
\n
\n Ferjebillett: {extraFB.PrisRabbatertNice}\n
\n \n ) : (\n <>\n
Bompenger: {bp.PrisNice}
\n
Ferjebillett: {extraFB.PrisNice}
\n \n ))}\n
\n {station.TimesregelNavn !== \"\" && autopass && (\n *\n )}\n {station.Timesregel && Timesregel }\n {station.TimesregelNavn !== \"\" && (\n \n {\" \"}\n ({station.TimesregelNavn})\n \n )}\n
\n {formData.weightClass.Idx === \"1\"\n ? station.LNullutslipprabatt && (\n
\n Nullutslipsrabatt:{\" \"}\n {station.LNullutslipprabatt} %\n
\n )\n : station.SNullutslipprabatt && (\n
\n Nullutslipsrabatt:{\" \"}\n {station.SNullutslipprabatt} %\n
\n )}\n {price !== discountedPrice && (\n <>\n
\n Autopass rabatt: {station.Autopassrabatt} %\n
\n \n )}\n {rushtime.length > 1 && (\n
\n Rushtid: {rushtime[0]} og {rushtime[1]}\n
\n )}\n
\n ) : (\n
Ingen avgifter
\n )}\n \n openIntercomWithMsg(`Feil på bomstasjon ${station.Navn}: `)\n }\n >\n Meld feil\n \n \n );\n};\n\nChargePoint.propTypes = {\n station: PropTypes.objectOf(PropTypes.any).isRequired\n};\n\nexport default ChargePoint;\n","import React, {Fragment} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector} from \"react-redux\";\nimport {createUseStyles, useTheme} from \"react-jss\";\nimport RouteInfo from \"./RouteInfo\";\nimport ChargePoint from \"./ChargePoint\";\nimport {findToll} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n divider: {\n margin: \"1rem\",\n height: \"1px\",\n borderTop: \"1px solid\",\n color: theme.colorPrimary\n },\n noStations: {\n margin: \"0 1rem\",\n fontSize: \"1.1rem\",\n color: \"grey\"\n }\n}));\n\nconst RouteDetails = props => {\n const {\n tur,\n retur,\n tripSum,\n roundtripSum\n } = props;\n\n const classes = useStyles();\n const theme = useTheme();\n\n const {\n autopass,\n rushtid,\n submittedFormData\n } = useSelector(state => ({\n autopass: state.autopass,\n rushtid: state.rushtid,\n submittedFormData: state.submittedFormData\n }));\n\n const chargePoints = tur.AvgiftsPunkter.filter(station =>\n findToll(station, submittedFormData, rushtid)\n ).map(station => (\n \n ));\n\n let roundtripChargePoints;\n if (retur) {\n roundtripChargePoints = retur.AvgiftsPunkter.map(station => (\n \n ));\n }\n\n return (\n
\n {retur && (\n \n )}\n {chargePoints.length > 0 ? (\n chargePoints\n ) : (\n
Ingen bomstasjoner
\n )}\n {retur && (\n \n
\n \n \n )}\n {roundtripChargePoints}\n
\n );\n};\n\nRouteDetails.defaultProps = {\n retur: null,\n tripSum: \"\",\n roundtripSum: \"\"\n}\n\nRouteDetails.propTypes = {\n tur: PropTypes.objectOf(PropTypes.any).isRequired,\n retur: PropTypes.objectOf(PropTypes.any),\n tripSum: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n roundtripSum: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])\n};\n\nexport default RouteDetails;\n","\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {createUseStyles} from \"react-jss\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n overflow: \"hidden\",\n padding: \"1rem 1.5rem 1rem 0\"\n },\n name: {\n display: \"inline\",\n flex: \"1 0 40%\",\n fontSize: \"1.2rem\",\n fontWeight: \"800\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n textAlign: \"left\"\n },\n info: {\n display: \"inline\",\n flex: \"1 0 15%\",\n padding: \"0 0.5rem\",\n fontSize: \"1.1rem\",\n fontWeight: \"700\",\n color: \"rgba(0, 0, 0, 0.54)\",\n whiteSpace: \"nowrap\"\n },\n price: {\n display: \"inline\",\n textAlign: \"right\",\n fontSize: \"1.2rem\",\n fontWeight: \"700\",\n color: theme.textColor,\n whiteSpace: \"nowrap\"\n }\n}));\n\nconst RouteSummary = props => {\n const {\n name,\n distance,\n duration,\n price\n } = props;\n const classes = useStyles();\n\n return (\n
\n
\n {name}\n
\n \n {distance} km\n \n \n {duration}\n \n \n {price}\n \n
\n );\n};\n\nRouteSummary.propTypes = {\n name: PropTypes.string.isRequired,\n distance: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]).isRequired,\n duration: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]).isRequired,\n price: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]).isRequired\n}\n\nexport default RouteSummary;\n","import React from \"react\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport {setAutopass, setRushtid} from \"../../redux/actions/resultOptionsActions\";\nimport Toggle from \"../common/Toggle\";\n\nconst ResultOptions = () => {\n const dispatch = useDispatch();\n const {autopass, rushtid} = useSelector(state => ({\n autopass: state.resultOptions.autopass,\n rushtid: state.resultOptions.rushtid\n }));\n\n return (\n \n dispatch(setAutopass(!autopass))}\n inline\n toggled={autopass}\n />\n dispatch(setRushtid(!rushtid))}\n inline\n toggled={rushtid}\n />\n \n )\n}\n\nexport default ResultOptions;","import React, {useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport {createUseStyles} from \"react-jss\";\nimport ExpansionPanel from \"../common/ExpansionPanel\";\nimport Print from \"../print/Print\";\nimport RouteDetails from \"./RouteDetails\";\nimport RouteSummary from \"./RouteSummary\";\nimport ResultOptions from \"./ResultOptions\";\nimport {selectRoute} from \"../../redux/actions/resultActions\";\nimport {sumToll, formatPrice, durationShort} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n overflowY: \"auto\",\n borderTop: \"1px solid #d9d7d7\",\n \"&:last-child\": {\n borderBottom: \"1px solid #d9d7d7\"\n }\n },\n expanded: {\n flex: (theme.isIE11 ? \"1 1 auto\" : \"1\")\n },\n notExpanded: {\n flex: \"0 0 auto\"\n },\n row: {\n padding: \"0.5rem 1rem 1rem 1rem\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n color: theme.colorPrimary\n },\n divider: {\n margin: \"1rem\",\n height: \"1px\",\n borderTop: \"1px solid\",\n color: theme.colorPrimary\n },\n button: {\n cursor: \"pointer\",\n userSelect: \"none\"\n }\n}));\n\nconst RouteResult = props => {\n const {\n id,\n tur,\n retur,\n selected\n } = props;\n\n const [isExpanded, setIsExpanded] = useState(false);\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const {autopass, rushtid, submittedFormData} = useSelector(state => ({\n autopass: state.resultOptions.autopass,\n rushtid: state.resultOptions.rushtid,\n submittedFormData: state.submittedFormData\n }));\n\n const turSum = sumToll(\n tur.AvgiftsPunkter,\n submittedFormData,\n rushtid,\n autopass\n );\n \n let returSum = 0;\n if (retur) {\n returSum = sumToll(\n retur.AvgiftsPunkter,\n submittedFormData,\n rushtid,\n autopass\n );\n }\n\n const totalPriceFormated = formatPrice(retur ? turSum + returSum : turSum);\n const totalDistance = Math.round(\n (retur ? tur.Meters + retur.Meters : tur.Meters) / 1000\n );\n const totalDuration = (retur ? tur.Seconds + retur.Seconds : tur.Seconds) / 60;\n\n return (\n \n \n }\n icon\n iconDir=\"left\"\n expanded={selected}\n selected={selected}\n setSelected={val => dispatch(selectRoute(val))}\n animationSpeed={300}\n getExpanded={setIsExpanded}\n >\n \n
\n \n
\n \n
\n
\n \n
\n );\n};\n\nRouteResult.defaultProps = {\n retur: null\n}\n\nRouteResult.propTypes = {\n id: PropTypes.number.isRequired,\n tur: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array\n ])\n ).isRequired,\n retur: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n PropTypes.bool,\n PropTypes.array\n ])\n ),\n selected: PropTypes.bool.isRequired\n}\n\nexport default RouteResult;\n","import React from \"react\";\nimport {useSelector} from \"react-redux\";\nimport {createUseStyles} from \"react-jss\";\nimport RouteResult from \"./RouteResult\";\nimport {selectRoute} from \"../../redux/actions/resultActions\";\n\nconst useStyles = createUseStyles({\n root: {\n height: \"100%\",\n display: \"flex\",\n flexFlow: \"column\",\n overflowY: \"auto\"\n },\n wrapper: {\n maxHeight: \"100%\",\n display: \"flex\",\n flexFlow: \"column\"\n }\n});\n\nconst Result = () => {\n const classes = useStyles();\n const result = useSelector(state => state.result);\n return (\n
\n
\n {result.Tur &&\n result.Tur.map((route, index) => (\n \n ))}\n
\n
\n );\n};\n\nexport default Result;\n","import React from \"react\";\nimport {createUseStyles} from \"react-jss\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n display: \"flex\",\n flexFlow: \"column\"\n },\n navMenu: {\n display: \"flex\",\n justifyContent: \"space-evenly\",\n fontSize: \"18px\",\n margin: \"0.8rem 0\",\n bottom: \"0\",\n \"& a\": {\n fontWeight: \"600\",\n color: theme.colorPrimary,\n textDecoration: \"none\",\n margin: \"0 1rem\"\n },\n \"@media(max-width: 60rem)\": {\n margin: \"0.3rem 0\"\n }\n },\n terms: {\n textAlign: \"center\",\n color: theme.colorInactive,\n textDecoration: \"none\",\n \"@media(min-width: 60rem)\": {\n position: \"fixed\",\n bottom: \"0.2rem\",\n left: \"36rem\"\n }\n }\n}));\n\nconst Footer = () => {\n const classes = useStyles();\n return (\n \n );\n};\n\nexport default Footer;\n","import React from \"react\";\nimport {useSelector} from \"react-redux\";\nimport {createUseStyles} from \"react-jss\";\nimport Form from \"../form/Form\";\nimport Result from \"../result/Result\";\nimport Header from \"./Header\";\nimport Loading from \"../../assets/svg/loading.svg\";\nimport Footer from \"./Footer\";\nimport Icon from \"../common/Icon\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n backgroundColor: theme.backgroundPrimary,\n display: \"flex\",\n flexFlow: \"column\",\n position: \"relative\",\n minHeight: \"100vh\",\n justifyContent: \"space-between\",\n \"@media(min-width: 60rem)\": {\n height: \"100vh\"\n }\n },\n wrapper: {\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100vh\",\n justifyContent: \"space-between\"\n },\n loader: {\n display: \"block\",\n margin: \"1rem auto\",\n height: \"100%\",\n width: \"50%\"\n }\n}));\n\nconst MainMenu = () => {\n const classes = useStyles();\n const resultLoading = useSelector(state => state.result.loading);\n\n return (\n
\n
\n
\n
bompengekalkulator.no
\n
\n
\n {resultLoading ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n
\n );\n};\n\nexport default MainMenu;\n","export const mapStyle = [\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"color\": \"#444444\"\n }\n ]\n },\n {\n \"featureType\": \"landscape\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"color\": \"#f2f2f2\"\n }\n ]\n },\n {\n \"featureType\": \"landscape.natural\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#eeeeee\"\n }\n ]\n },\n {\n \"featureType\": \"landscape.natural.landcover\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#d9d7d7\"\n }\n ]\n },\n {\n \"featureType\": \"landscape.natural.terrain\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#d9d7d7\"\n }\n ]\n },\n {\n \"featureType\": \"poi\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"road\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"saturation\": -100\n },\n {\n \"lightness\": 45\n }\n ]\n },\n {\n \"featureType\": \"road.highway\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"visibility\": \"simplified\"\n },\n {\n /* \"color\": \"#808080\" */\n \"color\": \"#C0C0C0\"\n }\n ]\n },\n {\n \"featureType\": \"road.arterial\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"transit\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"color\": \"#9ffff5\"\n },\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"labels.text.fill\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n },\n {\n \"color\": \"#ffffff\"\n }\n ]\n }\n]","/* eslint-disable */\n\nimport React, {useRef, useEffect} from \"react\";\nimport {compose, withProps} from \"recompose\";\nimport {withScriptjs, withGoogleMap, GoogleMap} from \"react-google-maps\";\nimport {mapStyle} from \"../../config/mapStyle\";\nimport {mapApiKey} from \"../../config/apiConfig\";\nimport positionConfig from \"../../config/positionConfig\";\n\nconst MapContainer = React.memo(compose(\n withProps({\n googleMapURL:\n `https://maps.googleapis.com/maps/api/js?key=${ \n mapApiKey \n }&v=3.exp&libraries=geometry,drawing,places`,\n loadingElement:
,\n containerElement:
,\n mapElement:
\n }),\n withScriptjs,\n withGoogleMap\n)(({position, markers, routes, bounds, getRef}) => {\n const mapRef = useRef(false);\n\n useEffect(() => {\n if (bounds) mapRef.current.fitBounds(bounds);\n }, [bounds]);\n\n useEffect(() => {\n getRef(mapRef);\n },[]);\n\n let pos = position;\n\n /* if (window.location !== window.parent.location) {\n pos = positionConfig.nord;\n } */\n\n return (\n \n {markers}\n {routes}\n \n );\n}));\n\nexport default MapContainer;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {Marker} from \"react-google-maps\";\nimport {STATIC_URL} from \"../../config/constants\";\n\nconst markers = {\n bomstasjon: {\n url: `${STATIC_URL}marker.svg`,\n scaledSize: {\n width: 50,\n height: 42\n }\n },\n ferge: {\n url: `${STATIC_URL}ferge.svg`,\n scaledSize: {\n width: 50,\n height: 42\n }\n }\n};\n\nconst MarkerComponent = ({station, onClick}) => {\n return (\n \n );\n};\n\nMarkerComponent.defaultProps = {\n onClick: () => {}\n};\n\nMarkerComponent.propTypes = {\n station: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.number,\n PropTypes.array\n ])\n ).isRequired,\n onClick: PropTypes.func\n};\n\nexport default MarkerComponent;\n","import React, {useRef} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {useSelector} from \"react-redux\";\nimport {createUseStyles} from \"react-jss\";\nimport {InfoBox} from \"react-google-maps/lib/components/addons/InfoBox\";\nimport {\n findToll,\n lowerFirstLetter,\n openIntercomWithMsg\n} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n root: {\n top: \"35px\",\n whiteSpace: \"nowrap\",\n backgroundColor: theme.backgroundPrimary,\n color: theme.colorText,\n fontSize: \"0.9rem\",\n border: theme.defaultBorder + theme.colorPrimary,\n borderRadius: theme.borderRadius,\n padding: \"0.5rem\",\n opacity: \"0\",\n transition: \"opacity 250ms\",\n outline: \"none\",\n minWidth: \"12rem\"\n },\n fadeIn: {\n opacity: \"1\"\n },\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: \"600\",\n marginBottom: \"0.5rem\"\n },\n title: {\n fontSize: \"1rem\"\n },\n road: {\n marginLeft: \"2rem\"\n },\n result: {\n fontWeight: \"600\",\n marginLeft: \"0.5rem\"\n },\n lastRow: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"0.5rem\"\n },\n button: {\n cursor: \"pointer\",\n color: theme.colorPrimary,\n userSelect: \"none\"\n },\n price: {\n margin: \"0.3rem\",\n paddingLeft: \"0.8rem\",\n listStyleType: \"none\",\n listStylePosition: \"inside\"\n }\n}));\n\nconst InfoBoxComponent = props => {\n const {infoBoxRef, station, visible, setVisible, fade, setFade} = props;\n const classes = useStyles();\n const formData = useSelector(state => state.formData);\n const reportErrorButton = useRef(0);\n\n const vehicleName =\n formData && formData.weightClass && formData.weightClass.Idx === \"1\"\n ? \"Personbil\"\n : \"Lastebil\";\n\n let rushPeriod = [];\n if (station.Avgifter.length > 1) {\n rushPeriod = station.Avgifter.filter(toll => {\n return toll.Rushperiod_id !== \"\";\n }).map(toll => {\n return toll.Rushperiod_id;\n });\n }\n\n let extraFB = null;\n if (station.Avgifter.length > 1) {\n extraFB = station.Avgifter.find(toll => {\n if (vehicleName === \"Personbil\") {\n if (formData.smallVehicleType.Id === \"lnu\") {\n return (\n toll.Feetype_id === \"fb\" &&\n toll.Size_type_id === \"0-6\" &&\n toll.Vehicle_type_id === \"lnu\"\n );\n }\n return (\n toll.Feetype_id === \"fb\" &&\n toll.Size_type_id === \"0-6\" &&\n toll.Vehicle_type_id === \"\"\n );\n }\n return toll.Feetype_id === \"fb\" && toll.Size_type_id === \"8-10\";\n });\n }\n\n const toll = findToll(station, formData, false);\n const rushToll = findToll(station, formData, true);\n\n return (\n {\n reportErrorButton.current.addEventListener(\"click\", () =>\n openIntercomWithMsg(`Feil på bomstasjon ${station.Navn}: `)\n );\n }}\n >\n setFade(false)}\n onTransitionEnd={() => {\n if (!fade) setVisible(false);\n }}\n >\n
\n {station.Navn}\n {station.Vegnr}\n
\n {formData && (\n
\n {`Priser for ${vehicleName.toLowerCase()}\n (${\n formData.weightClass.Id === \"l\"\n ? formData.smallVehicleType.Navn &&\n lowerFirstLetter(\n formData.smallVehicleType.Navn\n )\n : formData.bigVehicleType.Navn &&\n lowerFirstLetter(\n formData.bigVehicleType.Navn\n )\n })`}\n :\n
    \n {toll && toll.Feetype_id !== \"fb\" && (\n
  • \n Full:{\" \"}\n \n {toll.PrisNice}\n \n
  • \n )}\n {toll && toll.Feetype_id !== \"fb\" && (\n
  • \n Autopass:{\" \"}\n \n {toll.PrisRabbatertNice}\n \n
  • \n )}\n {extraFB && (\n <>\n
  • \n Ferjebillett full:{\" \"}\n \n {extraFB.PrisNice}\n \n
  • \n
  • \n Ferjebillett autopass:{\" \"}\n \n {extraFB.PrisRabbatertNice}\n \n
  • \n \n )}\n {rushToll && rushToll.Feetype_id !== \"fb\" && (\n
  • \n Rushtid:{\" \"}\n \n {rushToll.PrisNice} (\n {rushToll.PrisRabbatertNice.replace(\n \"kr. \",\n \"\"\n )}\n )\n \n
  • \n )}\n
\n
\n )}\n {station.Autopassrabatt &&\n toll &&\n toll.PrisNice !== toll.PrisRabbatertNice && (\n
\n Autopass rabatt:\n \n {station.Autopassrabatt}%\n \n
\n )}\n {rushPeriod.length > 0 && (\n
\n Rushtid:\n \n {rushPeriod[0]}, {rushPeriod[1]}\n \n
\n )}\n {station.Timesregel &&
Timesregel
}\n {station.Informasjon}\n
\n \n Meld feil\n \n
\n
\n \n );\n};\n\nInfoBoxComponent.propTypes = {\n infoBoxRef: PropTypes.instanceOf(Object).isRequired,\n station: PropTypes.objectOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.array])\n ).isRequired,\n visible: PropTypes.bool.isRequired,\n setVisible: PropTypes.func.isRequired,\n fade: PropTypes.bool.isRequired,\n setFade: PropTypes.func.isRequired\n};\n\nexport default InfoBoxComponent;\n","import React, {useState, useRef} from \"react\";\nimport PropTypes from \"prop-types\";\nimport MapMarker from \"./MapMarker\";\nimport InfoBox from \"./InfoBox\";\n\nconst MapStation = ({station}) => {\n\n const [infoBoxVisible, setInfoBoxVisible] = useState(false);\n const [fade, setFade] = useState(false);\n const infoBoxRef = useRef(0);\n\n const handleClick = () => {\n setInfoBoxVisible(true);\n setFade(true);\n infoBoxRef.current.focus();\n };\n\n return (\n <>\n \n \n \n );\n};\n\nMapStation.propTypes = {\n station: PropTypes.objectOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.array\n ])\n ).isRequired\n}\n\nexport default MapStation;","import React, {Fragment, useState, useEffect} from \"react\";\nimport {useSelector, useDispatch} from \"react-redux\";\nimport {withRouter} from \"react-router-dom\";\nimport {useTheme} from \"react-jss\";\nimport PropTypes from \"prop-types\";\nimport {Polyline} from \"react-google-maps\";\nimport {selectRoute} from \"../../redux/actions/resultActions\";\nimport {getTollStations} from \"../../redux/actions/tollStationsActions\";\nimport MapContainer from \"./MapContainer\";\nimport MapStation from \"./MapStation\";\nimport {getBounds} from \"../../utils/utils\";\nimport {setGeolocation} from \"../../redux/actions/geolocationActions\";\n\nconst polylineOptions = theme => ({\n selected: {\n clickable: false,\n strokeColor: theme.colorPrimary,\n strokeWeight: 5,\n zIndex: 1\n },\n alternative: {\n clickable: false,\n strokeColor: theme.colorPrimary,\n strokeWeight: 2,\n zIndex: 0\n },\n clickable: {\n clickable: true,\n strokeColor: theme.colorGrey,\n strokeOpacity: 0,\n strokeWeight: 50,\n zIndex: 2\n }\n});\n\nconst MapComponent = ({match, history}) => {\n const [bounds, setBounds] = useState(null);\n const [mapRef, setMapRef] = useState(false);\n const dispatch = useDispatch();\n const theme = useTheme();\n\n const {\n formData,\n geolocation,\n tollStations,\n result\n } = useSelector(state => ({\n formData: state.formData,\n geolocation: state.geolocation,\n tollStations: state.tollStations,\n result: state.result\n }));\n\n useEffect(() => {\n dispatch(getTollStations());\n }, []);\n\n useEffect(() => {\n if (result.Tur && result.Tur[0] && mapRef) {\n setBounds(getBounds(result.Tur[0].Path));\n }\n }, [result]);\n\n useEffect(() => {\n if (match.params.location) {\n try {\n dispatch(setGeolocation(match.params.location));\n } catch {\n if (match.url !== \"/rute\") history.replace(\"\");\n }\n }\n }, [match.params.location]);\n\n const tollMarkers = tollStations.map(station => {\n if (station.Visible && (!station.Country || station.Country === \"Norge\"))\n return (\n \n );\n return null;\n });\n\n let routes = null;\n if (result.Tur) {\n routes = result.Tur.map((route, index) => (\n \n \n dispatch(selectRoute(index))}\n options={polylineOptions(theme).clickable}\n />\n \n ));\n }\n\n return (\n \n );\n};\n\nMapComponent.propTypes = {\n match: PropTypes.objectOf(PropTypes.any).isRequired,\n history: PropTypes.objectOf(PropTypes.any).isRequired\n}\n\nexport default withRouter(MapComponent);\n","import React from \"react\";\nimport {createUseStyles} from \"react-jss\";\nimport {openIntercom} from \"../../utils/utils\";\n\nconst useStyles = createUseStyles(theme => ({\n container: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 99,\n \"@media(max-width: 60rem)\": {\n top: 0\n }\n },\n background: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n background: \"grey\",\n opacity: 0.5\n },\n dialog: {\n background: \"white\",\n border: `1px solid ${theme.colorPrimary}`,\n borderRadius: theme.borderRadius,\n padding: \"0.5rem 1.5rem\",\n /* display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\", */\n /* height: \"300px\", */\n /* width: \"500px\", */\n maxWidth: \"500px\",\n zIndex: 1\n },\n button: {\n background: \"none!important\",\n border: \"none\",\n padding: \"0!important\",\n fontFamily: \"arial, sans-serif\",\n color: \"#069\",\n textDecoration: \"underline\",\n cursor: \"pointer\"\n }\n}));\n\nconst LimitReached = () => {\n const classes = useStyles();\n\n const handleClick = () => {\n openIntercom();\n };\n\n return (\n
\n
\n
\n

\n Du har dessverre brukt opp antall søk på\n bompengekalkulator.no denne måneden.\n

\n

\n Vi ønsker å holde bompengekalkulator.no gratis, men pga høye\n kostnader til Google Maps må vi dessverre begrense antall\n søk per bruker.\n

\n

\n Vi anbefaler at du bruker en av disse{\" \"}\n \n appene/kjørebøkene\n {\" \"}\n som har beregning av bompenger og ferjepriser integrert.\n

\n

\n Vi tilbyr også et{\" \"}\n \n API\n {\" \"}\n til systemleverandører som kan integrere bompenger i sine\n tjenester.\n

\n

\n Ta gjerne{\" \"}\n \n {/* eslint-disable-line */}\n kontakt\n {\" \"}\n ved spørsmål eller tilbakemelding.\n

\n
\n
\n );\n};\n\nexport default LimitReached;\n","import React from \"react\";\nimport {createUseStyles} from \"react-jss\";\nimport {useDispatch} from \"react-redux\";\nimport {setOverloaded} from \"../../redux/actions/overloadedActions\";\n/* import {openIntercom} from \"../../utils/utils\"; */\n\nconst useStyles = createUseStyles(theme => ({\n container: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 99,\n \"@media(max-width: 60rem)\": {\n top: 0\n }\n },\n background: {\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n background: \"grey\",\n opacity: 0.5\n },\n dialog: {\n background: \"white\",\n border: `1px solid ${theme.colorPrimary}`,\n borderRadius: theme.borderRadius,\n padding: \"0.5rem 1.5rem\",\n /* display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\", */\n /* height: \"300px\", */\n /* width: \"500px\", */\n maxWidth: \"500px\",\n zIndex: 1\n },\n button: {\n background: \"none!important\",\n border: \"none\",\n padding: \"0!important\",\n fontFamily: \"arial, sans-serif\",\n /* fontSize: \"1.2rem\", */\n color: \"#069\",\n textDecoration: \"underline\",\n cursor: \"pointer\"\n }\n}));\n\nconst OverloadedDialog = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const handleClick = () => {\n dispatch(setOverloaded(false))\n }\n\n return (\n
\n
\n
\n

\n På grunn av stor trafikk er bompengekalkulator midlertidig utilgjengelig. Prøv gjerne igjen om 10 minutter.\n

\n \n
\n
\n )\n};\n\nexport default OverloadedDialog;\n","import React from \"react\";\nimport {createUseStyles, ThemeProvider} from \"react-jss\";\nimport MediaQuery from \"react-responsive\";\nimport IntercomButton from \"./components/menu/IntercomButton\";\nimport Menu from \"./components/menu/Menu\";\nimport MapComponent from \"./components/map/MapComponent\";\nimport LimitReached from \"./components/menu/LimitReached\";\nimport OverloadedDialog from \"./components/menu/OverloadedDialog\";\nimport {useMonthlyLimit, useOverloaded} from \"./utils/hooks\";\n\nconst theme = {\n colorPrimary: \"#04a2b0\",\n colorGray: \"gray\",\n backgroundPrimary: \"#ffffff\",\n colorText: \"#444444\",\n colorSelected: \"#f2f2f2\",\n colorWarning: \"red\",\n colorInactive: \"#d9d7d7\",\n borderRadius: \"0.25rem\",\n defaultBorder: \"1px solid\",\n isIE11:\n navigator &&\n navigator.userAgent &&\n navigator.userAgent.indexOf(\"Trident\") !== -1\n};\n\nconst useStyles = createUseStyles({\n \"@global\": {\n html: {\n fontSize: \"14px\",\n boxSizing: \"border-box\"\n },\n body: {\n margin: \"0\",\n padding: \"0\",\n fontFamily: [\"Palanquin\", \"sans-serif\"],\n fontWeight: \"500\",\n WebkitFontSmoothing: \"antialiased\",\n MozOsxFontSmoothing: \"grayscale\"\n }\n },\n wrapper: {\n \"@media(min-width: 60rem)\": {\n display: \"flex\",\n boxSizing: \"border-box\"\n }\n },\n menu: {\n \"@media(min-width: 60rem)\": {\n flex: \"0 0 30rem\",\n position: \"relative\",\n zIndex: \"2\",\n overflow: \"hidden\"\n }\n },\n map: {\n \"@media(min-width: 60rem)\": {\n flex: \"0 1 100%\",\n position: \"relative\",\n zIndex: \"1\"\n }\n }\n});\n\nconst App = () => {\n const classes = useStyles();\n const limitReached = useMonthlyLimit();\n const overloaded = useOverloaded();\n\n \n return (\n \n
\n
\n \n
\n \n \n
\n {!limitReached && }\n
\n
\n {limitReached && }\n {overloaded && }\n
\n
\n );\n};\n\nexport default App;\n","import \"core-js/stable\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {Provider} from \"react-redux\";\nimport {Router, Route, Switch} from \"react-router-dom\";\nimport {createBrowserHistory} from \"history\";\nimport {CookiesProvider} from \"react-cookie\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport configureStore from \"./redux/configureStore\";\nimport App from \"./App\";\n\nrequire(\"isomorphic-fetch\");\n\nconst store = configureStore();\nconst history = createBrowserHistory();\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n ,\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: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import {\n SET_OVERLOADED\n} from \"../actions/overloadedActions\";\n\nconst initState = {\n overloaded: false\n}\n\nexport const overloadedReducer = (state = initState, {type, payload}) => {\n switch (type) {\n case SET_OVERLOADED:\n return {\n overloaded: payload.value\n };\n default:\n return state;\n }\n};","import {combineReducers} from \"redux\";\nimport {formDataReducer} from \"./reducers/formDataReducer\";\nimport {submittedFormDataReducer} from \"./reducers/submittedFormDataReducer\";\nimport {autoCompleteReducer} from \"./reducers/autoCompleteReducer\";\nimport {resultOptionsReducer} from \"./reducers/resultOptionsReducer\";\nimport {tollStationsReducer} from \"./reducers/tollStationsReducer\";\nimport {resultReducer} from \"./reducers/resultReducer\";\nimport {vehicleOptionsReducer} from \"./reducers/vehicleOptionsReducer\";\nimport {geolocationReducer} from \"./reducers/geolocationReducer\";\nimport {monthlyLimitReducer} from \"./reducers/monthlyLimitReducer\";\nimport {overloadedReducer} from \"./reducers/overloadedReducer\";\n\nconst rootReducer = combineReducers({\n autoComplete: autoCompleteReducer,\n formData: formDataReducer,\n submittedFormData: submittedFormDataReducer,\n resultOptions: resultOptionsReducer,\n tollStations: tollStationsReducer,\n result: resultReducer,\n vehicleOptions: vehicleOptionsReducer,\n geolocation: geolocationReducer,\n monthlyLimit: monthlyLimitReducer,\n overloaded: overloadedReducer\n});\n\nexport default rootReducer;","import {\n SET_AUTOCOMPLETE,\n RESET_AUTOCOMPLETE\n} from \"../actions/autoCompleteActions\";\n\nexport const autoCompleteReducer = (state = {}, {type, payload}) => {\n switch (type) {\n case SET_AUTOCOMPLETE:\n if (state[payload.id] !== undefined) {\n const newState = {...state};\n newState[payload.id] = payload.data;\n return newState;\n }\n return {\n ...state,\n [payload.id]: payload.data\n };\n\n case RESET_AUTOCOMPLETE:\n return {\n ...state,\n [payload.id]: []\n };\n default:\n return state;\n }\n};","import {\n SET_FROM,\n SET_TO,\n ADD_VIA,\n REMOVE_VIA,\n SET_WEIGHTCLASS,\n SET_BIGVEHICLETYPE,\n SET_SMALLVEHICLETYPE,\n SET_ROUNDTRIP,\n SET_FORMDATA\n} from \"../actions/formDataActions\";\nimport {vehicleOptionsCookie} from \"../../utils/cookies\";\n\nconst initialState = () => {\n const {\n getWeightClass,\n getSmallVehicleType,\n getBigVehicleType\n } = vehicleOptionsCookie();\n\n return {\n from: \"\",\n to: \"\",\n via: [],\n weightClass: getWeightClass(),\n smallVehicleType: getSmallVehicleType(),\n bigVehicleType: getBigVehicleType(),\n roundTrip: \"0\"\n };\n};\n\nconst setFrom = (state, payload) => {\n return {\n ...state,\n from: payload\n };\n};\n\nconst setTo = (state, payload) => {\n return {\n ...state,\n to: payload\n };\n};\n\nconst addVia = (state, payload) => {\n if (state.via.find(el => el.inputId === payload.inputId)) {\n return {\n ...state,\n via: state.via.map(el => {\n if (el.inputId === payload.inputId) {\n return payload;\n }\n return el;\n })\n }\n }\n return {\n ...state,\n via: state.via.concat(payload)\n }\n};\n\nconst removeVia = (state, payload) => {\n return {\n ...state,\n via: state.via.filter(el => el.inputId !== payload)\n }\n};\n\nconst setWeightClass = (state, payload) => {\n const {setWeightClassCookie} = vehicleOptionsCookie();\n if (payload === null) return state;\n setWeightClassCookie(payload);\n return {\n ...state,\n weightClass: payload\n };\n};\n\nconst setSmallVehicleType = (state, payload) => {\n const {setSmallVehicleTypeCookie} = vehicleOptionsCookie();\n if (payload === null) return state;\n setSmallVehicleTypeCookie(payload);\n return {\n ...state,\n smallVehicleType: payload\n };\n};\n\nconst setBigVehicleType = (state, payload) => {\n const {setBigVehicleTypeCookie} = vehicleOptionsCookie();\n if (payload === null) return state;\n setBigVehicleTypeCookie(payload);\n return {\n ...state,\n bigVehicleType: payload\n };\n};\n\nconst setRoundTrip = (state, payload) => {\n return {\n ...state,\n roundTrip: payload ? \"1\" : \"0\"\n };\n};\n\nexport const formDataReducer = (state = initialState(), {type, payload}) => {\n switch (type) {\n case SET_FROM:\n return setFrom(state, payload);\n case SET_TO:\n return setTo(state, payload);\n case ADD_VIA:\n return addVia(state, payload);\n case REMOVE_VIA:\n return removeVia(state, payload);\n case SET_WEIGHTCLASS:\n return setWeightClass(state, payload);\n case SET_SMALLVEHICLETYPE:\n return setSmallVehicleType(state, payload);\n case SET_BIGVEHICLETYPE:\n return setBigVehicleType(state, payload);\n case SET_ROUNDTRIP:\n return setRoundTrip(state, payload);\n case SET_FORMDATA:\n return payload;\n default:\n return state;\n }\n};","import {SET_SUBMITTEDFORMDATA} from \"../actions/submittedFormDataActions\";\n\nexport const submittedFormDataReducer = (\n state = {\n from: null,\n to: null,\n via: [],\n weightClass: null,\n smallVehicleType: null,\n bigVehicleType: null,\n roundTrip: null\n },\n {type, payload}\n) => {\n switch (type) {\n case SET_SUBMITTEDFORMDATA:\n return payload;\n default:\n return state;\n }\n};\n","import {\n SET_AUTOPASS,\n SET_RUSHTID\n} from \"../actions/resultOptionsActions\";\n\nexport const resultOptionsReducer = (\n state = {\n autopass: true,\n rushtid: false\n },\n {type, payload}\n) => {\n switch (type) {\n case SET_AUTOPASS:\n return {\n ...state,\n autopass: payload\n };\n case SET_RUSHTID:\n return {\n ...state,\n rushtid: payload\n };\n default: \n return state;\n }\n}","import {\n SET_TOLLSTATIONS,\n SET_VISIBLETOLLSTATIONS\n} from \"../actions/tollStationsActions\";\n\nexport const tollStationsReducer = (state = [], {type, stations}) => {\n switch (type) {\n case SET_TOLLSTATIONS:\n return stations;\n case SET_VISIBLETOLLSTATIONS:\n return state.map(station => {\n if (\n stations.find(el => {\n return station.Navn === el.Navn;\n }) !== undefined\n ) {\n return {\n ...station,\n Visible: true\n };\n }\n return {\n ...station,\n Visible: false\n };\n });\n default:\n return state;\n }\n};\n","import {\n SET_RESULT,\n SET_RESULT_LOADING,\n SELECT_ROUTE\n} from \"../actions/resultActions\";\n\nexport const resultReducer = (state = {}, {type, payload}) => {\n switch (type) {\n case SET_RESULT:\n return {\n ...state,\n ...payload\n }\n case SET_RESULT_LOADING:\n return {\n ...state,\n loading: payload\n }\n case SELECT_ROUTE:\n return {\n ...state,\n Tur: state.Tur.map((route, index) => {\n return {\n ...route,\n Selected: payload === index\n };\n })\n };\n default:\n return state;\n }\n};\n\n","import {SET_VEHICLEOPTIONS} from \"../actions/vehicleOptionsActions\";\n\nexport const vehicleOptionsReducer = (state = {}, {type, vehicleOptions}) => {\n switch (type) {\n case SET_VEHICLEOPTIONS:\n return vehicleOptions;\n default:\n return state;\n }\n};\n","import {SET_GEOLOCATION} from \"../actions/geolocationActions\";\nimport positionConfig from \"../../config/positionConfig\";\n\nexport const geolocationReducer = (\n state = positionConfig.default,\n {type, location}\n) => {\n switch (type) {\n case SET_GEOLOCATION:\n return positionConfig[location];\n default:\n return state;\n }\n};","import {\n SET_MONTHLY_COUNT,\n SET_MONTHLY_LIMIT_REACHED\n} from \"../actions/monthlyLimitActions\";\n\nexport const monthlyLimitReducer = (\n state = {\n month: null,\n monthlyCount: 0,\n limit: 5,\n limitReached: false\n },\n {type, payload}\n) => {\n switch (type) {\n case SET_MONTHLY_COUNT: {\n const {month, count} = payload;\n return {\n ...state,\n month,\n monthlyCount: count\n };\n }\n case SET_MONTHLY_LIMIT_REACHED:\n return {\n ...state,\n limitReached: true\n };\n default:\n return state;\n }\n};\n","import {createStore, applyMiddleware} from \"redux\";\nimport thunkMiddleware from \"redux-thunk\";\nimport rootReducer from \"./rootReducer\";\n\nexport default function configureStore(initialState) {\n return createStore(\n rootReducer,\n initialState,\n applyMiddleware(thunkMiddleware)\n );\n}\n","export const SET_OVERLOADED = \"SET_OVERLOADED\";\n\nexport const setOverloaded = (value) => {\n return {\n type: SET_OVERLOADED,\n payload: {value}\n };\n};","import {\n getMonthlyCountCookie,\n setMonthlyCountCookie\n} from \"../../utils/cookies\";\n\nexport const SET_MONTHLY_COUNT = \"SET_MONTHLY_COUNT\";\nexport const SET_MONTHLY_LIMIT_REACHED = \"SET_MONTHLY_LIMIT_REACHED\";\n\nexport const setMonthlyCount = (month, count) => {\n return {\n type: SET_MONTHLY_COUNT,\n payload: {month, count}\n };\n};\n\nexport const setMonthlyLimitReached = () => {\n return {\n type: SET_MONTHLY_LIMIT_REACHED\n };\n};\n\nexport const initMonthlyCount = () => {\n return async (dispatch, getState) => {\n const {\n monthlyLimit: {limit}\n } = getState();\n\n const [count, month] = getMonthlyCountCookie();\n const date = new Date();\n const currentMonth = date.getMonth();\n\n if (month !== currentMonth) {\n setMonthlyCountCookie(0);\n dispatch(setMonthlyCount(currentMonth, 0));\n } else {\n dispatch(setMonthlyCount(currentMonth, count));\n\n if (count >= limit) {\n dispatch(setMonthlyLimitReached(true));\n }\n }\n };\n};\n\nexport const addMonthlyCount = () => {\n return async dispatch => {\n const [count, month] = getMonthlyCountCookie();\n setMonthlyCountCookie(count + 1);\n dispatch(setMonthlyCount(month, count + 1));\n };\n};\n"],"sourceRoot":""}