{"version":3,"sources":["assets/img/scb_logo_svart.svg","assets/img/scb_logo_vit.svg","assets/img/stripes.svg","assets/img/stripesBlue.svg","assets/img/onion.png","assets/img/startPageIllustration.svg","assets/img/population.svg","assets/img/location.svg","assets/img/accomodation.svg","assets/img/wallet.svg","assets/img/tax.svg","assets/img/spinner.svg","assets/img/SCB-logo_sv.png","assets/img/scb_logo_vit.png","Util/Breakpoints.js","Util/StyleProps.js","Util/Colors.js","Components/Header/MainNav.js","Components/Header/Header.js","Components/Layout/BlockLayout.js","Components/Footer/Footer.js","Components/StartPage/StartPage.js","Components/Layout/SvgLayout.js","Helpers/CommonHelper.js","Components/Header/ComponentHeader.js","Components/Elements/LinePathSvg.js","Components/Elements/BubbleSvg.js","Components/Charts/SingleBarSvg.js","Components/Charts/DoubleBarSvg.js","Components/Elements/EmptySpace.js","Components/Birthplace/BirthPlaceContainer.js","Components/Elements/IconPath.js","Components/Elements/KeyFigureNew.js","Components/Elements/BubbleFlexSvg.js","Components/Charts/HighChartLineChart.js","Components/Population/FigureBoxPopulation.js","Components/Population/PopulationChange.js","Components/Population/PopulationContainer.js","Components/Elements/KeyFigureBig.js","Components/Age/AgeContainer.js","Components/Elements/Pattern.js","Components/Charts/PieChart.js","Providers/AnimationFrame.js","Components/Gender/GenderContainer.js","data/kommuner.js","LatLongConverter/geodesi/gausskruger.js","data/GeoApi.js","Components/MunicipalitySelector/Message.js","Components/MunicipalitySelector/MunicipalitySelector.js","Components/Elements/SectionImageBetween.js","Components/Elements/SurfaceArea.js","Components/Elements/KeyFigure.js","Components/LandSize/LandSizeContainer.js","Components/LandUse/LandUseContainer.js","Components/PopulationLocation/PopulationLocationContainer.js","Components/Api/Api.js","Components/Income/IncomeContainer.js","Components/EmplomentExtent/EmplomentExtentContainer.js","Components/Charts/SingleBarSvgLargeBubble.js","Components/Accommodation/AccommodationContainer.js","Components/LivingCondition/LivingConditionContainer.js","Components/Charts/DoubleBarSvgOLD.js","Components/TaxRate/TaxRateContainer.js","Components/Election/ElectionContainer.js","Components/Elements/KeyFigureLink.js","Components/EndComponent/EndComponent.js","Components/Spinner/Spinner.js","Components/Spinner/SpinnerBlock.js","Components/Layout/PageLayout.js","App.js","serviceWorker.js","index.js","assets/img/stork.png"],"names":["module","exports","size","device","mobileS","mobileM","mobileL","tabletS","tablet","laptop","laptopL","desktop","desktopL","drukText","Heading1","styled","h1","props","fontSize","lineHeight","color","fontSizeTablet","lineHeightTablet","Heading2","h2","HeadingMunicipality","attrs","tabIndex","marginTop","marginBottom","Heading6","h6","SubtitleBlock","Caption","p","paddingLeft","CaptionForeignObject","foreignObject","FiguresWrapper","div","maxWidth","Line","hr","HorizontalLine","scaleInBottomBubbleDouble","keyframes","scaleInFigure","drawLine","circleTransition","rotate360CW","rotate360CCW","Wrapper","Logo","img","MainNav","useState","Navbar","expand","Brand","href","aria-label","src","logoSvg","alt","Nav","Link","className","HeaderWrapper","header","Header","BlockLayout","children","background","paddingTop","paddingBottom","paddingRight","height","Container","fluid","style","defaultProps","sectionPopulationColor","FooterWrapper","footer","Text","Navigation","nav","a","Footer","StartPage","SvgWrapper","width","center","margin","marginLeft","SvgLayout","useTabIndex","ariaLabel","ariaHidden","aria-hidden","calculatePercentage","partialValue","total","dec","parseFloat","Number","toFixed","numberWithSpaces","x","toString","replace","Sign","value","isCurrentYear","year","date","Date","getFullYear","ArrowValue","pop","Math","sign","createMarkup","text","__html","periodToComma","num","valuePairToPercent","obj","keys","parseInt","value1","value2","pstring1","pstring2","getBrowserQueryParams","qd","id1","id2","window","location","search","substr","split","forEach","item","s","k","v","decodeURIComponent","push","ComponentHeader","heading","dangerouslySetInnerHTML","LinePath","lineType","y","transform","d","fillOpacity","stroke","strokeMiterlimit","fadeInAnimation","fadeIn","Bubble","g","circle","triggerAnimation","delay","BarCircleValue","BubbleSvg","rx","label","hasBackground","fixedValue","valueOffset","percent","length","Fragment","cx","cy","r","slideInAnimation","slideInUp","Svg","svg","G","Rect","rect","SingleBarSvg","title","titleId","caption","desc","descId","topSpace","maxOffset","hasBubbleBg","percentageString","scaleLinear","domain","nice","range","Col","xs","padding","viewBox","aria-labelledby","id","fill","DoubleBarSvg","indexDelays","ariaId","captions","firstValue","secondValue","maxIsEven","index","EmptySpace","scroll","onClick","SvgIcon","ArrowUpward","BirthPlaceContainer","swedenArr","swedenString","data","sweden","blockColor","useInView","threshold","triggerOnce","ref","inView","valueData","valueArr","lastYear","birthplace","i","municipality1","municipality2","max","indexOf","municipality","str","name","svgAriaLabel","idx","hasLine","IconPath","iconName","Span","span","FigureWrapper","Figure","Icon","KeyFigureNew","unit","subText","xmlns","BubbleContainer","ValueText","setFontSize","LabelBottom","BubbleFlexSvg","isPercent","viewBoxWidth","viewBoxHeight","hasComma","includes","HighChartLineChart","lines","startpoint","key","hasOwnProperty","currentpopulation","values","slice","dotted","line","Highcharts","setOptions","lang","numericSymbols","chart","borderColor","plotBorderWidth","plotBorderColor","plotShadow","type","xAxis","lineColor","visible","lineWidth","labels","fontFamily","tickLength","startOnTick","endOnTick","showFirstLabel","showLastLabel","yAxis","min","gridLineColor","plotOptions","series","shadow","marker","enabled","symbol","radius","states","hover","HighchartsChart","Chart","XAxis","map","linedata","Series","dashStyle","pointStart","Tooltip","YAxis","Legend","align","FigureBoxPopulation","borderBottom","PopulationChange","populationchangedata","lastYearPop","population","years","popDiff","municipality1Change","municipality2Change","noWrapPopulation","noWrapDiff","ariaLabelPopChange","municipalityChange","abs","PopulationContainer","h3","KeyFigureBig","AgeContainer","age","swedenMedium","female","male","patternElements","stripes","stripesBlue","Pattern","rotation","patternId","patternUnits","xlinkHref","Path","path","Arcs","strokeWidth","strokeColor","strokeLinejoin","transitionTimingFunction","transitionDuration","ceil","reduce","prev","current","angleStart","angleEnd","animationFrame","trigger","animCount","React","setFrame","animationEasing","t","animationLoop","requestAnimationFrame","cancelAnimationFrame","useEffect","useAnimationFrame","isLarge","angle","x1","cos","PI","y1","sin","x2","y2","pathdata","PieChart","bgRotation","hasBg","find","GenderContainer","gender","pstring","GenderBlock","maxIsFemale","Row","textAlign","getMunicipalityName","municipalities","m","hasMunicipalityName","axis","flattening","central_meridian","scale","false_northing","false_easting","grs80_params","bessel_params","sweref99_params","geodetic_to_grid","latitude","longitude","x_y","Array","e2","n","a_roof","A","B","C","D","beta1","beta2","beta3","beta4","deg_to_rad","phi","lambda","lambda_zero","phi_star","pow","delta_lambda","xi_prim","atan","tan","eta_prim","log","math_cosh","math_sinh","round","exp","findUsersMunicipality","lat_lon","convertLatAndLongToSweRef","getMunicipalityCode","then","response","isArray","features","findUsersMunicipalityObject","UserException","catch","error","message","municipalitySelector","secondElement","splice","your_position","concat","unshift","projection","query","geometri","crs","properties","coordinates","buffer","process","axios","method","url","headers","Accept","Authorization","console","getCurrentPosition","options","Promise","resolve","reject","navigator","geolocation","checkPermission","permissions","state","MessageBox","show","backgroundColor","Heading","Message","messageBoxRef","useRef","focus","handleClickMessageBox","municipalitySelectorDefault","TextFieldWrapper","ButtonWrapper","MunicipalityWrapper","MunicipalitySelector","preloadMuncicipality","fetchMunicipalityData","getUsersGeoMuncicipality","coords","updateMunicipalityUrl","municipalityid2","setState","hasAcceptedGeoTracking","municipalityid1","municipalityname1","userCurrentMuncipality","msg","code","PERMISSION_DENIED","POSITION_UNAVAILABLE","UNKNOWN_ERROR","hasmessage","checkIfUserHasAcceptedGeoTracking","datahandler","m1","m2","history","pushState","newurl","protocol","host","pathname","onMunicipalityChange1","event","object","municipalityName1","onMunicipalityChange2","municipalityname2","userCurrentMuncipality2","municipalityName2","requestedMunicipalities","bind","toogleGeoPosition","isSafari","test","userAgent","this","refMunicipalitySelector","Form","Label","Autocomplete","onChange","classes","getOptionLabel","option","getOptionDisabled","filterOptions","createFilterOptions","matchFrom","stringify","renderInput","params","TextField","placeholder","fullWidth","Button","disabled","Component","withStyles","root","alignContent","marginRight","SectionImageBetween","topcolor","bottomcolor","Image","image","triggeranimation","fadeInUp","IconWrapper","SubText","KeyFigure","municipalityname","icon","component","h4","LandUseContainer","forestPercentage","agriculturePercentage","settelmentPercentage","otherPercentage","yearSweden","landuse","forest","agriculture","settlements","other","PopulationLocationContainer","populationLocation","api","create","baseURL","getMunicipalityData","get","asyncGetMunicipalityData","response_data","populationChange","genderAge","landUse","income","emplomentExtent","accommodation","livingCondition","taxRate","election","filter","Boolean","muni","municipality_data","getRequestedMunicipalities","bp","munObj","IncomeContainer","lastYearsIncome","montelyincome","lastYearSweden","noWrapIncome","EmplomentExtentContainer","emplomentextent","men_and_women_in_work","swedenWomen","women_in_work","swedenMen","men_in_work","women_and_men_in_work","valuePercentage","valueString","rectangleWidth","AccommodationContainer","averagePrice","SingleBarSvgLargeBubble","amount","LivingConditionContainer","cohabitingPercentage","singlePercentage","livingcondition","cohabiting","single","TaxRateContainer","swedenTaxRate","taxrate","ElectionContainer","lastElectionYear","electionvalue","KeyFigureLink","onClickFunction","target","EndWrapper","EndComponent","Spinner","Spin","counterClockwise","SpinnerBlock","InfoText","SpinnerSvg","AppTitle","blocksHaveData","blocks","count","arr","some","isNullorEmpty","PageLayout","populationdata","montelyincomedata","municipalityselection","agedata","landusedata","populationLocationdata","genderdata","accommodationdata","genderAgeData","birthplacedata","emplomentextentdata","isLoadingData","livingconditiondata","taxratedata","electiondata","blockArray","municipalityRef","Object","flat","preventDefault","scrollIntoView","behavior","setTimeout","querySelector","allBlocksHaveData","populationSvg","locationSvg","walletSvg","accommodationSvg","taxSvg","startPageSvg","smoothscroll","polyfill","App","municipalities_data","e","Api","all_population_change_data","hostname","match","ReactDOM","render","document","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.461f8078.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/scb_logo_svart.70afa1db.svg\";","module.exports = __webpack_public_path__ + \"static/media/scb_logo_vit.f94c92bc.svg\";","module.exports = __webpack_public_path__ + \"static/media/stripes.06f83840.svg\";","module.exports = __webpack_public_path__ + \"static/media/stripesBlue.53c40a62.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/startPageIllustration.3e37a47b.svg\";","module.exports = __webpack_public_path__ + \"static/media/population.15f2b8d6.svg\";","module.exports = __webpack_public_path__ + \"static/media/location.58c60f7e.svg\";","module.exports = __webpack_public_path__ + \"static/media/accomodation.b0a9fb6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/wallet.fef3876a.svg\";","module.exports = __webpack_public_path__ + \"static/media/tax.e7d52b1a.svg\";","module.exports = __webpack_public_path__ + \"static/media/spinner.07bacb53.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADUAAAA8CAYAAADG6fK4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZFRUQ1NUI4RDY2QjExRTdCMUZDRDY5QjQ4QTk3OTMzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZFRUQ1NUI3RDY2QjExRTdCMUZDRDY5QjQ4QTk3OTMzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzMzODE5NTZCRDZFNzExOEQ5REZBMjYzRUM0QUIzRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpB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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABFCAYAAAAW0YV7AAAACXBIWXMAAACqAAAAqgEGCnBPAAAEDElEQVR4nO2b0XGbQBBAnxn/4w6kVCClAisV2B2YDqIOgjsgFQRXELsD3AHqAHUgV3D5WC5BMtyeEIeIRm/G4xkBp13d3t7uHntjjGEE5sAaWAGLg2sfQAG8AnlwSYwxIf/ujDGvxp+dMeYxpEw3AWd4icxc3OPZFyAZUhhLFGJQxIQL+ikL8ARkQwnTJJTCKf2VtXxH1vyghFB4jsyQiy3w7jFWcqowh9x2fH4HPCLrcNn4fAeUiEctO56dK9/5Xo+9q///dtxrx1rWMvlS1uN/psWr5p4etTLGJC2ecK08d+iFS+V+POVpky81otPf72ua9CNQoZujZQb8Qma7+etrM3H4y7fPxOnMgB/IbP+1UquwNa0+juYB8chTZYbItwRR+I7TI5wF4pmnSkxtiRHiCV0zuwWekWDAxZrjHMvYzIDkFjFnFytkbVu61njMvkcfiw8kSJmj+58kwr2NvLOvbK4MeA6FS2Q5JcBX5d5FhEz1UJzbpEuUgCZUaDlZNIWrMYQYE03hUEHB2dAUPocTCsp1DV86msL3o0gxIhESOrq4qHUcoW89Wuj5XxHRXbmwrMcQZCwi9Fw25oKUvkXyxC3umDrFL2fecXw87bKwwQMfW8TLkXJIF3aWU+BGGTM9UoZRrcduSxmSV7r4gV6RnAIuC3uzCu/w+6Xzk8UJS8Lnw7omWTPwyIGNMuA9gc58TsCeYZVIFbWLn0BxGGn5zHLG+RP9JjEyEa6ZfabW7VDhAr1YFxPooCsAW+ALDUfaFkuv0R3YEwEOugKwV5OGdoV3+K3TfAiJRsAqvYLubOkV/XRvxrSL7032CvFdJPjtzefOpjbAt/rvzXFfDKQuhSv8ZjD3FCwUO8RkCySzc1nmo1YAyJQBQLaDKSUXhePazKfEk6Cbdsq09uZOfBSu0E07ZnoRWCu3iKDzjusVskYzxGxdKWRCv4Ako9vx2dciBsMq3FWse+efU0pxx6qu0M7F0vH9g3NMmTZHL/iteksyEsfWpYsQQozJVWGFSrm+6ifGeFyPWi6dq8KXzlXhS+eq8KVzVfgCWLku+ry21KxkOAfjPO91WfnmSEbnTDW7eh4sMZIw2CT9u3J/yfjx9ALwbb7aROhVxwWS+GvK2pa6KZNZhbXE3od0gDFCsgHyZs+DVpl08cK/elah3NusUd3hLuRrx7e+bLBLrdHisvRoqWkjNfttOXOPZ/L6uUq579X0b+OxZKbRytPWbJkg5qm9OP5S31e1XCsYpjD3rR6rTz9FWT+7t3O4ukuXiBkcflHrQC3PFpzWf/hGgJfiQrbTJrjLui7smht8Xw8ZaeVI08WxjucZsZAgQUzIGW6SIOb50HF9i5zfZgRuOxhL4SaH4Wp3J2gA/gB4qTnQpsGtXQAAAABJRU5ErkJggg==\"","export const size = {\r\n mobileS: 320,\r\n mobileM: 375,\r\n mobileL: 425,\r\n tabletS: 600,\r\n tablet: 768,\r\n laptop: 1024,\r\n laptopL: 1440,\r\n desktop: 2560\r\n};\r\n\r\nexport const device = {\r\n mobileS: `(min-width: ${size.mobileS}px)`,\r\n mobileM: `(min-width: ${size.mobileM}px)`,\r\n mobileL: `(min-width: ${size.mobileL}px)`,\r\n tabletS: `(min-width: ${size.tabletS}px)`,\r\n tablet: `(min-width: ${size.tablet}px)`,\r\n laptop: `(min-width: ${size.laptop}px)`,\r\n laptopL: `(min-width: ${size.laptopL}px)`,\r\n desktop: `(min-width: ${size.desktop}px)`,\r\n desktopL: `(min-width: ${size.desktop}px)`\r\n};\r\n","import styled, { keyframes } from \"styled-components\";\r\nimport { device } from \"./Breakpoints\";\r\nimport { secondaryColor } from \"./Colors\";\r\n\r\n// Max width that defines the block size (and for footer header)\r\nexport const maxWidthBlock = \"900px\";\r\n\r\n//Font Sizes\r\nexport const headingSmall = \"30px\";\r\nexport const headingMedium = \"52px\";\r\nexport const headingLarge = \"80px\";\r\n\r\nexport const fontSizeXS = \"10px\";\r\nexport const fontSizeSmall = \"12px\";\r\nexport const fontSizeMedium = \"14px\";\r\nexport const fontSizeMobile = \"16px\";\r\nexport const fontSizeTablet = \"18px\";\r\n\r\n// Font Line-Height\r\nexport const lineheightHeadingSmall = \"36px\";\r\nexport const lineheightHeadingMedium = \"58px\";\r\nexport const lineheight34 = \"34px\";\r\nexport const lineheight68 = \"68px\";\r\nexport const lineheightSmall = \"26px\";\r\nexport const lineheightMedium = \"30px\";\r\nexport const lineheightCaption = \"18px\";\r\n\r\n// letter spacing\r\nexport const letterSpacingDruk = \"-.025em\";\r\nexport const letterSpacingPT_serif = \"-.015em\";\r\n\r\n//Fonts\r\nexport const roboto = \"Roboto\";\r\nexport const ptSerif = \"PT serif\";\r\nexport const drukText = \"Druk Text Web\";\r\n\r\n// Headings PT Serif\r\n\r\nexport const Heading1 = styled.h1`\r\n font-family: ${ptSerif}\r\n letter-spacing: ${letterSpacingPT_serif};\r\n font-size: ${props => (props.fontSize ? props.fontSize : headingSmall)}\r\n line-height: ${props =>\r\n props.lineHeight ? props.lineHeight : lineheightHeadingSmall}\r\n font-weight:bold;\r\n color: ${props => (props.color ? props.color : secondaryColor)}; \r\n\r\n @media${device.tablet} {\r\n font-size:${props =>\r\n props.fontSizeTablet ? props.fontSizeTablet : headingMedium};\r\n line-height: ${props =>\r\n props.lineHeightTablet\r\n ? props.lineHeightTablet\r\n : lineheightHeadingMedium};\r\n }\r\n`;\r\n\r\nexport const Heading2 = styled.h2`\r\n color: ${props => (props.color ? props.color : secondaryColor)}; \r\n padding-top:20px;\r\n font-size: 20px;\r\n font-family: ${ptSerif}\r\n line-height: 28px;\r\n font-style: normal;\r\n font-weight: bold;\r\n`;\r\n\r\n// Headings roboto Municipality\r\nexport const HeadingMunicipality = styled.h2.attrs({\r\n tabIndex: props => (props.tabIndex ? props.tabIndex : \"0\")\r\n})`\r\n color: ${props => (props.color ? props.color : secondaryColor)};\r\n font-family: ${roboto};\r\n font-weight: bold;\r\n font-size: ${fontSizeTablet};\r\n line-height: ${lineheightMedium};\r\n margin: 0;\r\n margin-top: ${props => (props.marginTop ? props.marginTop : 0)}\r\n margin-bottom: ${props => (props.marginBottom ? props.marginBottom : 0)};\r\n`;\r\n\r\nexport const Heading6 = styled.h6`\r\n color: ${props => (props.color ? props.color : secondaryColor)};\r\n font-family: ${roboto};\r\n font-weight: 400 !important;\r\n font-size: ${fontSizeMobile};\r\n line-height: ${lineheightSmall};\r\n margin: 0;\r\n`;\r\n\r\n// Block\r\n\r\nexport const SubtitleBlock = styled.h2`\r\n font-family: ${roboto}\r\n font-size: ${fontSizeMobile}\r\n line-height:${lineheightSmall}\r\n font-weight: 400 !important;\r\n padding-top: 5px;\r\n\r\n @media${device.tablet} {\r\n font-size: ${fontSizeTablet};\r\n line-height: ${lineheightMedium}\r\n }\r\n`;\r\n\r\n// Captions\r\nexport const Caption = styled.p`\r\n color: ${props => (props.color ? props.color : secondaryColor)};\r\n font-family: ${roboto};\r\n font-weight: normal;\r\n font-size: ${fontSizeSmall}\r\n margin-top: 2px;\r\n padding-top: 2px;\r\n padding-left: ${props => (props.paddingLeft ? props.paddingLeft : \"0\")};\r\n\r\n @media${device.tablet} {\r\n font-size: ${fontSizeMedium}\r\n }\r\n`;\r\n\r\nexport const CaptionForeignObject = styled.foreignObject`\r\n fill: ${props => (props.color ? props.color : secondaryColor)};\r\n font-family: ${roboto};\r\n font-weight: bold;\r\n font-size: 7px;\r\n padding-top:2px;\r\n\r\n @media${device.mobileM} {\r\n font-size:6px;\r\n }\r\n @media${device.mobileL} {\r\n font-size:5px;\r\n }\r\n\r\n &> span {\r\n display: inline-block;\r\n \r\n @media${device.mobileL} {\r\n display: inline;\r\n }\r\n }\r\n`;\r\n\r\nexport const FiguresWrapper = styled.div`\r\n display: flex;\r\n max-width: ${props => (props.maxWidth ? props.maxWidth : \"100%\")};\r\n margin-top: ${props => (props.marginTop ? props.marginTop : 0)}\r\n margin-bottom: ${props => (props.marginBottom ? props.marginBottom : 0)};\r\n`;\r\n\r\nexport const Line = styled.hr`\r\n height: auto;\r\n border-left: 1px dashed ${secondaryColor};\r\n margin: 0;\r\n margin-top: ${props => (props.marginTop ? props.marginTop : \"6px\")};\r\n margin-bottom: ${props => (props.marginBottom ? props.marginBottom : \"0px\")};\r\n opacity: 0.4;\r\n`;\r\n\r\nexport const HorizontalLine = styled.hr`\r\n height: auto;\r\n border-bottom: 1px dashed ${secondaryColor};\r\n margin: 0;\r\n margin-top: ${props => (props.marginTop ? props.marginTop : \"0px\")};\r\n margin-bottom: ${props => (props.marginBottom ? props.marginBottom : \"0px\")};\r\n opacity: 0.4;\r\n`;\r\n//Components images\r\n\r\nexport const scaleInBottomBubble = keyframes`\r\n from {\r\n transform: scale(0);\r\n transform-origin: 50% 50%;\r\n opacity: 1;\r\n }\r\n to {\r\n transform: scale(1);\r\n transform-origin: 50% 50%;\r\n opacity: 1;\r\n }\r\n `;\r\n\r\nexport const scaleInBottomBubbleDouble = keyframes`\r\n from {\r\n transform: scale(0);\r\n transform-origin: 25% 50% 0;\r\n opacity: 1;\r\n }\r\n to {\r\n transform: scale(1);\r\n transform-origin: 25% 50% 0;\r\n opacity: 1;\r\n }\r\n `;\r\n\r\nexport const scaleInBottomLine = keyframes`\r\n from {\r\n transform: translateY(0) scaleY(0);\r\n opacity: 1;\r\n }\r\n to {\r\n transform: translateY(0) scaleY(1);\r\n opacity: 1;\r\n }\r\n`;\r\n\r\nexport const scaleInFigure = keyframes`\r\nfrom {\r\n transform: scale(0);\r\n transform-origin: 25% 50% 0;\r\n opacity: 1;\r\n}\r\nto {\r\n transform: scale(1);\r\n transform-origin: 25% 50% 0;\r\n opacity: 1;\r\n}\r\n`;\r\n\r\nexport const drawLine = keyframes`\r\n from {\r\n stroke-dashoffset: -20;\r\n }\r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n`;\r\n\r\nexport const circleTransition = keyframes`\r\n from {\r\n r: 0px;\r\n }\r\n to {\r\n r: 20px;\r\n }\r\n`;\r\n\r\nexport const slideUp = keyframes`\r\nfrom: {\r\n transform: translate3d(0, '100%', 0),\r\n visibility: 'visible'\r\n},\r\nto: {\r\n transform: translate3d(0, 0, 0)\r\n}\r\n`;\r\n\r\nexport const dash = keyframes`\r\nfrom: {\r\n stroke-dashoffset: 0%;\r\n} to: {\r\n stroke-dashoffset: 100%;\r\n}\r\n`;\r\n\r\nexport const rotate360CW = keyframes`\r\nfrom {\r\n transform: rotate(0deg);\r\n}\r\nto {\r\n transform: rotate(360deg);\r\n}\r\n`;\r\n\r\nexport const rotate360CCW = keyframes`\r\nfrom {\r\n transform: rotate(0deg);\r\n}\r\nto {\r\n transform: rotate(-360deg);\r\n}\r\n`;\r\n","//Component Colors\r\nexport const primaryColor = \"#1E00BE\";\r\nexport const secondaryColor = \"#222222\";\r\nexport const sectionPopulationColor = \"#FFD478\";\r\nexport const sectionBirthplaceColor = \"#FFF0B9\";\r\nexport const sectionLandSizeColor = \"#87CD78\";\r\nexport const sectionGenderColor = \"#FFF0B9\";\r\nexport const sectionPopulationLocationColor = \"#CDF0B4\";\r\nexport const sectionAccommodationColor = \"#87CD78\";\r\nexport const sectionLivingConditionColor = \"#CDF0B4\";\r\nexport const sectionResidenceColor = \"#CDF0B4\";\r\nexport const sectionIncomeColor = \"#DE82DC\";\r\nexport const sectionEmplomentExtentColor = \"#F0C3E6\";\r\nexport const sectionTaxColor = \"#FF8C69\";\r\nexport const sectionElectionColor = \"#FFCDB9\";\r\nexport const lineColor = \"#949494\";\r\nexport const black = \"#151515\";\r\nexport const messageBoxBackground = \"#F8F7F6\";\r\n","import React, { useState } from \"react\";\r\nimport { Navbar, Nav } from \"react-bootstrap\";\r\nimport styled from \"styled-components\";\r\nimport logoSvg from \"../../assets/img/scb_logo_svart.svg\";\r\nimport logoPng from \"../../assets/img/SCB-logo_sv.png\";\r\nimport Menu from \"@material-ui/icons/Menu\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\nimport NavbarCollapse from \"react-bootstrap/NavbarCollapse\";\r\nimport { roboto, fontSizeMedium, maxWidthBlock } from \"./../../Util/StyleProps\";\r\nimport { primaryColor } from \"./../../Util/Colors\";\r\n\r\nconst Wrapper = styled.div`\r\n margin:0 auto;\r\n max-width: ${maxWidthBlock};\r\n position:relative; \r\n padding:0 24px;\r\n\r\n @media${device.mobileL}{\r\n padding: 0 36px;\r\n }\r\n @media${device.tablet}{\r\n padding: 0 48px;\r\n }\r\n\r\n .navbar {\r\n height:58px;\r\n padding:0;\r\n }\r\n\r\n .navbar-brand {\r\n padding:0;\r\n }\r\n \r\n .scbLink {\r\n font-family: ${roboto};\r\n font-weight: 500;\r\n font-size: ${fontSizeMedium}\r\n color:${primaryColor}\r\n line-height: 20px;\r\n position:absolute;\r\n right:0; \r\n padding:0;\r\n }\r\n\r\n .scbLink:after {\r\n content: '';\r\n width: 100%;\r\n position: absolute;\r\n right: 0;\r\n bottom: 0px;\r\n border-width: 0 0 1px;\r\n color:${primaryColor};\r\n border-style: solid;\r\n opacity:0.47;\r\n}\r\n\r\n`;\r\n\r\nconst Logo = styled.img`\r\n width: 36px;\r\n`;\r\n\r\nconst MainNav = () => {\r\n const [showSearch, toggleSearch] = useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Till scb.se\r\n \r\n \r\n \r\n );\r\n};\r\nexport default MainNav;\r\n","import React from \"react\";\r\nimport MainNav from \"./MainNav\";\r\nimport styled from \"styled-components\";\r\nimport { lineColor } from \"./../../Util/Colors\";\r\nconst HeaderWrapper = styled.header`\r\n border-bottom: 1px solid ${lineColor};\r\n`;\r\nconst Header = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { sectionPopulationColor } from \"./../../Util/Colors\";\r\nimport { maxWidthBlock } from \"./../../Util/StyleProps\";\r\nimport { Container } from \"react-bootstrap\";\r\nimport { device } from \"./../../Util/Breakpoints\";\r\n\r\nconst Wrapper = styled.div`\r\n margin:0 auto !important;\r\n padding:0 24px;\r\n\r\n @media${device.mobileL}{\r\n padding: 0 36px;\r\n }\r\n @media${device.tablet}{\r\n max-width: ${props => (props.maxWidth ? props.maxWidth : \"100%\")};\r\n padding: 0 48px;\r\n }\r\n`;\r\n\r\nconst BlockLayout = props => {\r\n const {\r\n children,\r\n background,\r\n paddingTop,\r\n paddingBottom,\r\n paddingRight,\r\n paddingLeft,\r\n maxWidth,\r\n height\r\n } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nBlockLayout.defaultProps = {\r\n background: { sectionPopulationColor },\r\n maxWidth: maxWidthBlock,\r\n paddingTop: \"0\",\r\n paddingBottom: \"50px\",\r\n paddingLeft: \"0\",\r\n paddingRight: \"0\",\r\n height: \"auto\"\r\n};\r\n\r\nexport default BlockLayout;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport logoSvg from \"../../assets/img/scb_logo_vit.svg\";\r\nimport logoPng from \"../../assets/img/scb_logo_vit.png\";\r\nimport { roboto, fontSizeSmall } from \"./../../Util/StyleProps\";\r\nimport { black, lineColor } from \"./../../Util/Colors\";\r\n\r\nconst FooterWrapper = styled.footer`\r\n border-bottom: 1px solid ${lineColor};\r\n background: ${black};\r\n width: 100%;\r\n min-height: 144px;\r\n padding-bottom: 30px;\r\n`;\r\nconst Text = styled.p`\r\n color: #fff;\r\n font-family: ${roboto};\r\n font-size: ${fontSizeSmall};\r\n line-height: 18px;\r\n margin: 0 auto;\r\n`;\r\n\r\nconst Navigation = styled.nav`\r\n max-width: 327px;\r\n margin: 0 auto;\r\n text-align: center;\r\n`;\r\n\r\nconst Link = styled.a`\r\n margin: 0 auto;\r\n text-align: center;\r\n display: block;\r\n padding: 24px 0 16px 0;\r\n`;\r\n\r\nconst Logo = styled.img`\r\n width: 36px;\r\n`;\r\n\r\nconst Footer = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Statistikmyndigheten SCB förser samhället med statistik för\r\n beslutsfattande, debatt och forskning.\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport BlockLayout from \"../Layout/BlockLayout\";\r\nimport { sectionPopulationColor } from \"./../../Util/Colors\";\r\nimport {\r\n Heading1,\r\n fontSizeMobile,\r\n lineheightSmall,\r\n ptSerif,\r\n fontSizeTablet,\r\n lineheightMedium\r\n} from \"../../Util/StyleProps\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\n\r\nconst Text = styled.p`\r\n font-size: ${fontSizeMobile};\r\n font-family: ${ptSerif};\r\n line-height: ${lineheightSmall};\r\n max-width:690px;\r\n\r\n @media${device.tablet}{\r\n font-size: ${fontSizeTablet};\r\n line-height: ${lineheightMedium};\r\n }\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n height: auto;\r\n min-height: 50vh;\r\n background: ${sectionPopulationColor};\r\n`;\r\nconst StartPage = props => {\r\n return (\r\n \r\n \r\n <>\r\n \r\n Snabb koll på Sveriges kommuner\r\n \r\n \r\n Hur många bor i kommunen? Hur mycket tjänar de? Och vad används\r\n marken till? Här får du snabbt svar. Du kan titta på hur det ser ut\r\n i bara en kommun eller jämföra en kommun med en annan.\r\n \r\n \r\n Om du har mobil med geopositioneringen påslagen kan du enkelt få upp\r\n kommunen du befinner dig i genom att välja ”Din position”.\r\n \r\n Har du koll på hur det ser ut i din kommun?\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StartPage;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nexport const SvgWrapper = styled.div`\r\nmax-width:${props => (props.maxWidth ? props.maxWidth : \"100%\")}\r\nwidth:${props => props.width};\r\nheight:${props => props.height};\r\npadding-top: ${props => props.paddingTop};\r\npadding-bottom: ${props => props.paddingBottom};\r\npadding-left: ${props => props.paddingLeft};\r\npadding-right: ${props => props.paddingRight};\r\nmargin:${props => (props.center ? \"0 auto\" : \"0\")};\r\nmargin:${props => props.margin};\r\nmargin-top:${props => props.marginTop};\r\nmargin-left:${props => props.marginLeft};\r\n`;\r\n\r\nconst SvgLayout = props => {\r\n const {\r\n tabIndex,\r\n useTabIndex,\r\n width,\r\n maxWidth,\r\n paddingLeft,\r\n paddingRight,\r\n paddingTop,\r\n paddingBottom,\r\n marginTop,\r\n marginLeft,\r\n children,\r\n ariaLabel,\r\n ariaHidden,\r\n center\r\n } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nSvgLayout.defaultProps = {\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n paddingTop: 0,\r\n paddingBottom: \"10px\",\r\n margin: 0,\r\n marginTop: 0,\r\n marginLeft: 0,\r\n tabIndex: 0,\r\n useTabIndex: false,\r\n ariaLabel: \"\",\r\n ariaHidden: false,\r\n center: false\r\n};\r\n\r\nexport default SvgLayout;\r\n","//CommonHelper.js\r\n//Format number to 1 digit\r\n\r\nexport function formatNumber(x) {\r\n return Number.parseFloat(x).toFixed(1);\r\n}\r\n\r\nexport function calculatePercentage(partialValue, total, dec = 1) {\r\n return parseFloat((100 * Number(partialValue)) / Number(total)).toFixed(dec);\r\n}\r\n//Calculate averageage\r\nexport function calculateAverageAge(n1, n2) {\r\n var age = (Number(n1) + Number(n2)) / 2;\r\n return age ? age.toFixed(1) : 0;\r\n}\r\n//Format number with spa\r\nexport function numberWithSpaces(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \" \");\r\n}\r\n\r\nexport function Sign(value) {\r\n const pop = value;\r\n if (pop > 0) {\r\n return \"+\" + numberWithSpaces(value);\r\n }\r\n return value;\r\n}\r\nexport function isCurrentYear(year) {\r\n var date = new Date();\r\n return Number(year) == Number(date.getFullYear());\r\n}\r\n\r\nexport function ArrowValue(value) {\r\n const pop = Math.sign(value);\r\n if (pop == 0) {\r\n return \"arrow-forward\";\r\n } else if (pop > 0) {\r\n return \"arrow-upward\";\r\n }\r\n return \"arrow-downward\";\r\n}\r\n\r\nexport function checkForValues(value) {\r\n return value.includes(\"..\") ? false : true;\r\n}\r\n\r\nexport function isNullorEmpty(arr) {\r\n if (arr) {\r\n if (!Array.isArray(arr) && arr.length == 0) return true;\r\n\r\n // .some returns a boolean\r\n let hasValue = arr.some(function(value) {\r\n return value !== null;\r\n });\r\n\r\n return hasValue ? false : true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function createMarkup(text) {\r\n return { __html: text };\r\n}\r\n\r\nexport const periodToComma = num => num.toString().replace(/[.]/, \",\");\r\n\r\nexport const valuePairToPercent = (obj, keys, dec) => {\r\n let total = parseInt(obj[keys[0]], 10) + parseInt(obj[keys[1]], 10);\r\n let value1 = 0;\r\n let value2 = 0;\r\n\r\n value1 = parseFloat((100 * parseInt(obj[keys[0]])) / total);\r\n value2 = parseFloat((100 * parseInt(obj[keys[1]])) / total);\r\n\r\n return {\r\n ...{\r\n value1: value1,\r\n value2: value2,\r\n pstring1: periodToComma(value1.toFixed(dec)),\r\n pstring2: periodToComma(value2.toFixed(dec))\r\n },\r\n ...obj\r\n };\r\n};\r\n\r\nexport const GetUniqueLocations = rawData => {\r\n let locations = [];\r\n rawData.forEach(element => {\r\n if (locations.indexOf(element.key[0]) === -1) {\r\n locations.push(element.key[0]);\r\n }\r\n });\r\n return locations;\r\n};\r\n\r\nexport function getBrowserQueryParams() {\r\n var qd = { id1: null, id2: null };\r\n if (window.location.search)\r\n window.location.search\r\n .substr(1)\r\n .split(\"&\")\r\n .forEach(function(item) {\r\n var s = item.split(\"=\"),\r\n k = s[0],\r\n v = s[1] && decodeURIComponent(s[1]);\r\n (qd[k] = qd[k] || []).push(v);\r\n });\r\n return qd;\r\n}\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { Row, Col } from \"react-bootstrap\";\r\nimport { Heading1, SubtitleBlock } from \"../../Util/StyleProps\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\n\r\nconst Wrapper = styled.div`\r\n padding: 40px 25px 20px 0px;\r\n`;\r\n\r\nconst ComponentHeader = props => {\r\n const { heading, text } = props;\r\n return (\r\n \r\n {heading}\r\n \r\n \r\n );\r\n};\r\n\r\nComponentHeader.defaultProps = {\r\n heading: \"Heading\",\r\n text: \"\"\r\n};\r\n\r\nexport default ComponentHeader;\r\n","import React from \"react\";\r\n\r\nconst LinePath = props => {\r\n const { lineType, color, x, y} = props;\r\n\r\n switch (lineType) {\r\n case \"curved-right\":\r\n return (\r\n \r\n );\r\n case \"curved-left\":\r\n return (\r\n \r\n );\r\n case \"strait\":\r\n return (\r\n \r\n );\r\n case \"strait-double\":\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return (\r\n \r\n );\r\n }\r\n};\r\n\r\nLinePath.defaultProps = {\r\n x: 0,\r\n y: 0,\r\n color: \"#000\",\r\n lineType: \"\"\r\n};\r\n\r\nexport default LinePath;\r\n\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport LinePath from \"./LinePathSvg\";\r\nimport {\r\n circleTransition,\r\n drukText,\r\n letterSpacingDruk\r\n} from \"../../Util/StyleProps\";\r\n\r\nconst fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst G = styled.g``;\r\n\r\nconst Bubble = styled.circle`\r\n -webkit-animation: 0.5s\r\n ${props => (props.triggerAnimation ? circleTransition : \"\")}\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation: 0.5s ${props => (props.triggerAnimation ? circleTransition : \"\")}\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n fill: #ffffff;\r\n width: 45px;\r\n height: 45px;\r\n`;\r\n\r\nconst BarCircleValue = styled.foreignObject`\r\n fill: ${props => props.color};\r\n font-family: ${drukText};\r\n font-size: 16px;\r\n line-height: 33px;\r\n animation: 0.25s ${props => (props.triggerAnimation ? fadeInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n & > div {\r\n color: ${props => props.color};\r\n letter-spacing: ${letterSpacingDruk};\r\n text-align: center;\r\n }\r\n .smallPercent {\r\n font-size: 10px;\r\n }\r\n`;\r\n\r\nconst Label = styled.text`\r\n fill: ${props => props.color};\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n font-size: 14px;\r\n line-height: 33px;\r\n animation: 0.25s ${props => (props.triggerAnimation ? fadeInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst BubbleSvg = props => {\r\n const {\r\n x,\r\n y,\r\n rx,\r\n value,\r\n label,\r\n color,\r\n delay,\r\n lineType,\r\n triggerAnimation,\r\n hasBackground\r\n } = props;\r\n\r\n //var rounded = Math.round(value * 10) / 10;\r\n var fixedValue = value; // rounded.toFixed(1);\r\n\r\n if(value == \"100,0\"){\r\n fixedValue = \"100\";\r\n }\r\n\r\n const valueOffset = hasBackground ? 8 : 35;\r\n\r\n let percent = \"%\";\r\n\r\n if (value.length > 2) {\r\n if (value[1] != \",\") {\r\n percent = '%';\r\n }\r\n }\r\n\r\n return (\r\n \r\n {hasBackground ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n
\r\n {fixedValue}\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nBubbleSvg.defaultProps = {\r\n value: 0,\r\n lineType: \"strait\"\r\n};\r\nexport default BubbleSvg;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { HeadingMunicipality, Caption } from \"../../Util/StyleProps\";\r\nimport BubbleSvg from \"../Elements/BubbleSvg\";\r\nimport { Col } from \"react-bootstrap\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport { scaleLinear } from \"d3-scale\";\r\n\r\nconst slideInAnimation = keyframes`${slideInUp}`;\r\nconst fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst Wrapper = styled.div`\r\n // margin-top: -30px;\r\n`;\r\n\r\nconst Svg = styled.svg`\r\n width: 125%;\r\n // min-height: 1px;\r\n`;\r\n\r\nconst SvgBottom = styled.svg`\r\n margin-top: 0;\r\n`;\r\n\r\nconst G = styled.g``;\r\n\r\nconst Rect = styled.rect`\r\n height: ${props => props.height}px;\r\n width: 35px;\r\n animation: 0.75s ${props => (props.triggerAnimation ? slideInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst SingleBarSvg = props => {\r\n const {\r\n value,\r\n delay,\r\n triggerAnimation,\r\n color,\r\n title,\r\n titleId,\r\n caption,\r\n desc,\r\n descId,\r\n width,\r\n height,\r\n topSpace,\r\n maxOffset,\r\n hasBubbleBg,\r\n percentageString,\r\n lineType\r\n } = props;\r\n\r\n const y = scaleLinear()\r\n .domain([0, maxOffset])\r\n .nice()\r\n .range([0, height - topSpace]);\r\n\r\n return (\r\n \r\n {title ? (\r\n {title}\r\n ) : null}\r\n \r\n \r\n {title}\r\n {desc}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSingleBarSvg.defaultProps = {\r\n caption: \"stapeltext\",\r\n title: null,\r\n hasBubbleBg: true\r\n};\r\n\r\nexport default SingleBarSvg;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport SingleBarSvg from \"./SingleBarSvg\";\r\n\r\nconst Wrapper = styled.div`\r\n padding-right: 40px;\r\n`;\r\n\r\n// Bubblorna ska vara på den kategori som genererat högst värde av alla fyra\r\n// fixa ett höjd beroende max värde över 50 som läggs in dynamiskt\r\nconst DoubleBarSvg = props => {\r\n const indexDelays = [0, 0.2, 0.35, 0.45];\r\n\r\n const titleId = props.ariaId ? props.ariaId + \"Title\" : \"\";\r\n const descId = props.ariaId ? props.ariaId + \"Desc\" : \"\";\r\n\r\n const {\r\n captions,\r\n title,\r\n desc,\r\n color,\r\n firstValue,\r\n secondValue,\r\n triggerAnimation,\r\n height,\r\n width,\r\n topSpace,\r\n maxOffset,\r\n maxIsEven,\r\n pstring1,\r\n pstring2\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDoubleBarSvg.defaultProps = {\r\n captions: [\"stapeltext\", \"stapeltext\"],\r\n title: \"Titel\",\r\n desc: \"Desc\",\r\n pstring1: \"0\",\r\n pstring2: \"0\",\r\n maxOffset: 0,\r\n maxIsEven: true,\r\n height: \"190\",\r\n width: \"100\"\r\n};\r\n\r\nexport default DoubleBarSvg;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { Col } from \"react-bootstrap\";\r\nimport { HeadingMunicipality, roboto } from \"../../Util/StyleProps\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { ArrowUpward } from \"@material-ui/icons\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\nimport { secondaryColor, primaryColor } from \"../../Util/Colors\";\r\n\r\nconst Link = styled.a`\r\n height: 100%;\r\n text-align: center;\r\n margin: 0 auto;\r\n margin-top: 24px;\r\n font-family: ${roboto};\r\n font-size:12px;\r\n color: ${secondaryColor};\r\n\r\n @media${device.mobileM}{\r\n font-size:14px;\r\n }\r\n\r\n &:active {\r\n color: ${secondaryColor};\r\n }\r\n &:hover {\r\n color: ${secondaryColor};\r\n text-decoration:underline;\r\n }\r\n &:click {\r\n color: ${secondaryColor};\r\n opacity:0.82;\r\n text-decoration:underline;\r\n }\r\n`;\r\n\r\nconst EmptySpace = props => {\r\n const { color, scroll } = props;\r\n\r\n return (\r\n \r\n \r\n (Kommun)\r\n \r\n \r\n
\r\n \r\n
Välj kommun att jämföra med
\r\n
\r\n \r\n \r\n );\r\n};\r\nEmptySpace.defaultProps = {\r\n scroll: null\r\n};\r\n\r\nexport default EmptySpace;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport DoubleBarSvg from \"../Charts/DoubleBarSvg\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport {\r\n Line,\r\n FiguresWrapper,\r\n HeadingMunicipality\r\n} from \"../../Util/StyleProps\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport { valuePairToPercent, isCurrentYear } from \"../../Helpers/CommonHelper\";\r\nimport { useInView } from \"react-intersection-observer\";\r\n\r\nconst BirthPlaceContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n let valueData = [];\r\n let valueArr = [];\r\n let swedenArr, swedenString;\r\n const lastYear = sweden.birthplace.year;\r\n\r\n swedenArr = valuePairToPercent(\r\n sweden.birthplace,\r\n [\"borninsweden\", \"bornabroud\"],\r\n 1\r\n );\r\n swedenString = `Av hela Sveriges befolkning är ${swedenArr.pstring1} procent födda i Sverige och ${swedenArr.pstring2} procent födda utomlands (${lastYear}).`;\r\n\r\n data.forEach((item, i) => {\r\n if (item) {\r\n valueData.push(\r\n valuePairToPercent(item, [\"borninsweden\", \"bornabroud\"], 1)\r\n );\r\n valueArr.push(valueData[i].value1);\r\n valueArr.push(valueData[i].value2);\r\n }\r\n });\r\n\r\n let municipality1 = valueData[0];\r\n let municipality2 = valueData[1];\r\n const max = Math.max(...valueArr);\r\n const maxColumnPairIdx = valueArr.indexOf(Math.max(...valueArr));\r\n const maxIsEven = maxColumnPairIdx % 2 == 0;\r\n\r\n const maxOffset = max;\r\n const height = 120;\r\n const width = 100;\r\n const topSpace = 63;\r\n\r\n let captions = [\"födda i Sverige\", \"födda utomlands\"];\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"är\"\r\n : \"var\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `I ${municipality.name} kommun så ${str} ${municipality.value1} procent av befolkningen födda i Sverige och ${municipality.value2} procent födda utomlands. (år ${municipality.year})`\r\n : \"\";\r\n };\r\n\r\n const svgAriaLabel = municipality =>\r\n municipality\r\n ? `Det här stapeldiagramet gör jämförelser i procent för antal personer födda i Sverge och utomlands. För ${municipality.name} kommun.`\r\n : \"\";\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nBirthPlaceContainer.defaultProps = {\r\n data: [],\r\n sweden: {}\r\n};\r\n\r\nexport default BirthPlaceContainer;\r\n","import React from \"react\";\r\nimport { secondaryColor } from \"./../../Util/Colors\";\r\n\r\nconst IconPath = props => {\r\n const { iconName, color } = props;\r\n\r\n switch (iconName) {\r\n case \"arrow-downward\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n\r\n case \"arrow-forward\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"arrow-upward\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"female\":\r\n return (\r\n \r\n );\r\n case \"male\":\r\n return (\r\n \r\n );\r\n case \"house\":\r\n return (\r\n \r\n );\r\n case \"nature\":\r\n return (\r\n \r\n );\r\n case \"spa\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"person\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"person-add\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"people\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"straighten\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"stripes\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"info-outline\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"table-chart-outline\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n case \"place\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nIconPath.defaultProps = {\r\n color: secondaryColor\r\n};\r\n\r\nexport default IconPath;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { periodToComma } from \"../../Helpers/CommonHelper\";\r\nimport IconPath from \"./../Elements/IconPath\";\r\n\r\nimport {\r\n scaleInFigure,\r\n letterSpacingDruk,\r\n drukText\r\n} from \"../../Util/StyleProps\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\n\r\nconst Wrapper = styled.div`\r\n color: ${props => props.color};\r\n .MuiSvgIcon-root {\r\n background: #ffffff;\r\n border-radius: 50%;\r\n }\r\n`;\r\n\r\nconst Span = styled.span`\r\n font-size: 12px;\r\n font-family: Roboto;\r\n line-height: 18px;\r\n padding-left: 10px;\r\n`;\r\n\r\nconst FigureWrapper = styled.div`\r\n max-width: 100px;\r\n\r\n @media${device.tabletS} {\r\n max-width:unset;\r\n }\r\n`;\r\n\r\nconst Figure = styled.p`\r\n font-size: 30px;\r\n line-height: 100%;\r\n padding-left: 10px;\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n\r\n @media${device.mobileL} {\r\n font-size:40px;\r\n }\r\n\r\n first-child: nth-last-child(n + 3);\r\n animation: 2s ${props => (props.triggerAnimation ? scaleInFigure : \"\")} 0.5s\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n -webkit-animation: ${props => (props.triggerAnimation ? scaleInFigure : \"\")}\r\n 0.5s cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst Icon = styled.div`\r\n background: #fff;\r\n border-radius: 50%;\r\n height: 36px;\r\n width: 36px;\r\n\r\n @media${device.mobileL} {\r\n height: 46px;\r\n width: 46px;\r\n }\r\n`;\r\n\r\nconst SvgWrapper = styled.div`\r\n position: relative;\r\n height: 36px;\r\n width: 36px;\r\n text-align: center;\r\n line-height: 36px;\r\n\r\n @media${device.mobileL} {\r\n height: 46px;\r\n width: 46px;\r\n line-height: 46px;\r\n }\r\n\r\n & > svg {\r\n width:24px;\r\n height: 24px;\r\n position: absolute;\r\n top: 50%;\r\n bottom: 50%;\r\n transform: translate(-50%, -50%);\r\n padding: 2px;\r\n\r\n @media${device.mobileL} {\r\n height: 36px;\r\n width: 36px;\r\n }\r\n }\r\n`;\r\n\r\nconst KeyFigureNew = props => {\r\n const {\r\n value,\r\n color,\r\n iconName,\r\n alt,\r\n triggerAnimation,\r\n delay,\r\n size,\r\n unit,\r\n subText\r\n } = props;\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {periodToComma(value)}\r\n {unit}\r\n \r\n {subText}\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\nKeyFigureNew.defaultProps = {\r\n iconName: \"arrow-down\",\r\n alt: \"Ikon\"\r\n};\r\n\r\nexport default KeyFigureNew;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { drukText, roboto, letterSpacingDruk, scaleInFigure } from \"../../Util/StyleProps\";\r\nimport { numberWithSpaces } from \"../../Helpers/CommonHelper\";\r\nimport LinePath from \"./LinePathSvg\";\r\n\r\nconst fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst G = styled.g``;\r\n\r\nconst BubbleContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst BarCircleValue = styled.foreignObject`\r\n // min-width: ${props => (props.width ? props.width : \"100px\")};\r\n width: ${props => (props.width ? props.width : \"100%\")};\r\n height: ${props => (props.height ? props.height : \"100px\")};\r\n fill: ${props => props.color};\r\n font-family: ${drukText};\r\n line-height: 33px;\r\n animation: 2s ${props => (props.triggerAnimation ? scaleInFigure : \"\")} 0.5s\r\n cubic-bezier(0.175, 0.885, 0.275, 1.035);\r\n -webkit-animation: ${props => (props.triggerAnimation ? scaleInFigure : \"\")}\r\n 0.5s cubic-bezier(0.175, 0.885, 0.275, 1.035);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n opacity: 0;\r\n`;\r\n\r\nconst Bubble = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n min-width: ${props =>\r\n props.width ? `${parseInt(props.width, 10) * 0.7}px` : \"100px\"};\r\n color: ${props => props.color};\r\n background-color: ${props => (props.hasBackground ? \"#fff\" : \"transparent\")};\r\n border-radius: 99px;\r\n padding: ${props => (props.padding ? props.padding : \"9px 10px 6px\")};\r\n text-align: center;\r\n`;\r\n\r\nconst ValueText = styled.span`\r\n font-size: ${props => (props.setFontSize ? props.setFontSize : \"18px\")}\r\n letter-spacing: ${letterSpacingDruk};\r\n line-height: 100%;\r\n padding: ${props => (props.padding ? props.padding : 0)};\r\n color: ${props => props.color};\r\n`;\r\n\r\nconst LabelBottom = styled.span`\r\n font-family: ${roboto};\r\n font-size: ${props => (props.setFontSize ? props.setFontSize : \"18px\")}\r\n line-height: ${props => (props.lineHeight ? props.lineHeight : \"12px\")}\r\n color: ${props => props.color};\r\n padding-top: ${props => (props.paddingTop ? props.paddingTop : 0)};\r\n`;\r\n\r\n\r\nconst BubbleFlexSvg = props => {\r\n const {\r\n x,\r\n y,\r\n value,\r\n label,\r\n color,\r\n delay,\r\n triggerAnimation,\r\n hasBackground,\r\n padding,\r\n hasLine,\r\n lineType,\r\n isPercent,\r\n width,\r\n viewBoxWidth, // this affects the width the bubble inside - the larger the viewBoxWidth the smaller the bubble\r\n viewBoxHeight,\r\n height\r\n } = props;\r\n\r\n const hasComma = toString(value).includes(\",\");\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {numberWithSpaces(value)}\r\n {isPercent ? \"%\" : \"\"}\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n {lineType ? (\r\n \r\n ) : null}\r\n \r\n );\r\n};\r\nBubbleFlexSvg.defaultProps = {\r\n x: 0,\r\n y: 0,\r\n width: \"100px\",\r\n height: \"100px\",\r\n viewBoxWidth: 100,\r\n viewBoxHeight: 120,\r\n lineType: null,\r\n value: 0,\r\n label: \"Label\",\r\n isPercent: false,\r\n hasBackground: false,\r\n triggerAnimation: false,\r\n delay: 0,\r\n hasLine: false\r\n};\r\n\r\nexport default BubbleFlexSvg;\r\n","import React from \"react\";\r\nimport Highcharts from \"highcharts\";\r\nimport {\r\n HighchartsProvider,\r\n HighchartsChart,\r\n Chart,\r\n XAxis,\r\n YAxis,\r\n Legend,\r\n LineSeries,\r\n Series,\r\n Tooltip\r\n} from \"react-jsx-highcharts\";\r\n\r\nconst HighChartLineChart = props => {\r\n var lines = [];\r\n const { data, startpoint, triggerAnimation } = props;\r\n\r\n if (data[0] || data[1]) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key) && data[key] !== null) {\r\n {\r\n let color = key == 0 ? \"#1E00BE\" : \"#222222\";\r\n let currentpopulation = data[key].values.slice(-1).pop();\r\n\r\n let dotted = key == 0 ? \"\" : \"shortdot\";\r\n\r\n let line = [\r\n [...data[key].values],\r\n color,\r\n data[key].name,\r\n currentpopulation,\r\n dotted\r\n ];\r\n lines.push(line);\r\n }\r\n }\r\n }\r\n }\r\n\r\n Highcharts.setOptions({\r\n lang: {\r\n numericSymbols: [null]\r\n },\r\n chart: {\r\n borderColor: \"\",\r\n plotBorderWidth: 1,\r\n plotBorderColor: \"\",\r\n plotShadow: false,\r\n type: \"line\"\r\n },\r\n xAxis: {\r\n lineColor: \"#1E00BE\",\r\n visible: true,\r\n lineWidth: 2,\r\n labels: {\r\n style: {\r\n color: \"#1E00BE\",\r\n fontFamily: \"Roboto\",\r\n fontSize: \"14px\"\r\n }\r\n },\r\n type: \"year\",\r\n tickLength: 1,\r\n startOnTick: false,\r\n endOnTick: true,\r\n /* labels: {\r\n formatter: function() {\r\n // return \"2018\";\r\n }\r\n },*/\r\n showFirstLabel: true,\r\n showLastLabel: true\r\n },\r\n yAxis: {\r\n visible: true,\r\n min: 0,\r\n gridLineColor: \"none\",\r\n labels: {\r\n style: {\r\n color: \"#1E00BE\",\r\n fontFamily: \"Roboto\",\r\n fontSize: \"14px\"\r\n }\r\n },\r\n showFirstLabel: true,\r\n showLastLabel: true\r\n },\r\n plotOptions: {\r\n series: {\r\n lineWidth: 4,\r\n shadow: true,\r\n marker: {\r\n enabled: false,\r\n symbol: \"circle\",\r\n radius: 4,\r\n states: {\r\n hover: {\r\n enabled: true\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return (\r\n \r\n \r\n \r\n \r\n {lines.map((linedata, index) => {\r\n if(triggerAnimation){\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n } else {\r\n return (\r\n null\r\n )}\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HighChartLineChart;\r\n","import React, { useState } from \"react\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\nconst FigureBoxPopulation = props => {\r\n const { municipality1, municipality2, year, scroll } = props;\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0.5,\r\n triggerOnce: true\r\n });\r\n\r\n // Accessibility\r\n const ariaLabel = (municipality, year) => {\r\n return municipality\r\n ? `I slutet av ${year} var befolkningen i ${\r\n municipality.name\r\n } kommun ${municipality.values.slice(-1).pop()} personer`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default FigureBoxPopulation;\r\n","import React, { useState } from \"react\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport styled from \"styled-components\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n headingSmall,\r\n Heading2,\r\n Heading6,\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n Sign,\r\n ArrowValue,\r\n numberWithSpaces,\r\n isCurrentYear\r\n} from \"../../Helpers/CommonHelper\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\nconst PopulationChange = props => {\r\n const { sweden, populationchangedata, data } = props;\r\n var xaxissize = \"\";\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options*/\r\n threshold: 0.2,\r\n triggerOnce: true\r\n });\r\n\r\n let year = populationchangedata[0] ? populationchangedata[0].year : \"\";\r\n const lastYearPop = sweden.population.values.slice(-1);\r\n const lastYear = sweden.population.years.slice(-1);\r\n const beforeYearPop = sweden.population.values.slice(-2)[0];\r\n const popDiff = lastYearPop - beforeYearPop;\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n let municipality1Change = populationchangedata[0];\r\n let municipality2Change = populationchangedata[1];\r\n\r\n const noWrapPopulation =\r\n \"\" + numberWithSpaces(lastYearPop) + \"\";\r\n\r\n const noWrapDiff =\r\n \"\" + numberWithSpaces(popDiff) + \"\";\r\n\r\n let subText = `I slutet av ${\r\n lastYear ? lastYear : \"(årtal saknas)\"\r\n } var Sveriges folkmängd ${\r\n lastYearPop ? noWrapPopulation : \"(befolkningsmängd ej tillgänglig)\"\r\n } personer.`;\r\n\r\n var subTextKeyFig = \"personer\";\r\n\r\n const ariaLabelPopChange = municipalityChange => {\r\n return municipalityChange\r\n ? `Befolkningen i ${municipalityChange.name} kommun ${\r\n Math.sign(municipalityChange.value) === 0\r\n ? isCurrentYear(municipalityChange.year)\r\n ? \"är\"\r\n : \"var\"\r\n : Math.sign(municipalityChange.value) > 0\r\n ? \"ökade med\"\r\n : \"minskade med\"\r\n } ${Math.abs(municipalityChange.value)} personer (år ${\r\n municipalityChange.year\r\n })`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n Så har befolkningen förändrats\r\n \r\n
\r\n \r\n {municipality1Change ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2Change ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PopulationChange;\r\n","import React, { useState } from \"react\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport styled from \"styled-components\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n headingSmall,\r\n Heading2,\r\n Heading6,\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n Sign,\r\n ArrowValue,\r\n numberWithSpaces,\r\n isCurrentYear\r\n} from \"../../Helpers/CommonHelper\";\r\nimport HighLineChartLine from \"../Charts/HighChartLineChart\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport FigureBoxPopulation from \"./FigureBoxPopulation\";\r\nimport PopulationChange from \"./PopulationChange\";\r\n\r\nconst PopulationContainer = props => {\r\n const { sweden, data, populationchangedata, blockColor, scroll } = props;\r\n var xaxissize = \"\";\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0.5,\r\n triggerOnce: true\r\n });\r\n\r\n const Wrapper = styled.div`\r\n .highcharts-background {\r\n fill: none;\r\n background-color: #de82dc !important;\r\n }\r\n `;\r\n\r\n let year = populationchangedata[0] ? populationchangedata[0].year : \"\";\r\n const lastYearPop = sweden.population.values.slice(-1);\r\n const lastYear = sweden.population.years.slice(-1);\r\n const beforeYearPop = sweden.population.values.slice(-2)[0];\r\n const popDiff = lastYearPop - beforeYearPop;\r\n\r\n let popKingdom = null;\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n let municipality1Change = populationchangedata[0];\r\n let municipality2Change = populationchangedata[1];\r\n\r\n const noWrapPopulation =\r\n \"\" + numberWithSpaces(lastYearPop) + \"\";\r\n\r\n const noWrapDiff =\r\n \"\" + numberWithSpaces(popDiff) + \"\";\r\n\r\n let subText = `I slutet av ${\r\n lastYear ? lastYear : \"(årtal saknas)\"\r\n } var Sveriges folkmängd ${\r\n lastYearPop ? noWrapPopulation : \"(befolkningsmängd ej tillgänglig)\"\r\n } personer.`;\r\n\r\n var subTextKeyFig = \"personer\";\r\n\r\n // Accessibility\r\n const ariaLabel = (municipality, year) => {\r\n return municipality\r\n ? `I slutet av ${year} var befolkningen i ${\r\n municipality.name\r\n } kommun ${municipality.values.slice(-1).pop()} personer`\r\n : \"\";\r\n };\r\n\r\n const ariaLabelPopChange = municipalityChange => {\r\n return municipalityChange\r\n ? `Befolkningen i ${municipalityChange.name} kommun ${\r\n Math.sign(municipalityChange.value) === 0\r\n ? isCurrentYear(municipalityChange.year)\r\n ? \"är\"\r\n : \"var\"\r\n : Math.sign(municipalityChange.value) > 0\r\n ? \"ökade med\"\r\n : \"minskade med\"\r\n } ${Math.abs(municipalityChange.value)} personer (år ${\r\n municipalityChange.year\r\n })`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n <>\r\n \r\n
\r\n {municipality1 ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nPopulationContainer.defaultProps = {\r\n data: [],\r\n sweden: [],\r\n populationchangedata: []\r\n};\r\n\r\nexport default PopulationContainer;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\n// import { fadeInUp } from \"react-animations\";\r\n// import { useInView } from \"react-intersection-observer\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\nimport { periodToComma, createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n drukText,\r\n roboto,\r\n fontSizeSmall,\r\n letterSpacingDruk,\r\n scaleInFigure\r\n} from \"../../Util/StyleProps\";\r\n\r\n// const fadeIn = keyframes`${fadeInUp}`;\r\n\r\nconst Wrapper = styled.div`\r\n color: ${props => props.color};\r\n .MuiSvgIcon-root {\r\n background: #ffffff;\r\n border-radius: 50%;\r\n }\r\n`;\r\n\r\nconst Span = styled.span`\r\n font-size: ${fontSizeSmall}\r\n font-family: ${roboto};\r\n line-height: 18px;\r\n margin-top: -10px;\r\n display: block;\r\n margin-bottom: 20px;\r\n`;\r\n\r\nconst Figure = styled.h3`\r\n font-size: 40px;\r\n @media${device.mobileL} {\r\n font-size: ${props => props.fontSize};\r\n }\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n margin-top: 5px;\r\n first-child: nth-last-child(n + 3);\r\n animation: 2s ${props => (props.triggerAnimation ? scaleInFigure : \"\")} 0.5s\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n -webkit-animation: ${props => (props.triggerAnimation ? scaleInFigure : \"\")}\r\n 0.5s cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n\r\n .smallPercent {\r\n font-size: 40px;\r\n }\r\n`;\r\n\r\nconst KeyFigureBig = props => {\r\n const {\r\n heading,\r\n value,\r\n color,\r\n triggerAnimation,\r\n delay,\r\n size,\r\n unit,\r\n subText\r\n } = props;\r\n\r\n let percent = \"%\";\r\n\r\n if (value.length > 2) {\r\n if (value[1] != \",\") {\r\n percent = '%';\r\n }\r\n }\r\n return (\r\n \r\n
\r\n
\r\n {heading}\r\n
\r\n
\r\n \r\n {periodToComma(value)}\r\n {unit == \"%\" ? (\r\n \r\n ) : (\r\n unit\r\n )}\r\n \r\n
\r\n
\r\n {subText}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default KeyFigureBig;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { calculateAverageAge, isCurrentYear } from \"../../Helpers/CommonHelper\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport { periodToComma } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n headingSmall,\r\n headingLarge,\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport KeyFigureBig from \"../Elements/KeyFigureBig\";\r\n\r\nconst AgeContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n\r\n //periodToComma\r\n const lastYear = sweden.age.year;\r\n const swedenMedium = sweden.age.total;\r\n const swedenString =\r\n \"I Sverige är medelåldern \" +\r\n periodToComma(swedenMedium) +\r\n \" år. Medelåldern är \" +\r\n periodToComma(sweden.age.female) +\r\n \" år för kvinnor och \" +\r\n periodToComma(sweden.age.male) +\r\n \" år för män (\" +\r\n lastYear +\r\n \").\";\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"är\"\r\n : \"var\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `År ${municipality.year} ${str} medelåldern i ${\r\n municipality.name\r\n } kommun ${\r\n municipality.total\r\n }år. Medelåldern för kvinnor ${str} ${\r\n municipality.female\r\n }år och medelåldern för män ${str} ${municipality.male} år.`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAgeContainer.defaultProps = {\r\n data: [],\r\n sweden: {}\r\n};\r\n\r\nexport default AgeContainer;\r\n","import React from \"react\";\r\nimport stripes from \"../../assets/img/stripes.svg\";\r\nimport stripesBlue from \"../../assets/img/stripesBlue.svg\";\r\n\r\nconst patternElements = {\r\n stripes: stripes,\r\n stripesBlue: stripesBlue\r\n\r\n};\r\n\r\nconst Pattern = props => {\r\n const { width, rotation, patternId } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pattern;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Pattern from \"./../Elements/Pattern\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { useAnimationFrame } from \"./../../Providers/AnimationFrame\";\r\n\r\nconst Path = styled.path``;\r\n\r\nconst PieChart = props => {\r\n const offset = 0;\r\n const {\r\n width,\r\n bgRotation,\r\n data,\r\n desc,\r\n title,\r\n ariaId,\r\n blockColor,\r\n triggerAnimation\r\n } = props;\r\n\r\n const hasBg = data.find(item => item.background);\r\n const background = hasBg ? hasBg.background : \"defaultId\";\r\n const titleId = ariaId ? ariaId + \"Title\" : \"\";\r\n const descId = ariaId ? ariaId + \"Desc\" : \"\";\r\n\r\n return (\r\n \r\n {title}\r\n {desc}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Arcs = props => {\r\n const {\r\n center,\r\n data,\r\n strokeWidth,\r\n strokeColor,\r\n strokeLinejoin,\r\n transitionTimingFunction,\r\n transitionDuration,\r\n triggerAnimation\r\n } = props;\r\n\r\n const total = Math.ceil(\r\n data.reduce((prev, current) => current.value + prev, 0)\r\n );\r\n let angleStart = 0;\r\n let angleEnd = 0;\r\n const animationFrame = useAnimationFrame(triggerAnimation);\r\n\r\n return (\r\n \r\n {data.map((d, i) => {\r\n const isLarge = (d.value * animationFrame) / total > 0.5;\r\n const angle = (360 * (d.value * animationFrame)) / total;\r\n const radius = center - strokeWidth / 2;\r\n angleStart = angleEnd;\r\n angleEnd = angleStart + angle;\r\n\r\n const x1 = center + radius * Math.cos((Math.PI * angleStart) / 180);\r\n const y1 = center + radius * Math.sin((Math.PI * angleStart) / 180);\r\n const x2 = center + radius * Math.cos((Math.PI * angleEnd) / 180);\r\n const y2 = center + radius * Math.sin((Math.PI * angleEnd) / 180);\r\n const pathdata = `\r\n M${center},${center}\r\n L${x1},${y1}\r\n A${radius},${radius}\r\n 0 ${isLarge ? 1 : 0},1\r\n ${x2},${y2}\r\n z\r\n `;\r\n\r\n return (\r\n
\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default PieChart;\r\n","import React, { useContext } from \"react\";\r\n\r\n\r\nconst useAnimationFrame = (trigger) => {\r\n const animFrameAmount = 1 / 90;\r\n let animCount = 0;\r\n\r\n const [animationFrame, setFrame] = React.useState(0);\r\n\r\n const animationEasing = (t) => {\r\n var v = t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\r\n return v > 1 ? 1 : v;\r\n };\r\n\r\n const animationLoop = () => {\r\n animCount += animFrameAmount;\r\n setFrame(animationEasing(animCount));\r\n if (animCount < 1) {\r\n requestAnimationFrame(animationLoop);\r\n } else {\r\n cancelAnimationFrame(animationLoop);\r\n }\r\n };\r\n\r\n const reverseLoop = () => {\r\n animCount -= animFrameAmount;\r\n setFrame(animationEasing(animCount));\r\n if (animCount > 0) {\r\n requestAnimationFrame(reverseLoop);\r\n } else {\r\n cancelAnimationFrame(reverseLoop);\r\n }\r\n };\r\n\r\n React.useEffect((a) => {\r\n if(trigger && animCount < 1){\r\n requestAnimationFrame(animationLoop);\r\n } \r\n if(!trigger){\r\n cancelAnimationFrame(animationLoop);\r\n //animCount = 1;\r\n //requestAnimationFrame(reverseLoop);\r\n\r\n animCount = 0;\r\n setFrame(0);\r\n } \r\n }, [trigger]); \r\n\r\n return animationFrame;\r\n};\r\n\r\nexport { useAnimationFrame };\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport { Row } from \"react-bootstrap\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport Piechart from \"./../Charts/PieChart\";\r\nimport { useInView } from \"react-intersection-observer\";\r\n// import { fadeIn, slideInUp } from \"react-animations\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport { HeadingMunicipality, HorizontalLine } from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { valuePairToPercent } from \"../../Helpers/CommonHelper\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\n// const slideInAnimation = keyframes`${slideInUp}`;\r\n// const fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst GenderContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n let valueData = [];\r\n let swedenArr, swedenString;\r\n\r\n const lastYear = sweden && sweden.gender ? sweden.gender.year : \"\";\r\n swedenArr = valuePairToPercent(sweden.gender, [\"male\", \"female\"], 1);\r\n swedenString =\r\n \"I Sverige är \" +\r\n swedenArr.pstring2 +\r\n \" procent kvinnor och \" +\r\n swedenArr.pstring1 +\r\n \" procent män (\" +\r\n lastYear +\r\n \").\";\r\n\r\n data.forEach((item, i) => {\r\n if (item) {\r\n valueData.push(valuePairToPercent(item, [\"male\", \"female\"], 1));\r\n }\r\n });\r\n\r\n let municipality1 = valueData[0];\r\n let municipality2 = valueData[1];\r\n\r\n // Accessibility\r\n const ariaLabel = municipality =>\r\n municipality\r\n ? `I ${municipality.name} kommun finns det ${municipality.pstring2} procent kvinnor och ${municipality.pstring1} procent män.`\r\n : \"\";\r\n\r\n const svgAriaLabel = municipality =>\r\n municipality\r\n ? `Det här pajdiagrammet jämför antalet kvinnor och män i ${municipality.name} kommun.`\r\n : \"\";\r\n\r\n //Attention values and labels in this component is mixed to match position of pie elements\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n <>\r\n {municipality1 ? (\r\n <>\r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n <>\r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst GenderBlock = props => {\r\n const [ref, inView] = useInView({\r\n /* Optional options */\r\n threshold: 0.5,\r\n triggerOnce: true\r\n });\r\n\r\n const { data, blockColor, desc, title, ariaId, color } = props;\r\n const maxIsFemale = data[0].value < data[1].value;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nGenderContainer.defaultProps = {\r\n data: [],\r\n sweden: {}\r\n};\r\n\r\nexport default GenderContainer;\r\n","export function getMunicipalityName(id) {\r\n if (id == \"00\") return \"Sverige\";\r\n return id ? municipalities().find(m => m.id === id).name : null;\r\n}\r\n\r\nexport function hasMunicipalityName(id) {\r\n return id ? municipalities().find(m => m.id === id) : null;\r\n}\r\n\r\nexport function municipalities() {\r\n var municipalityCollection = [\r\n /*{ A - 10 st}*/\r\n { id: \"1440\", name: \"Ale\" },\r\n { id: \"1489\", name: \"Alingsås\" },\r\n { id: \"0764\", name: \"Alvesta\" },\r\n { id: \"0604\", name: \"Aneby\" },\r\n { id: \"1984\", name: \"Arboga\" },\r\n { id: \"2506\", name: \"Arjeplog\" },\r\n { id: \"2505\", name: \"Arvidsjaur\" },\r\n { id: \"1784\", name: \"Arvika\" },\r\n { id: \"1882\", name: \"Askersund\" },\r\n { id: \"2084\", name: \"Avesta\" },\r\n /*{ B - 16 st }*/\r\n { id: \"1460\", name: \"Bengtsfors\" },\r\n { id: \"2326\", name: \"Berg\" },\r\n { id: \"2403\", name: \"Bjurholm\" },\r\n { id: \"1260\", name: \"Bjuv\" },\r\n { id: \"2582\", name: \"Boden\" },\r\n { id: \"1443\", name: \"Bollebygd\" },\r\n { id: \"2183\", name: \"Bollnäs\" },\r\n { id: \"0885\", name: \"Borgholm\" },\r\n { id: \"2081\", name: \"Borlänge\" },\r\n { id: \"1490\", name: \"Borås\" },\r\n { id: \"0127\", name: \"Botkyrka\" },\r\n { id: \"0560\", name: \"Boxholm\" },\r\n { id: \"1272\", name: \"Bromölla\" },\r\n { id: \"2305\", name: \"Bräcke\" },\r\n { id: \"1231\", name: \"Burlöv\" },\r\n { id: \"1278\", name: \"Båstad\" },\r\n /*{ D - 4 st }*/\r\n { id: \"1438\", name: \"Dals-Ed\" },\r\n { id: \"0162\", name: \"Danderyd\" },\r\n { id: \"1862\", name: \"Degerfors\" },\r\n { id: \"2425\", name: \"Dorotea\" },\r\n /*{ E - 8 st}*/\r\n { id: \"1730\", name: \"Eda\" },\r\n { id: \"0125\", name: \"Ekerö\" },\r\n { id: \"0686\", name: \"Eksjö\" },\r\n { id: \"0862\", name: \"Emmaboda\" },\r\n { id: \"0381\", name: \"Enköping\" },\r\n { id: \"0484\", name: \"Eskilstuna\" },\r\n { id: \"1285\", name: \"Eslöv\" },\r\n { id: \"1445\", name: \"Essunga\" },\r\n /*{ F - 9 st}*/\r\n { id: \"1982\", name: \"Fagersta\" },\r\n { id: \"1382\", name: \"Falkenberg\" },\r\n { id: \"1499\", name: \"Falköping\" },\r\n { id: \"2080\", name: \"Falun\" },\r\n { id: \"1782\", name: \"Filipstad\" },\r\n { id: \"0562\", name: \"Finspång\" },\r\n { id: \"0482\", name: \"Flen\" },\r\n { id: \"1763\", name: \"Forshaga\" },\r\n { id: \"1439\", name: \"Färgelanda\" },\r\n /*{ G - 12 st}*/\r\n { id: \"2026\", name: \"Gagnef\" },\r\n { id: \"0662\", name: \"Gislaved\" },\r\n { id: \"0461\", name: \"Gnesta\" },\r\n { id: \"0617\", name: \"Gnosjö\" },\r\n { id: \"0980\", name: \"Gotland\" },\r\n { id: \"1764\", name: \"Grums\" },\r\n { id: \"1444\", name: \"Grästorp\" },\r\n { id: \"1447\", name: \"Gullspång\" },\r\n { id: \"2523\", name: \"Gällivare\" },\r\n { id: \"2180\", name: \"Gävle\" },\r\n { id: \"1480\", name: \"Göteborg\" },\r\n { id: \"1471\", name: \"Götene\" },\r\n /*{ H - 28 st}*/\r\n { id: \"0643\", name: \"Habo\" },\r\n { id: \"1783\", name: \"Hagfors\" },\r\n { id: \"1861\", name: \"Hallsberg\" },\r\n { id: \"1961\", name: \"Hallstahammar\" },\r\n { id: \"1380\", name: \"Halmstad\" },\r\n { id: \"1761\", name: \"Hammarö\" },\r\n { id: \"0136\", name: \"Haninge\" },\r\n { id: \"2583\", name: \"Haparanda\" },\r\n { id: \"0331\", name: \"Heby\" },\r\n { id: \"2083\", name: \"Hedemora\" },\r\n { id: \"1283\", name: \"Helsingborg\" },\r\n { id: \"1466\", name: \"Herrljunga\" },\r\n { id: \"1497\", name: \"Hjo\" },\r\n { id: \"2104\", name: \"Hofors\" },\r\n { id: \"0126\", name: \"Huddinge\" },\r\n { id: \"2184\", name: \"Hudiksvall\" },\r\n { id: \"0860\", name: \"Hultsfred\" },\r\n { id: \"1315\", name: \"Hylte\" },\r\n { id: \"0305\", name: \"Håbo\" },\r\n { id: \"1863\", name: \"Hällefors\" },\r\n { id: \"2361\", name: \"Härjedalen\" },\r\n { id: \"2280\", name: \"Härnösand\" },\r\n { id: \"1401\", name: \"Härryda\" },\r\n { id: \"1293\", name: \"Hässleholm\" },\r\n { id: \"1284\", name: \"Höganäs\" },\r\n { id: \"0821\", name: \"Högsby\" },\r\n { id: \"1266\", name: \"Hörby\" },\r\n { id: \"1267\", name: \"Höör\" },\r\n /*{ J - 8 st}*/\r\n { id: \"2510\", name: \"Jokkmokk\" },\r\n { id: \"0123\", name: \"Järfälla\" },\r\n { id: \"0680\", name: \"Jönköping\" },\r\n /*{ K - 23 st}*/\r\n { id: \"2514\", name: \"Kalix\" },\r\n { id: \"0880\", name: \"Kalmar\" },\r\n { id: \"1446\", name: \"Karlsborg\" },\r\n { id: \"1082\", name: \"Karlshamn\" },\r\n { id: \"1883\", name: \"Karlskoga\" },\r\n { id: \"1080\", name: \"Karlskrona\" },\r\n { id: \"1780\", name: \"Karlstad\" },\r\n { id: \"0483\", name: \"Katrineholm\" },\r\n { id: \"1715\", name: \"Kil\" },\r\n { id: \"0513\", name: \"Kinda\" },\r\n { id: \"2584\", name: \"Kiruna\" },\r\n { id: \"1276\", name: \"Klippan\" },\r\n { id: \"0330\", name: \"Knivsta\" },\r\n { id: \"2282\", name: \"Kramfors\" },\r\n { id: \"1290\", name: \"Kristianstad\" },\r\n { id: \"1781\", name: \"Kristinehamn\" },\r\n { id: \"2309\", name: \"Krokom\" },\r\n { id: \"1881\", name: \"Kumla\" },\r\n { id: \"1384\", name: \"Kungsbacka\" },\r\n { id: \"1960\", name: \"Kungsör\" },\r\n { id: \"1482\", name: \"Kungälv\" },\r\n { id: \"1261\", name: \"Kävlinge\" },\r\n { id: \"1983\", name: \"Köping\" },\r\n /*{ L - 21 st}*/\r\n { id: \"1381\", name: \"Laholm\" },\r\n { id: \"1282\", name: \"Landskrona\" },\r\n { id: \"1860\", name: \"Laxå\" },\r\n { id: \"1814\", name: \"Lekeberg\" },\r\n { id: \"2029\", name: \"Leksand\" },\r\n { id: \"1441\", name: \"Lerum\" },\r\n { id: \"0761\", name: \"Lessebo\" },\r\n { id: \"0186\", name: \"Lidingö\" },\r\n { id: \"1494\", name: \"Lidköping\" },\r\n { id: \"1462\", name: \"Lilla Edet\" },\r\n { id: \"1885\", name: \"Lindesberg\" },\r\n { id: \"0580\", name: \"Linköping\" },\r\n { id: \"0781\", name: \"Ljungby\" },\r\n { id: \"2161\", name: \"Ljusdal\" },\r\n { id: \"1864\", name: \"Ljusnarsberg\" },\r\n { id: \"1262\", name: \"Lomma\" },\r\n { id: \"2085\", name: \"Ludvika\" },\r\n { id: \"2580\", name: \"Luleå\" },\r\n { id: \"1281\", name: \"Lund\" },\r\n { id: \"2481\", name: \"Lycksele\" },\r\n { id: \"1484\", name: \"Lysekil\" },\r\n /*{ M - 16 st}*/\r\n { id: \"1280\", name: \"Malmö\" },\r\n { id: \"2023\", name: \"Malung-Sälen\" },\r\n { id: \"2418\", name: \"Malå\" },\r\n { id: \"1493\", name: \"Mariestad\" },\r\n { id: \"1463\", name: \"Mark\" },\r\n { id: \"0767\", name: \"Markaryd\" },\r\n { id: \"1461\", name: \"Mellerud\" },\r\n { id: \"0586\", name: \"Mjölby\" },\r\n { id: \"2062\", name: \"Mora\" },\r\n { id: \"0583\", name: \"Motala\" },\r\n { id: \"0642\", name: \"Mullsjö\" },\r\n { id: \"1430\", name: \"Munkedal\" },\r\n { id: \"1762\", name: \"Munkfors\" },\r\n { id: \"1481\", name: \"Mölndal\" },\r\n { id: \"0861\", name: \"Mönsterås\" },\r\n { id: \"0840\", name: \"Mörbylånga\" },\r\n /*{ N - 13 st}*/\r\n { id: \"0182\", name: \"Nacka\" },\r\n { id: \"1884\", name: \"Nora\" },\r\n { id: \"1962\", name: \"Norberg\" },\r\n { id: \"2132\", name: \"Nordanstig\" },\r\n { id: \"2401\", name: \"Nordmaling\" },\r\n { id: \"0581\", name: \"Norrköping\" },\r\n { id: \"0188\", name: \"Norrtälje\" },\r\n { id: \"2417\", name: \"Norsjö\" },\r\n { id: \"0881\", name: \"Nybro\" },\r\n { id: \"0140\", name: \"Nykvarn\" },\r\n { id: \"0480\", name: \"Nyköping\" },\r\n { id: \"0192\", name: \"Nynäshamn\" },\r\n { id: \"0682\", name: \"Nässjö\" },\r\n /*{ O - 8 st}*/\r\n { id: \"2101\", name: \"Ockelbo\" },\r\n { id: \"1060\", name: \"Olofström\" },\r\n { id: \"2034\", name: \"Orsa\" },\r\n { id: \"1421\", name: \"Orust\" },\r\n { id: \"1273\", name: \"Osby\" },\r\n { id: \"0882\", name: \"Oskarshamn\" },\r\n { id: \"2121\", name: \"Ovanåker\" },\r\n { id: \"0481\", name: \"Oxelösund\" },\r\n /*{ P - 4 st}*/\r\n { id: \"2521\", name: \"Pajala\" },\r\n { id: \"1402\", name: \"Partille\" },\r\n { id: \"1275\", name: \"Perstorp\" },\r\n { id: \"2581\", name: \"Piteå\" },\r\n /*{ R - 4 st}*/\r\n { id: \"2303\", name: \"Ragunda\" },\r\n { id: \"2409\", name: \"Robertsfors\" },\r\n { id: \"1081\", name: \"Ronneby\" },\r\n { id: \"2031\", name: \"Rättvik\" },\r\n /*{ M - 39 st}*/\r\n { id: \"1981\", name: \"Sala\" },\r\n { id: \"0128\", name: \"Salem\" },\r\n { id: \"2181\", name: \"Sandviken\" },\r\n { id: \"0191\", name: \"Sigtuna\" },\r\n { id: \"1291\", name: \"Simrishamn\" },\r\n { id: \"1265\", name: \"Sjöbo\" },\r\n { id: \"1495\", name: \"Skara\" },\r\n { id: \"2482\", name: \"Skellefteå\" },\r\n { id: \"1904\", name: \"Skinnskatteberg\" },\r\n { id: \"1264\", name: \"Skurup\" },\r\n { id: \"1496\", name: \"Skövde\" },\r\n { id: \"2061\", name: \"Smedjebacken\" },\r\n { id: \"2283\", name: \"Sollefteå\" },\r\n { id: \"0163\", name: \"Sollentuna\" },\r\n { id: \"0184\", name: \"Solna\" },\r\n { id: \"2422\", name: \"Sorsele\" },\r\n { id: \"1427\", name: \"Sotenäs\" },\r\n { id: \"1230\", name: \"Staffanstorp\" },\r\n { id: \"1415\", name: \"Stenungsund\" },\r\n { id: \"0180\", name: \"Stockholm\" },\r\n { id: \"1760\", name: \"Storfors\" },\r\n { id: \"2421\", name: \"Storuman\" },\r\n { id: \"0486\", name: \"Strängnäs\" },\r\n { id: \"1486\", name: \"Strömstad\" },\r\n { id: \"2313\", name: \"Strömsund\" },\r\n { id: \"0183\", name: \"Sundbyberg\" },\r\n { id: \"2281\", name: \"Sundsvall\" },\r\n { id: \"1766\", name: \"Sunne\" },\r\n { id: \"1907\", name: \"Surahammar\" },\r\n { id: \"1214\", name: \"Svalöv\" },\r\n { id: \"1263\", name: \"Svedala\" },\r\n { id: \"1465\", name: \"Svenljunga\" },\r\n { id: \"1785\", name: \"Säffle\" },\r\n { id: \"2082\", name: \"Säter\" },\r\n { id: \"0684\", name: \"Sävsjö\" },\r\n { id: \"2182\", name: \"Söderhamn\" },\r\n { id: \"0582\", name: \"Söderköping\" },\r\n { id: \"0181\", name: \"Södertälje\" },\r\n { id: \"1083\", name: \"Sölvesborg\" },\r\n /*{ T - 18 st}*/\r\n { id: \"1435\", name: \"Tanum\" },\r\n { id: \"1472\", name: \"Tibro\" },\r\n { id: \"1498\", name: \"Tidaholm\" },\r\n { id: \"0360\", name: \"Tierp\" },\r\n { id: \"2262\", name: \"Timrå\" },\r\n { id: \"0763\", name: \"Tingsryd\" },\r\n { id: \"1419\", name: \"Tjörn\" },\r\n { id: \"1270\", name: \"Tomelilla\" },\r\n { id: \"1737\", name: \"Torsby\" },\r\n { id: \"0834\", name: \"Torsås\" },\r\n { id: \"1452\", name: \"Tranemo\" },\r\n { id: \"0687\", name: \"Tranås\" },\r\n { id: \"1287\", name: \"Trelleborg\" },\r\n { id: \"1488\", name: \"Trollhättan\" },\r\n { id: \"0488\", name: \"Trosa\" },\r\n { id: \"0138\", name: \"Tyresö\" },\r\n { id: \"0160\", name: \"Täby\" },\r\n { id: \"1473\", name: \"Töreboda\" },\r\n /*{ U - 7 st}*/\r\n { id: \"1485\", name: \"Uddevalla\" },\r\n { id: \"1491\", name: \"Ulricehamn\" },\r\n { id: \"2480\", name: \"Umeå\" },\r\n { id: \"0114\", name: \"Upplands Väsby\" },\r\n { id: \"0139\", name: \"Upplands-Bro\" },\r\n { id: \"0380\", name: \"Uppsala\" },\r\n { id: \"0760\", name: \"Uppvidinge\" },\r\n /*{ V - 22 st}*/\r\n { id: \"0584\", name: \"Vadstena\" },\r\n { id: \"0665\", name: \"Vaggeryd\" },\r\n { id: \"0563\", name: \"Valdemarsvik\" },\r\n { id: \"0115\", name: \"Vallentuna\" },\r\n { id: \"2021\", name: \"Vansbro\" },\r\n { id: \"1470\", name: \"Vara\" },\r\n { id: \"1383\", name: \"Varberg\" },\r\n { id: \"0187\", name: \"Vaxholm\" },\r\n { id: \"1233\", name: \"Vellinge\" },\r\n { id: \"0685\", name: \"Vetlanda\" },\r\n { id: \"2462\", name: \"Vilhelmina\" },\r\n { id: \"0884\", name: \"Vimmerby\" },\r\n { id: \"2404\", name: \"Vindeln\" },\r\n { id: \"0428\", name: \"Vingåker\" },\r\n { id: \"1442\", name: \"Vårgårda\" },\r\n { id: \"1487\", name: \"Vänersborg\" },\r\n { id: \"2460\", name: \"Vännäs\" },\r\n { id: \"0120\", name: \"Värmdö\" },\r\n { id: \"0683\", name: \"Värnamo\" },\r\n { id: \"0883\", name: \"Västervik\" },\r\n { id: \"1980\", name: \"Västerås\" },\r\n { id: \"0780\", name: \"Växjö\" },\r\n /*{ Y - 2 st}*/\r\n { id: \"0512\", name: \"Ydre\" },\r\n { id: \"1286\", name: \"Ystad\" },\r\n /*{ Å - 7 st}*/\r\n { id: \"1492\", name: \"Åmål\" },\r\n { id: \"2260\", name: \"Ånge\" },\r\n { id: \"2321\", name: \"Åre\" },\r\n { id: \"1765\", name: \"Årjäng\" },\r\n { id: \"1277\", name: \"Åstorp\" },\r\n { id: \"2463\", name: \"Åsele\" },\r\n { id: \"0561\", name: \"Åtvidaberg\" },\r\n /*{ M - 5 st}*/\r\n { id: \"0765\", name: \"Älmhult\" },\r\n { id: \"2039\", name: \"Älvdalen\" },\r\n { id: \"0319\", name: \"Älvkarleby\" },\r\n { id: \"2560\", name: \"Älvsbyn\" },\r\n { id: \"1292\", name: \"Ängelholm\" },\r\n /*{ M - 11 st}*/\r\n { id: \"1407\", name: \"Öckerö\" },\r\n { id: \"0509\", name: \"Ödeshög\" },\r\n { id: \"1880\", name: \"Örebro\" },\r\n { id: \"1257\", name: \"Örkelljunga\" },\r\n { id: \"2284\", name: \"Örnsköldsvik\" },\r\n { id: \"2380\", name: \"Östersund\" },\r\n { id: \"0117\", name: \"Österåker\" },\r\n { id: \"0382\", name: \"Östhammar\" },\r\n { id: \"1256\", name: \"Östra Göinge\" },\r\n { id: \"2513\", name: \"Överkalix\" },\r\n { id: \"2518\", name: \"Övertorneå\" }\r\n ];\r\n return municipalityCollection;\r\n}\r\n","// Author: Arnold Andreasson, info@mellifica.se\r\n// Copyright (c) 2007-2016 Arnold Andreasson\r\n// License: MIT License as follows:\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n// =============================================================================\r\n// Javascript-implementation of \"Gauss Conformal Projection\r\n// (Transverse Mercator), Kr�gers Formulas\".\r\n// - Parameters for SWEREF99 lat-long to/from RT90 and SWEREF99\r\n// coordinates (RT90 and SWEREF99 are used in Swedish maps).\r\n// Source: http://www.lantmateriet.se/geodesi/\r\n\r\nvar axis = null; // Semi-major axis of the ellipsoid.\r\nvar flattening = null; // Flattening of the ellipsoid.\r\nvar central_meridian = null; // Central meridian for the projection.\r\nvar lat_of_origin = null; // Latitude of origin.\r\nvar scale = null; // Scale on central meridian.\r\nvar false_northing = null; // Offset for origo.\r\nvar false_easting = null; // Offset for origo.\r\n\r\n// Parameters for RT90 and SWEREF99TM.\r\n// Note: Parameters for RT90 are choosen to eliminate the\r\n// differences between Bessel and GRS80-ellipsoides.\r\n// Bessel-variants should only be used if lat/long are given as\r\n// RT90-lat/long based on the Bessel ellipsoide (from old maps).\r\n// Parameter: projection (string). Must match if-statement.\r\nexport function swedish_params(projection) {\r\n // RT90 parameters, GRS 80 ellipsoid.\r\n if (projection == \"rt90_7.5_gon_v\") {\r\n grs80_params();\r\n central_meridian = 11.0 + 18.375 / 60.0;\r\n scale = 1.000006;\r\n false_northing = -667.282;\r\n false_easting = 1500025.141;\r\n } else if (projection == \"rt90_5.0_gon_v\") {\r\n grs80_params();\r\n central_meridian = 13.0 + 33.376 / 60.0;\r\n scale = 1.0000058;\r\n false_northing = -667.13;\r\n false_easting = 1500044.695;\r\n } else if (projection == \"rt90_2.5_gon_v\") {\r\n grs80_params();\r\n central_meridian = 15.0 + 48.0 / 60.0 + 22.624306 / 3600.0;\r\n scale = 1.00000561024;\r\n false_northing = -667.711;\r\n false_easting = 1500064.274;\r\n } else if (projection == \"rt90_0.0_gon_v\") {\r\n grs80_params();\r\n central_meridian = 18.0 + 3.378 / 60.0;\r\n scale = 1.0000054;\r\n false_northing = -668.844;\r\n false_easting = 1500083.521;\r\n } else if (projection == \"rt90_2.5_gon_o\") {\r\n grs80_params();\r\n central_meridian = 20.0 + 18.379 / 60.0;\r\n scale = 1.0000052;\r\n false_northing = -670.706;\r\n false_easting = 1500102.765;\r\n } else if (projection == \"rt90_5.0_gon_o\") {\r\n grs80_params();\r\n central_meridian = 22.0 + 33.38 / 60.0;\r\n scale = 1.0000049;\r\n false_northing = -672.557;\r\n false_easting = 1500121.846;\r\n }\r\n\r\n // RT90 parameters, Bessel 1841 ellipsoid.\r\n else if (projection == \"bessel_rt90_7.5_gon_v\") {\r\n bessel_params();\r\n central_meridian = 11.0 + 18.0 / 60.0 + 29.8 / 3600.0;\r\n } else if (projection == \"bessel_rt90_5.0_gon_v\") {\r\n bessel_params();\r\n central_meridian = 13.0 + 33.0 / 60.0 + 29.8 / 3600.0;\r\n } else if (projection == \"bessel_rt90_2.5_gon_v\") {\r\n bessel_params();\r\n central_meridian = 15.0 + 48.0 / 60.0 + 29.8 / 3600.0;\r\n } else if (projection == \"bessel_rt90_0.0_gon_v\") {\r\n bessel_params();\r\n central_meridian = 18.0 + 3.0 / 60.0 + 29.8 / 3600.0;\r\n } else if (projection == \"bessel_rt90_2.5_gon_o\") {\r\n bessel_params();\r\n central_meridian = 20.0 + 18.0 / 60.0 + 29.8 / 3600.0;\r\n } else if (projection == \"bessel_rt90_5.0_gon_o\") {\r\n bessel_params();\r\n central_meridian = 22.0 + 33.0 / 60.0 + 29.8 / 3600.0;\r\n }\r\n\r\n // SWEREF99TM and SWEREF99ddmm parameters.\r\n else if (projection == \"sweref_99_tm\") {\r\n sweref99_params();\r\n central_meridian = 15.0;\r\n lat_of_origin = 0.0;\r\n scale = 0.9996;\r\n false_northing = 0.0;\r\n false_easting = 500000.0;\r\n } else if (projection == \"sweref_99_1200\") {\r\n sweref99_params();\r\n central_meridian = 12.0;\r\n } else if (projection == \"sweref_99_1330\") {\r\n sweref99_params();\r\n central_meridian = 13.5;\r\n } else if (projection == \"sweref_99_1500\") {\r\n sweref99_params();\r\n central_meridian = 15.0;\r\n } else if (projection == \"sweref_99_1630\") {\r\n sweref99_params();\r\n central_meridian = 16.5;\r\n } else if (projection == \"sweref_99_1800\") {\r\n sweref99_params();\r\n central_meridian = 18.0;\r\n } else if (projection == \"sweref_99_1415\") {\r\n sweref99_params();\r\n central_meridian = 14.25;\r\n } else if (projection == \"sweref_99_1545\") {\r\n sweref99_params();\r\n central_meridian = 15.75;\r\n } else if (projection == \"sweref_99_1715\") {\r\n sweref99_params();\r\n central_meridian = 17.25;\r\n } else if (projection == \"sweref_99_1845\") {\r\n sweref99_params();\r\n central_meridian = 18.75;\r\n } else if (projection == \"sweref_99_2015\") {\r\n sweref99_params();\r\n central_meridian = 20.25;\r\n } else if (projection == \"sweref_99_2145\") {\r\n sweref99_params();\r\n central_meridian = 21.75;\r\n } else if (projection == \"sweref_99_2315\") {\r\n sweref99_params();\r\n central_meridian = 23.25;\r\n }\r\n\r\n // Test-case:\r\n //\tLat: 66 0'0\", lon: 24 0'0\".\r\n //\tX:1135809.413803 Y:555304.016555.\r\n else if (projection == \"test_case\") {\r\n axis = 6378137.0;\r\n flattening = 1.0 / 298.257222101;\r\n central_meridian = 13.0 + 35.0 / 60.0 + 7.692 / 3600.0;\r\n lat_of_origin = 0.0;\r\n scale = 1.00000254;\r\n false_northing = -6226307.864;\r\n false_easting = 84182.879;\r\n\r\n // Not a valid projection.\r\n } else {\r\n central_meridian = null;\r\n }\r\n}\r\n// Sets of default parameters.\r\nfunction grs80_params() {\r\n axis = 6378137.0; // GRS 80.\r\n flattening = 1.0 / 298.257222101; // GRS 80.\r\n central_meridian = null;\r\n lat_of_origin = 0.0;\r\n}\r\nfunction bessel_params() {\r\n axis = 6377397.155; // Bessel 1841.\r\n flattening = 1.0 / 299.1528128; // Bessel 1841.\r\n central_meridian = null;\r\n lat_of_origin = 0.0;\r\n scale = 1.0;\r\n false_northing = 0.0;\r\n false_easting = 1500000.0;\r\n}\r\nfunction sweref99_params() {\r\n axis = 6378137.0; // GRS 80.\r\n flattening = 1.0 / 298.257222101; // GRS 80.\r\n central_meridian = null;\r\n lat_of_origin = 0.0;\r\n scale = 1.0;\r\n false_northing = 0.0;\r\n false_easting = 150000.0;\r\n}\r\n\r\n// Conversion from geodetic coordinates to grid coordinates.\r\nexport function geodetic_to_grid(latitude, longitude) {\r\n var x_y = new Array(2);\r\n if (central_meridian == null) {\r\n return x_y;\r\n }\r\n // Prepare ellipsoid-based stuff.\r\n var e2 = flattening * (2.0 - flattening);\r\n var n = flattening / (2.0 - flattening);\r\n var a_roof =\r\n (axis / (1.0 + n)) * (1.0 + (n * n) / 4.0 + (n * n * n * n) / 64.0);\r\n var A = e2;\r\n var B = (5.0 * e2 * e2 - e2 * e2 * e2) / 6.0;\r\n var C = (104.0 * e2 * e2 * e2 - 45.0 * e2 * e2 * e2 * e2) / 120.0;\r\n var D = (1237.0 * e2 * e2 * e2 * e2) / 1260.0;\r\n var beta1 =\r\n n / 2.0 -\r\n (2.0 * n * n) / 3.0 +\r\n (5.0 * n * n * n) / 16.0 +\r\n (41.0 * n * n * n * n) / 180.0;\r\n var beta2 =\r\n (13.0 * n * n) / 48.0 -\r\n (3.0 * n * n * n) / 5.0 +\r\n (557.0 * n * n * n * n) / 1440.0;\r\n var beta3 = (61.0 * n * n * n) / 240.0 - (103.0 * n * n * n * n) / 140.0;\r\n var beta4 = (49561.0 * n * n * n * n) / 161280.0;\r\n\r\n // Convert.\r\n var deg_to_rad = Math.PI / 180.0;\r\n var phi = latitude * deg_to_rad;\r\n var lambda = longitude * deg_to_rad;\r\n var lambda_zero = central_meridian * deg_to_rad;\r\n\r\n var phi_star =\r\n phi -\r\n Math.sin(phi) *\r\n Math.cos(phi) *\r\n (A +\r\n B * Math.pow(Math.sin(phi), 2) +\r\n C * Math.pow(Math.sin(phi), 4) +\r\n D * Math.pow(Math.sin(phi), 6));\r\n var delta_lambda = lambda - lambda_zero;\r\n var xi_prim = Math.atan(Math.tan(phi_star) / Math.cos(delta_lambda));\r\n var eta_prim = math_atanh(Math.cos(phi_star) * Math.sin(delta_lambda));\r\n var x =\r\n scale *\r\n a_roof *\r\n (xi_prim +\r\n beta1 * Math.sin(2.0 * xi_prim) * math_cosh(2.0 * eta_prim) +\r\n beta2 * Math.sin(4.0 * xi_prim) * math_cosh(4.0 * eta_prim) +\r\n beta3 * Math.sin(6.0 * xi_prim) * math_cosh(6.0 * eta_prim) +\r\n beta4 * Math.sin(8.0 * xi_prim) * math_cosh(8.0 * eta_prim)) +\r\n false_northing;\r\n var y =\r\n scale *\r\n a_roof *\r\n (eta_prim +\r\n beta1 * Math.cos(2.0 * xi_prim) * math_sinh(2.0 * eta_prim) +\r\n beta2 * Math.cos(4.0 * xi_prim) * math_sinh(4.0 * eta_prim) +\r\n beta3 * Math.cos(6.0 * xi_prim) * math_sinh(6.0 * eta_prim) +\r\n beta4 * Math.cos(8.0 * xi_prim) * math_sinh(8.0 * eta_prim)) +\r\n false_easting;\r\n x_y[0] = Math.round(x * 1000.0) / 1000.0;\r\n x_y[1] = Math.round(y * 1000.0) / 1000.0;\r\n //\tx_y[0] = x;\r\n //\tx_y[1] = y;\r\n return x_y;\r\n}\r\n\r\n// Conversion from grid coordinates to geodetic coordinates.\r\nfunction grid_to_geodetic(x, y) {\r\n var lat_lon = new Array(2);\r\n if (central_meridian == null) {\r\n return lat_lon;\r\n }\r\n // Prepare ellipsoid-based stuff.\r\n var e2 = flattening * (2.0 - flattening);\r\n var n = flattening / (2.0 - flattening);\r\n var a_roof =\r\n (axis / (1.0 + n)) * (1.0 + (n * n) / 4.0 + (n * n * n * n) / 64.0);\r\n var delta1 =\r\n n / 2.0 -\r\n (2.0 * n * n) / 3.0 +\r\n (37.0 * n * n * n) / 96.0 -\r\n (n * n * n * n) / 360.0;\r\n var delta2 =\r\n (n * n) / 48.0 + (n * n * n) / 15.0 - (437.0 * n * n * n * n) / 1440.0;\r\n var delta3 = (17.0 * n * n * n) / 480.0 - (37 * n * n * n * n) / 840.0;\r\n var delta4 = (4397.0 * n * n * n * n) / 161280.0;\r\n\r\n var Astar = e2 + e2 * e2 + e2 * e2 * e2 + e2 * e2 * e2 * e2;\r\n var Bstar =\r\n -(7.0 * e2 * e2 + 17.0 * e2 * e2 * e2 + 30.0 * e2 * e2 * e2 * e2) / 6.0;\r\n var Cstar = (224.0 * e2 * e2 * e2 + 889.0 * e2 * e2 * e2 * e2) / 120.0;\r\n var Dstar = -(4279.0 * e2 * e2 * e2 * e2) / 1260.0;\r\n\r\n // Convert.\r\n var deg_to_rad = Math.PI / 180;\r\n var lambda_zero = central_meridian * deg_to_rad;\r\n var xi = (x - false_northing) / (scale * a_roof);\r\n var eta = (y - false_easting) / (scale * a_roof);\r\n var xi_prim =\r\n xi -\r\n delta1 * Math.sin(2.0 * xi) * math_cosh(2.0 * eta) -\r\n delta2 * Math.sin(4.0 * xi) * math_cosh(4.0 * eta) -\r\n delta3 * Math.sin(6.0 * xi) * math_cosh(6.0 * eta) -\r\n delta4 * Math.sin(8.0 * xi) * math_cosh(8.0 * eta);\r\n var eta_prim =\r\n eta -\r\n delta1 * Math.cos(2.0 * xi) * math_sinh(2.0 * eta) -\r\n delta2 * Math.cos(4.0 * xi) * math_sinh(4.0 * eta) -\r\n delta3 * Math.cos(6.0 * xi) * math_sinh(6.0 * eta) -\r\n delta4 * Math.cos(8.0 * xi) * math_sinh(8.0 * eta);\r\n var phi_star = Math.asin(Math.sin(xi_prim) / math_cosh(eta_prim));\r\n var delta_lambda = Math.atan(math_sinh(eta_prim) / Math.cos(xi_prim));\r\n var lon_radian = lambda_zero + delta_lambda;\r\n var lat_radian =\r\n phi_star +\r\n Math.sin(phi_star) *\r\n Math.cos(phi_star) *\r\n (Astar +\r\n Bstar * Math.pow(Math.sin(phi_star), 2) +\r\n Cstar * Math.pow(Math.sin(phi_star), 4) +\r\n Dstar * Math.pow(Math.sin(phi_star), 6));\r\n lat_lon[0] = (lat_radian * 180.0) / Math.PI;\r\n lat_lon[1] = (lon_radian * 180.0) / Math.PI;\r\n return lat_lon;\r\n}\r\n\r\n// Missing functions in the Math library.\r\nfunction math_sinh(value) {\r\n return 0.5 * (Math.exp(value) - Math.exp(-value));\r\n}\r\nfunction math_cosh(value) {\r\n return 0.5 * (Math.exp(value) + Math.exp(-value));\r\n}\r\nfunction math_atanh(value) {\r\n return 0.5 * Math.log((1.0 + value) / (1.0 - value));\r\n}\r\n","import axios from \"axios\";\r\nimport { municipalities } from \"../data/kommuner\";\r\nimport {\r\n geodetic_to_grid,\r\n swedish_params\r\n} from \"../LatLongConverter/geodesi/gausskruger\";\r\n//Find users muncicipality\r\nexport async function findUsersMunicipality(latitude, longitude) {\r\n var lat_lon = convertLatAndLongToSweRef(latitude, longitude);\r\n return getMunicipalityCode(lat_lon)\r\n .then(response => {\r\n if (\r\n Array.isArray(response.data.features) &&\r\n response.data.features.length\r\n ) {\r\n return findUsersMunicipalityObject(response.data.features[0].id);\r\n } else {\r\n throw new UserException();\r\n }\r\n })\r\n .catch(error => {\r\n throw new UserException();\r\n });\r\n}\r\n\r\nfunction UserException() {\r\n var error = {\r\n message:\r\n \"Vi hittade tyvärr inte din position, du får välja bland kommunerna själv.\"\r\n };\r\n return error;\r\n}\r\n//Return users municipality in top of the list.\r\nexport function findUsersMunicipalityObject(id) {\r\n var municipalitySelector = null;\r\n municipalitySelector = municipalities();\r\n var secondElement = municipalitySelector.find(function(item) {\r\n return item.id == id;\r\n });\r\n var your_position_text = \" - din position\";\r\n municipalitySelector.splice(municipalitySelector.indexOf(secondElement), 1);\r\n var your_position = secondElement.name.concat(your_position_text);\r\n secondElement.name = your_position;\r\n municipalitySelector.unshift(secondElement);\r\n return municipalitySelector;\r\n}\r\n\r\n//Convert from WGS 84 To SWEREF 99 TM 3006\r\nfunction convertLatAndLongToSweRef(latitude, longitude) {\r\n var lat_lon = null;\r\n swedish_params(\"sweref_99_tm\");\r\n return (lat_lon = geodetic_to_grid(latitude, longitude));\r\n}\r\n//Retrieves the user's municipality based on geoposition\r\nexport async function getMunicipalityCode(lat_lon) {\r\n var query = {\r\n geometri: {\r\n type: \"Point\",\r\n crs: { type: \"name\", properties: { name: \"urn:ogc:def:crs:EPSG::3006\" } },\r\n coordinates: [lat_lon[1], lat_lon[0]]\r\n },\r\n buffer: 50\r\n };\r\n var token = process.env.REACT_APP_LANTMATERI_TOKEN;\r\n return axios({\r\n method: \"post\",\r\n data: query,\r\n url: process.env.REACT_APP_LANTMATERI_API_URL,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + token\r\n }\r\n })\r\n .then(response => {\r\n return response;\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n}\r\n//Retrieves the user's geoposition from the browser\r\nexport function getCurrentPosition(options = {}) {\r\n return new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(resolve, reject, options);\r\n });\r\n}\r\n\r\n// // //Checks whether the user has consented to use his or her position\r\n// export async function checkPermission() {\r\n// return await navigator.permissions\r\n// .query({ name: \"geolocation\" })\r\n// .then(function(result) {\r\n// console.log(\"inside geo permission awaited result\");\r\n// return result.state;\r\n// });\r\n// }\r\n\r\n//Checks whether the user has consented to use his or her position\r\nexport async function checkPermission() {\r\n return (await navigator.permissions.query({ name: \"geolocation\" })).state;\r\n}\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport {\r\n messageBoxBackground,\r\n lineColor,\r\n primaryColor\r\n} from \"./../../Util/Colors\";\r\nimport { roboto } from \"../../Util/StyleProps\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\n\r\nconst MessageBox = styled.div.attrs({\r\n tabIndex: 0\r\n})`\r\n font-family: ${roboto};\r\n font-weight: 400;\r\n font-size: 16px;\r\n line-height: 24px;\r\n display: ${props => (props.show ? \"block\" : \"none\")};\r\n background-color: ${props =>\r\n props.backgroundColor ? props.backgroundColor : messageBoxBackground};\r\n max-width: 690px;\r\n border: 1px solid ${lineColor};\r\n box-sizing: border-box;\r\n padding-left: 24px;\r\n padding-right: 24px;\r\n margin-bottom: 30px; \r\n \r\n & button { \r\n background-color: ${props =>\r\n props.backgroundColor ? props.backgroundColor : messageBoxBackground};\r\n border: 1px solid ${primaryColor};\r\n color: ${primaryColor};\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 34px;\r\n border-radius: 25px;\r\n margin-top: 12px;\r\n margin-bottom: 24px;\r\n padding-left: 18px;\r\n padding-right: 18px;\r\n }\r\n \r\n & button:hover {\r\n text-decoration: underline;\r\n }\r\n & button:click {\r\n text-decoration: underline;\r\n opacity: .82;\r\n }\r\n\r\n @media${device.tablet} {\r\n font-size: 18px;\r\n line-height: 30px;\r\n padding-left: 30px;\r\n padding-right: 30px;\r\n\r\n & button { \r\n margin-top: 18px;\r\n margin-bottom: 35px; \r\n }\r\n }\r\n \r\n &:focus {\r\n outline: 1px solid ${lineColor};\r\n }\r\n`;\r\n\r\nconst Heading = styled.h3.attrs({\r\n tabIndex: 0\r\n})`\r\n padding: 0;\r\n font-family: ${roboto};\r\n font-weight: 700;\r\n font-size: 18px;\r\n line-height: 30px;\r\n margin-top: 24px;\r\n`;\r\n\r\nconst Message = props => {\r\n const { show, backgroundColor } = props;\r\n const messageBoxRef = useRef(null);\r\n\r\n useEffect(() => {\r\n messageBoxRef.current.focus();\r\n });\r\n return (\r\n \r\n {props.heading}\r\n

{props.message}

\r\n \r\n Stäng\r\n \r\n \r\n );\r\n};\r\nexport default Message;\r\n","import React, { Component } from \"react\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport BlockLayout from \"../Layout/BlockLayout\";\r\nimport Autocomplete, {\r\n createFilterOptions\r\n} from \"@material-ui/lab/Autocomplete\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport styled from \"styled-components\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\nimport { Container, Row, Col, Form } from \"react-bootstrap\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport { municipalities } from \"../../data/kommuner\";\r\nimport Switch from \"@material-ui/core/Switch\";\r\n\r\nimport {\r\n findUsersMunicipality,\r\n getCurrentPosition,\r\n checkPermission,\r\n handleError\r\n} from \"../../data/GeoApi\";\r\nimport Message from \"./Message\";\r\n\r\nimport {\r\n ptSerif,\r\n roboto,\r\n lineheight34,\r\n letterSpacingPT_serif\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor } from \"../../Util/Colors\";\r\n\r\nconst municipalitySelectorDefault = municipalities();\r\nmunicipalitySelectorDefault.unshift({ id: 0, name: \"Din position\" });\r\nvar municipalitySelector = [];\r\n\r\nconst Heading = styled.h1`\r\n font-family: ${ptSerif};\r\n letter-spacing: ${letterSpacingPT_serif};\r\n font-weight: bold;\r\n font-size: 24px;\r\n line-height: ${lineheight34}\r\n font-style: normal;\r\n margin: 0px;\r\n\r\n @media${device.tablet}{\r\n font-size: 36px;\r\n line-height: 50px;\r\n }\r\n\r\n`;\r\n\r\nconst TextFieldWrapper = styled.div`\r\n max-width: 250px;\r\n\r\n @media${device.tablet}{\r\n min-width:330px;\r\n max-width: 330px;\r\n }\r\n`;\r\n\r\nconst ButtonWrapper = styled.div`\r\n .btn-primary:hover {\r\n background-color: ${primaryColor} !important;\r\n border-color: ${primaryColor} !important;\r\n text-decoration:underline;\r\n }\r\n\r\n .btn-primary:not(:disabled):not(.disabled):active,\r\n .show > .btn-primary.dropdown-toggle {\r\n background-color: ${primaryColor} !important;\r\n border-color: ${primaryColor} !important;\r\n opacity: .82;\r\n }\r\n\r\n .btn-primary:disabled {\r\n background-color: ${primaryColor} !important;\r\n border-color: ${primaryColor} !important;\r\n opacity: .2;\r\n text-decoration:none;\r\n }\r\n\r\n & button {\r\n border-radius: 25px;\r\n margin-top: 24px;\r\n margin-bottom: 24px;\r\n padding: 0 18px !important;\r\n line-height: 34px;\r\n width: 13em;\r\n background-color: ${primaryColor};\r\n border-color: ${primaryColor};\r\n font-family: ${roboto};\r\n font-weight: 500;\r\n font-size: 14px;\r\n\r\n @media${device.tablet}{ \r\n padding: 0 24px !important;\r\n line-height: 42px;\r\n }\r\n }\r\n\r\n \r\n`;\r\n\r\nconst MunicipalityWrapper = styled.div`\r\n\r\n& label {\r\n margin-bottom: 0;\r\n line-height: ${lineheight34}\r\n}\r\n\r\n.MuiFormControl-marginNormal {\r\n margin-bottom: 0;\r\n margin-top: 0 !important;\r\n}\r\n// Line under input-field\r\n\r\n.MuiInput-underline:before {\r\n border-bottom: 1px solid ${primaryColor};\r\n border-bottom-color: ${primaryColor};\r\n opacity: 0.47;\r\n bottom:0;\r\n}\r\n.MuiInput-underline:hover:not(.Mui-disabled):before {\r\n border-bottom: 1px solid ${primaryColor};\r\n border-bottom-color: ${primaryColor};\r\n opacity: 0.47;\r\n}\r\n\r\n& input {\r\n font-family: ${ptSerif};\r\n letter-spacing: ${letterSpacingPT_serif};\r\n font-weight:bold;\r\n font-size: 24px;\r\n line-height: ${lineheight34} ;\r\n height:34px;\r\n}\r\n\r\n@media${device.tablet}{\r\n display:flex;\r\n flex-wrap: wrap;\r\n\r\n .MuiInput-underline:before {\r\n bottom:2px !important;\r\n}\r\n\r\n & input {\r\n flex: 1 0 50%;\r\n font-size: 36px;\r\n line-height: 50px;\r\n height: 50px;\r\n \r\n }\r\n & label {\r\n flex: 1 0 50%;\r\n line-height: 50px;\r\n min-width:376px;\r\n max-width:376px;\r\n }\r\n}\r\n`;\r\n\r\nconst classes = {\r\n root: {\r\n width: 300,\r\n fontSize: 20\r\n },\r\n TextField: {\r\n \"& input\": {\r\n color: \"#1E00BE\",\r\n width: 0,\r\n padding: 0\r\n },\r\n \"& .MunicipalitySelector-Autocomplete-4\": {\r\n marginBottom: 0,\r\n marginTop: 0,\r\n lineHeight: 42\r\n },\r\n \"& svg\": {\r\n color: \"#1E00BE\"\r\n }\r\n },\r\n Autocomplete: {\r\n alignContent: \"center\",\r\n lineHeight: 0,\r\n \"& span\": {\r\n width: \"100%\"\r\n }\r\n },\r\n option: {\r\n \"& > span\": {\r\n marginRight: 10,\r\n fontSize: 30\r\n }\r\n }\r\n};\r\n\r\nexport class MunicipalitySelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: null,\r\n municipalityid1: props.requestedMunicipalities[\"1\"]\r\n ? props.requestedMunicipalities[\"1\"].id\r\n : null,\r\n municipalityid2: props.requestedMunicipalities[\"2\"]\r\n ? props.requestedMunicipalities[\"2\"].id\r\n : null,\r\n municipalityname1: props.requestedMunicipalities[\"1\"]\r\n ? props.requestedMunicipalities[\"1\"].name\r\n : null,\r\n municipalityname2: props.requestedMunicipalities[\"2\"]\r\n ? props.requestedMunicipalities[\"2\"].name\r\n : null,\r\n hasmessage: false,\r\n message: null,\r\n municipalitySelector: municipalitySelectorDefault,\r\n hasAcceptedGeoTracking: false,\r\n userCurrentMuncipality: props.requestedMunicipalities[\"1\"],\r\n userCurrentMuncipality2: props.requestedMunicipalities[\"2\"]\r\n };\r\n this.onMunicipalityChange1 = this.onMunicipalityChange1.bind(this);\r\n this.onMunicipalityChange2 = this.onMunicipalityChange2.bind(this);\r\n this.toogleGeoPosition = this.toogleGeoPosition.bind(this);\r\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\n if (this.state.municipalityid1 || this.state.municipalityid2) {\r\n this.preloadMuncicipality();\r\n } else {\r\n if (!isSafari) {\r\n this.checkIfUserHasAcceptedGeoTracking();\r\n }\r\n }\r\n }\r\n\r\n preloadMuncicipality = async () => {\r\n await this.fetchMunicipalityData();\r\n };\r\n\r\n getUsersGeoMuncicipality = async () => {\r\n try {\r\n const { coords } = await getCurrentPosition();\r\n municipalitySelector = await findUsersMunicipality(\r\n coords.latitude,\r\n coords.longitude\r\n );\r\n this.updateMunicipalityUrl(municipalitySelector[0].id, this.state.municipalityid2);\r\n\r\n this.setState({\r\n hasAcceptedGeoTracking: true,\r\n municipalityid1: municipalitySelector[0].id,\r\n municipalityname1: municipalitySelector[0].name,\r\n userCurrentMuncipality: municipalitySelector[0],\r\n municipalitySelector: municipalitySelector\r\n });\r\n } catch (error) {\r\n var msg = null;\r\n\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n msg =\r\n \"Du måste tillåta webbläsaren att känna av var du befinner dig. Det gör du i webbläsarens inställningar.\";\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n msg =\r\n \"Vi hittar tyvärr inte din plats, du får välja din egen position.\";\r\n break;\r\n case error.UNKNOWN_ERROR:\r\n msg = \"Något gick fel, försök igen.\";\r\n break;\r\n default:\r\n msg = \"Något gick fel, försök igen.\";\r\n }\r\n this.setState({\r\n hasmessage: true,\r\n message: msg\r\n });\r\n }\r\n };\r\n //Checks whether the user has previously approved geo-positioning\r\n checkIfUserHasAcceptedGeoTracking = async () => {\r\n var permission = await checkPermission();\r\n if (permission === \"granted\") {\r\n this.getUsersGeoMuncicipality();\r\n } else {\r\n this.setState({\r\n municipalitySelector: municipalitySelectorDefault\r\n });\r\n }\r\n };\r\n\r\n fetchMunicipalityData = () => {\r\n this.props.datahandler([\r\n this.state.municipalityid1,\r\n this.state.municipalityid2\r\n ]);\r\n };\r\n\r\n updateMunicipalityUrl = (m1, m2) => {\r\n if (window.history.pushState) {\r\n var newurl =\r\n window.location.protocol +\r\n \"//\" +\r\n window.location.host +\r\n window.location.pathname +\r\n \"?id1=\" +\r\n m1 +\r\n \"&id2=\" +\r\n m2;\r\n window.history.pushState({ path: newurl }, \"\", newurl);\r\n }\r\n };\r\n\r\n onMunicipalityChange1 = (event, object) => {\r\n if (object) {\r\n if (object.id === 0) {\r\n this.getUsersGeoMuncicipality();\r\n } else {\r\n this.updateMunicipalityUrl(object.id, this.state.municipalityid2);\r\n this.setState({\r\n municipalityid1: object.id,\r\n municipalityname1: object.name,\r\n userCurrentMuncipality: object\r\n });\r\n }\r\n } else {\r\n this.updateMunicipalityUrl(null, this.state.municipalityid2);\r\n this.setState({\r\n municipalityid1: null,\r\n municipalityName1: null,\r\n userCurrentMuncipality: null\r\n });\r\n }\r\n };\r\n\r\n onMunicipalityChange2 = (event, object) => {\r\n if (object) {\r\n this.updateMunicipalityUrl(this.state.municipalityid1, object.id);\r\n this.setState({\r\n municipalityid2: object.id,\r\n municipalityname2: object.name,\r\n userCurrentMuncipality2: object\r\n });\r\n } else {\r\n this.updateMunicipalityUrl(this.state.municipalityid1, null);\r\n this.setState({\r\n municipalityid2: null,\r\n municipalityName2: null,\r\n userCurrentMuncipality2: object\r\n });\r\n }\r\n };\r\n\r\n //Gives the user a choice to enable geopositioning\r\n toogleGeoPosition() {\r\n if (this.state.hasAcceptedGeoTracking) {\r\n this.setState({ hasmessage: true });\r\n this.setState({\r\n message:\r\n \"Om du vill stänga av positionering, måste du göra det i din webbläsare.\"\r\n });\r\n } else {\r\n this.getUsersGeoMuncicipality();\r\n }\r\n }\r\n\r\n handleClickMessageBox = () => {\r\n this.setState({ hasmessage: false });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n Jag vill se kommunen\r\n \r\n\r\n option.name}\r\n getOptionDisabled={option =>\r\n option.id === this.state.municipalityid2\r\n }\r\n filterOptions={createFilterOptions({\r\n matchFrom: \"start\",\r\n stringify: option => option.name\r\n })}\r\n renderInput={params => (\r\n \r\n \r\n \r\n )}\r\n />\r\n\r\n \r\n och jämföra den med \r\n \r\n\r\n option.name}\r\n getOptionDisabled={option =>\r\n option.id === this.state.municipalityid1\r\n }\r\n filterOptions={createFilterOptions({\r\n matchFrom: \"start\",\r\n stringify: option => option.name\r\n })}\r\n renderInput={params => (\r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n Visa kommunsiffror\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport default withStyles(classes)(MunicipalitySelector);\r\n","import React from \"react\";\r\nimport { Image } from \"react-bootstrap\";\r\nimport { Container, Row, Col } from \"react-bootstrap\";\r\n\r\nconst SectionImageBetween = props => {\r\n const { alt } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {alt}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSectionImageBetween.defaultProps = {\r\n alt: \"Bildbeskrivning finns ej\"\r\n};\r\nexport default SectionImageBetween;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { Col, Row, Figure } from \"react-bootstrap\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport { Image } from \"react-bootstrap\";\r\n\r\nimport {\r\n drukText,\r\n letterSpacingDruk,\r\n fontSizeSmall,\r\n drawLine,\r\n scaleInBottomBubbleDouble\r\n} from \"../../Util/StyleProps\";\r\nimport { secondaryColor } from \"../../Util/Colors\";\r\n\r\nconst slideInAnimation = keyframes`${slideInUp}`;\r\nconst fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst Wrapper = styled.div`\r\n margin-top: 10px;\r\n`;\r\n\r\nconst Svg = styled.svg`\r\n margin-top: 30px;\r\n`;\r\n\r\nconst G = styled.g``;\r\nconst Heading = styled.h6`\r\n font-size: 12px;\r\n font-family: Roboto;\r\n margin-left: 30px;\r\n font-weight: bold;\r\n`;\r\n\r\nconst Bubble = styled.rect`\r\n -webkit-animation: 0.5s\r\n ${props => (props.triggeranimation ? scaleInBottomBubbleDouble : \"\")}\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation: 0.5s\r\n ${props => (props.triggeranimation ? scaleInBottomBubbleDouble : \"\")}\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n fill: #ffffff;\r\n width: 90%;\r\n height: 60px;\r\n`;\r\nconst Value = styled.text`\r\n fill: ${props => props.color};\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n font-size: 35px;\r\n line-height: 33px;\r\n animation: 0.25s ${props => (props.triggeranimation ? fadeInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst ValueLine = styled.path`\r\n stroke: ${secondaryColor};\r\n stroke-width: 1;\r\n stroke-dasharray: 20;\r\n stroke-dashoffset: 20;\r\n animation: ${props => (props.triggeranimation ? drawLine : drawLine)} 0.25s;\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst ValueText = styled.text`\r\n fill: ${props => props.color};\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n font-size: ${fontSizeSmall};\r\n animation: 0.1s ${props => (props.triggeranimation ? fadeInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\nconst Text = styled.text``;\r\n\r\nconst SurfaceArea = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.value}\r\n \r\n \r\n km2\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default SurfaceArea;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { fadeInUp } from \"react-animations\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport SvgIcon from \"@material-ui/core/SvgIcon\";\r\nimport {\r\n scaleInFigure,\r\n roboto,\r\n drukText,\r\n letterSpacingDruk\r\n} from \"../../Util/StyleProps\";\r\nimport { secondaryColor } from \"../../Util/Colors\";\r\n\r\nconst fadeIn = keyframes`${fadeInUp}`;\r\n\r\nconst Wrapper = styled.div`\r\n padding-top: 15px;\r\n color: ${props => props.color};\r\n .MuiSvgIcon-root {\r\n background: #ffffff;\r\n border-radius: 50%;\r\n }\r\n`;\r\n\r\nconst FigureWrapper = styled.div`\r\n padding-top: 5px;\r\n display: flex;\r\n justify-content: start;\r\n`;\r\n\r\nconst IconWrapper = styled.div`\r\n padding-right: 15px;\r\n`;\r\nconst Heading = styled.h6`\r\n font-size: 12px;\r\n font-family: ${roboto};\r\n font-weight: bold;\r\n`;\r\nconst SubText = styled.span`\r\n font-size: 12px;\r\n font-family: ${roboto};\r\n line-height: 18px;\r\n font-weight: bold;\r\n`;\r\n\r\nconst ValueText = styled.span`\r\n font-size: ${props => (props.setFontSize ? props.setFontSize : \"18px\")}\r\n line-height: 100%;\r\n padding: ${props => (props.padding ? props.padding : 0)};\r\n color: ${props => props.color};\r\n`;\r\n\r\nconst Figure = styled.h3`\r\n font-size: ${props => props.fontSize};\r\n line-height: 18px;\r\n font-family: ${drukText};\r\n letter-spacing: ${letterSpacingDruk};\r\n margin-top: 5px;\r\n first-child: nth-last-child(n + 3);\r\n animation: 2s ${props => (props.triggerAnimation ? scaleInFigure : \"\")} 0.5s\r\n cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n -webkit-animation: ${props => (props.triggerAnimation ? scaleInFigure : \"\")}\r\n 0.5s cubic-bezier(0.175, 0.885, 0.275, 1.235);\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst KeyFigure = props => {\r\n const {\r\n value,\r\n unit,\r\n municipalityname,\r\n color,\r\n icon,\r\n subText,\r\n triggerAnimation,\r\n delay,\r\n isPercent,\r\n size\r\n } = props;\r\n return (\r\n \r\n {municipalityname}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {\" \"}\r\n {value}\r\n {isPercent ? \"%\" : \"\"}\r\n \r\n {unit}\r\n \r\n {subText ? subText : \"\"}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nKeyFigure.defaultProps = {\r\n value: 0,\r\n unit: \"\",\r\n municipalityname: \"\",\r\n color: secondaryColor,\r\n subText: \"\",\r\n icon: \"\",\r\n triggerAnimation: false,\r\n delay: 0,\r\n isPercent: false,\r\n size: \"\"\r\n};\r\n\r\nexport default KeyFigure;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport { Container, Row, Col } from \"react-bootstrap\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport image from \"../../assets/img/onion.png\";\r\nimport SectionImageBetween from \"../Elements/SectionImageBetween\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport SurfaceArea from \"../Elements/SurfaceArea\";\r\nimport KeyFigure from \"../Elements/KeyFigure\";\r\nimport { headingSmall } from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { Straighten } from \"@material-ui/icons/\";\r\nimport styled from \"styled-components\";\r\nimport {\r\n sectionLandSizeColor,\r\n sectionPopulationLocationColor\r\n} from \"../../Util/Colors\";\r\nimport municipalityimage1 from \"../../assets/img/stork.png\";\r\nimport map from \"../Map/swedenmuni\";\r\nimport municipalityimage2 from \"../../assets/img/stork.png\";\r\n\r\nconst Heading = styled.h2`\r\n font-size: 20px;\r\n font-family: PT Serif;\r\n line-height: 28px;\r\n font-style: normal;\r\n font-weight: bold;\r\n`;\r\nconst Heading4 = styled.h4`\r\n font-size: 12px;\r\n font-family: Roboto;\r\n line-height: 18px;\r\n font-style: normal;\r\n font-weight: bold;\r\n`;\r\nconst Line = styled.hr`\r\n height: auto;\r\n border: 1px solid #595959;\r\n margin-top: 10px;\r\n margin-bottom: 40px;\r\n opacity: 0.5;\r\n`;\r\n\r\nconst LandSizeContainer = props => {\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n\r\n threshold: 0\r\n });\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\nexport default LandSizeContainer;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n headingSmall,\r\n Line,\r\n FiguresWrapper,\r\n HeadingMunicipality\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { calculatePercentage, periodToComma } from \"../../Helpers/CommonHelper\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\nconst LandUseContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n const [ref, inView] = useInView({\r\n /* Optional options */\r\n threshold: 0\r\n });\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n let forestPercentage = 0;\r\n let agriculturePercentage = 0;\r\n let settelmentPercentage = 0;\r\n let otherPercentage = 0;\r\n let yearSweden = sweden.landuse ? sweden.landuse.year : \"\";\r\n\r\n if (sweden.landuse) {\r\n forestPercentage = calculatePercentage(\r\n sweden.landuse.forest,\r\n sweden.landuse.total\r\n );\r\n agriculturePercentage = calculatePercentage(\r\n sweden.landuse.agriculture,\r\n sweden.landuse.total\r\n );\r\n settelmentPercentage = calculatePercentage(\r\n sweden.landuse.settlements,\r\n sweden.landuse.total\r\n );\r\n otherPercentage = calculatePercentage(\r\n sweden.landuse.other,\r\n sweden.landuse.total\r\n );\r\n }\r\n //I hela Sverige används 2,9 procent av marken till bebyggelse. 69,1 procent är skog, 7,5 procent är jordbruksmark, och 20,6 procent är övrig mark (2015).\r\n\r\n let swedenString = `I hela Sverige används ${periodToComma(\r\n settelmentPercentage\r\n )} procent av marken till bebyggd och anlagd mark. ${periodToComma(\r\n forestPercentage\r\n )} procent är skogsmark, ${periodToComma(\r\n agriculturePercentage\r\n )} procent är jordbruksmark, \r\n och ${periodToComma(otherPercentage)} procent är öppen myrmark och övrig mark (${yearSweden}).`;\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n return municipality\r\n ? `I ${municipality.name} kommun används ${calculatePercentage(\r\n municipality.settlements,\r\n municipality.total\r\n )} procent av marken till bebyggd och anlagd mark.\r\n ${calculatePercentage(\r\n municipality.forest,\r\n municipality.total\r\n )} procent är skogsmark, ${calculatePercentage(\r\n municipality.agriculture,\r\n municipality.total\r\n )} procent är jordbruksmark, \r\n och ${calculatePercentage(\r\n municipality.other,\r\n municipality.total\r\n )} procent är öppen myrmark och övrig mark (${yearSweden}).`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LandUseContainer;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport DoubleBarSvg from \"../Charts/DoubleBarSvg\";\r\nimport {\r\n primaryColor,\r\n secondaryColor,\r\n sectionPopulationLocationColor\r\n} from \"../../Util/Colors\";\r\nimport {\r\n Line,\r\n FiguresWrapper,\r\n HeadingMunicipality\r\n} from \"../../Util/StyleProps\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport { valuePairToPercent, isCurrentYear } from \"../../Helpers/CommonHelper\";\r\nimport { useInView } from \"react-intersection-observer\";\r\n\r\nconst PopulationLocationContainer = props => {\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n\r\n const { data, sweden, scroll } = props;\r\n\r\n let valueData = [];\r\n let valueArr = [];\r\n let swedenArr, swedenString;\r\n const lastYear = sweden.populationLocation.year;\r\n swedenArr = valuePairToPercent(\r\n sweden.populationLocation,\r\n [\"urban\", \"countryside\"],\r\n 1\r\n );\r\n swedenString =\r\n \"I Sverige bor \" +\r\n swedenArr.pstring1 +\r\n \" procent i tätort och \" +\r\n swedenArr.pstring2 +\r\n \" procent utanför tätort (\" +\r\n lastYear +\r\n \").\";\r\n\r\n data.forEach((item, i) => {\r\n if (item) {\r\n valueData.push(valuePairToPercent(item, [\"urban\", \"countryside\"], 1));\r\n valueArr.push(valueData[i].value1);\r\n valueArr.push(valueData[i].value2);\r\n }\r\n });\r\n\r\n let municipality1 = valueData[0];\r\n let municipality2 = valueData[1];\r\n\r\n const max = Math.max(...valueArr);\r\n const maxColumnPairIdx = valueArr.indexOf(Math.max(...valueArr));\r\n const maxIsEven = maxColumnPairIdx % 2 == 0;\r\n\r\n const maxOffset = max;\r\n const height = 120;\r\n const width = 100;\r\n const topSpace = 64;\r\n\r\n let captions = [\"tätort\", \"landsbygd\"];\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"bor\"\r\n : \"bodde\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `I ${municipality.name} ${str} ${municipality.pstring1} procent i tätort och ${municipality.pstring2} procent på landsbyggd (år ${municipality.year}).`\r\n : \"\";\r\n };\r\n\r\n const svgAriaLabel = municipality =>\r\n municipality\r\n ? `Det här stapeldiagramet gör jämförelser i befolkning mellan tätort och landsbygd i ${municipality.name} kommun.`\r\n : \"\";\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nPopulationLocationContainer.defaultProps = {\r\n data: [],\r\n sweden: {}\r\n};\r\n\r\nexport default PopulationLocationContainer;\r\n","import axios from \"axios\";\r\nimport { getMunicipalityName, hasMunicipalityName } from \"../../data/kommuner\";\r\n\r\nconst api = axios.create({\r\n baseURL: process.env.REACT_APP_WP_PUBLIC_API_URL\r\n});\r\n\r\nexport async function getMunicipalityData(\r\n municipality1 = null,\r\n municipality2 = null,\r\n municipalities\r\n) {\r\n let response = await api.get(\r\n \"api/Municipality?id=\" + municipality1 + \"&id=\" + municipality2\r\n );\r\n return await asyncGetMunicipalityData(response.data, municipalities);\r\n}\r\n\r\nasync function asyncGetMunicipalityData(response_data, municipalities) {\r\n var data = [];\r\n data.push({\r\n population: [],\r\n populationChange: [],\r\n gender: [],\r\n genderAge: [],\r\n birthplace: [],\r\n populationLocation: [],\r\n landUse: [],\r\n income: [],\r\n emplomentExtent: [],\r\n accommodation: [],\r\n livingCondition: [],\r\n taxRate: [],\r\n election: []\r\n });\r\n //Removes null values\r\n var filtered = municipalities.filter(Boolean);\r\n\r\n //Loop structure data\r\n filtered.forEach(async (muni, idx) => {\r\n let municipality_data = await response_data;\r\n data[0].population.push(...municipality_data[idx].population);\r\n data[0].populationChange.push(...municipality_data[idx].populationChange);\r\n data[0].gender.push(...municipality_data[idx].gender);\r\n data[0].genderAge.push(...municipality_data[idx].genderAge);\r\n data[0].birthplace.push(...municipality_data[idx].birthplace);\r\n data[0].populationLocation.push(\r\n ...municipality_data[idx].populationLocation\r\n );\r\n data[0].landUse.push(...municipality_data[idx].landUse);\r\n data[0].income.push(...municipality_data[idx].income);\r\n data[0].emplomentExtent.push(...municipality_data[idx].emplomentExtent);\r\n data[0].accommodation.push(...municipality_data[idx].accommodation);\r\n data[0].livingCondition.push(...municipality_data[idx].livingCondition);\r\n data[0].taxRate.push(...municipality_data[idx].taxRate);\r\n data[0].election.push(...municipality_data[idx].election);\r\n });\r\n return data;\r\n}\r\n\r\nexport function getBrowserQueryParams() {\r\n var qd = { id1: null, id2: null };\r\n if (window.location.search)\r\n window.location.search\r\n .substr(1)\r\n .split(\"&\")\r\n .forEach(function(item) {\r\n var s = item.split(\"=\"),\r\n k = s[0],\r\n v = s[1] && decodeURIComponent(s[1]);\r\n (qd[k] = qd[k] || []).push(v);\r\n });\r\n return qd;\r\n}\r\n\r\nexport function getRequestedMunicipalities() {\r\n const bp = getBrowserQueryParams();\r\n let munObj = { \"1\": null, \"2\": null };\r\n\r\n if (bp.id1 && bp.id1[0] && hasMunicipalityName(bp.id1[0])) {\r\n munObj[\"1\"] = {\r\n id: bp.id1[0],\r\n name: getMunicipalityName(bp.id1[0])\r\n };\r\n }\r\n\r\n if (bp.id2 && bp.id2[0] && hasMunicipalityName(bp.id2[0])) {\r\n munObj[\"2\"] = {\r\n id: bp.id2[0],\r\n name: getMunicipalityName(bp.id2[0])\r\n };\r\n }\r\n\r\n return munObj;\r\n}\r\n","import React from \"react\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport styled from \"styled-components\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport { numberWithSpaces, isCurrentYear } from \"../../Helpers/CommonHelper\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport {\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport HighLineChartLine from \"../Charts/HighChartLineChart\";\r\n\r\nconst IncomeContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n triggerOnce: true,\r\n threshold: 0.5\r\n });\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n let lastYearsIncome = sweden.montelyincome\r\n ? sweden.montelyincome.values.slice(-1)[0]\r\n : \"(data saknas)\";\r\n let lastYearSweden = sweden.montelyincome\r\n ? sweden.montelyincome.years.slice(-1).pop()\r\n : \"(Årtal saknas)\";\r\n\r\n const noWrapIncome =\r\n \"\" +\r\n numberWithSpaces(lastYearsIncome) +\r\n \"\";\r\n\r\n let subText = `I Sverige är den genomsnittliga inkomsten före skatt för personer som är mellan 20 och 64 år ${noWrapIncome} kronor per månad (${lastYearSweden}).`;\r\n\r\n // Accessibility för personer som är mellan 20 och 64 år \r\n const ariaLabel = municipality => {\r\n let year = municipality.years ? municipality.years.slice(-1).pop() : null;\r\n return municipality\r\n ? `I ${municipality.name} kommun ${\r\n isCurrentYear(municipality.year) ? \"är\" : \"var\"\r\n } den genomsnittliga inkomsten före skatt ${municipality.values\r\n .slice(-1)\r\n .pop()} kronor per månad (${year ? \"år \" + year : \"årtal saknas\"})`\r\n : \"\";\r\n };\r\n\r\n const Wrapper = styled.div`\r\n .highcharts-background {\r\n fill: none;\r\n background-color: #ffd478 !important;\r\n }\r\n `;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {municipality1 ? (\r\n <>\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default IncomeContainer;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { calculatePercentage } from \"../../Helpers/CommonHelper\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport { periodToComma } from \"../../Helpers/CommonHelper\";\r\nimport {\r\n headingSmall,\r\n headingLarge,\r\n HeadingMunicipality,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\n\r\nimport KeyFigureBig from \"../Elements/KeyFigureBig\";\r\n\r\nconst EmplomentExtentContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n\r\n const lastYear = sweden.emplomentextent.year;\r\n const swedenMedium = sweden.emplomentextent.men_and_women_in_work;\r\n const swedenWomen = sweden.emplomentextent.women_in_work;\r\n const swedenMen = sweden.emplomentextent.men_in_work;\r\n\r\n // I Sverige har 79,1 procent av dem som är 16-65 år ett jobb. Det är 77,9 procent av kvinnorna som jobbar, och 80,3 procent av männen (2018).\r\n // Så många har jobb\r\n // I Sverige har 79,5 procent av dem som är 20-64 år jobb. 78,1 procent av kvinnorna har jobb och 80,8 av männen (2018).\r\n\r\n // Och under den översta kommunala procenten ändrar vi till:\r\n // har jobb\r\n\r\n const swedenString =\r\n \"I Sverige har \" +\r\n periodToComma(swedenMedium) +\r\n \" procent av dem som är 20-64 år jobb. \" +\r\n periodToComma(swedenWomen) +\r\n \" procent av kvinnorna har jobb och \" +\r\n periodToComma(swedenMen) +\r\n \" av männen (\" +\r\n lastYear +\r\n \").\";\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n return municipality\r\n ? `I ${municipality.name} kommun har ${municipality.women_and_men_in_work} procent ett jobb. ${municipality.women_in_work}\r\n procent av kvinnorna och ${municipality.men_in_work} procent av männen (${\r\n municipality.year ? \"år\" + municipality.year : \"årtal saknas\"\r\n }).`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nEmplomentExtentContainer.defaultProps = {\r\n data: [],\r\n sweden: {}\r\n};\r\n\r\nexport default EmplomentExtentContainer;\r\n\r\n\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { HeadingMunicipality, Caption } from \"../../Util/StyleProps\";\r\nimport BubbleFlexSvg from \"../Elements/BubbleFlexSvg\";\r\nimport { Col } from \"react-bootstrap\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport { scaleLinear } from \"d3-scale\";\r\n\r\nconst slideInAnimation = keyframes`${slideInUp}`;\r\nconst fadeInAnimation = keyframes`${fadeIn}`;\r\n\r\nconst Wrapper = styled.div`\r\n // margin-top: -30px;\r\n`;\r\n\r\nconst Svg = styled.svg`\r\n width: 100%;\r\n`;\r\n\r\nconst SvgBottom = styled.svg`\r\n margin-top: 0;\r\n`;\r\n\r\nconst G = styled.g``;\r\n\r\nconst Rect = styled.rect`\r\n height: ${props => props.height}px;\r\n width: ${props => props.width}px;\r\n animation: 0.75s ${props => (props.triggeranimation ? slideInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst SingleBarSvg = props => {\r\n const {\r\n valuePercentage,\r\n label,\r\n delay,\r\n triggerAnimation,\r\n color,\r\n title,\r\n titleId,\r\n lineType,\r\n caption,\r\n desc,\r\n descId,\r\n viewBoxWidth,\r\n viewBoxHeight,\r\n topSpace,\r\n maxOffset,\r\n hasBubbleBg,\r\n valueString\r\n } = props;\r\n\r\n const y = scaleLinear()\r\n .domain([0, maxOffset])\r\n .nice()\r\n .range([0, viewBoxHeight - topSpace]);\r\n\r\n const rectangleWidth = 50;\r\n return (\r\n \r\n \r\n {/* {title}\r\n {desc} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSingleBarSvg.defaultProps = {\r\n caption: \"stapeltext\",\r\n title: null,\r\n hasBubbleBg: true,\r\n lineType: null,\r\n topSpace: 90\r\n};\r\n\r\nexport default SingleBarSvg;\r\n","import React from \"react\";\r\nimport BlockLayout from \"../Layout/BlockLayout\";\r\nimport SvgLayout from \"../Layout/SvgLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport SingleBarSvgLargeBubble from \"../Charts/SingleBarSvgLargeBubble\";\r\nimport {\r\n FiguresWrapper,\r\n Line,\r\n HeadingMunicipality\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n calculatePercentage,\r\n isCurrentYear,\r\n numberWithSpaces\r\n} from \"../../Helpers/CommonHelper\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\nconst AccommodationContainer = props => {\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0.5,\r\n triggerOnce: true\r\n });\r\n\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n const lastYear = sweden.accommodation\r\n ? sweden.accommodation.year\r\n : \"årtal ej tillgängligt\";\r\n\r\n let swedenString = sweden\r\n ? `Genomsnittspriset för sålda småhus i Sverige är \r\n ${numberWithSpaces(\r\n sweden.accommodation.averagePrice\r\n )} tusen kronor (${lastYear}).`\r\n : \"\";\r\n\r\n let total = 100;\r\n if (municipality1 && municipality2) {\r\n total =\r\n Number(municipality1.averagePrice) + Number(municipality2.averagePrice);\r\n } else if (municipality1) {\r\n total = municipality1.averagePrice;\r\n } else if (municipality2) {\r\n total = municipality2.averagePrice;\r\n }\r\n\r\n let maxOffset =\r\n municipality1 && municipality2\r\n ? 100 -\r\n calculatePercentage(\r\n Math.min(\r\n Number(municipality1.averagePrice),\r\n Number(municipality2.averagePrice)\r\n ),\r\n total\r\n )\r\n : 100;\r\n\r\n const height = 150;\r\n const width = 100;\r\n\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"är\"\r\n : \"var\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `Genomsnittspriset för sålda småhus i ${municipality.name} kommun ${str} ${municipality.averagePrice} tusen kronor (år ${municipality.year})`\r\n : \"\";\r\n };\r\n\r\n const svgAriaLabel = municipality =>\r\n municipality\r\n ? `Det här stapeldiagramet visar genomsnittliga priset i tusen kronor per sålda småhus i ${municipality.name} kommun.`\r\n : \"\";\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nAccommodationContainer.defaultProps = {\r\n data: []\r\n};\r\n\r\nexport default AccommodationContainer;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport KeyFigureNew from \"../Elements/KeyFigureNew\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n HeadingMunicipality,\r\n headingSmall,\r\n Line,\r\n FiguresWrapper\r\n} from \"../../Util/StyleProps\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\n\r\nimport {\r\n calculatePercentage,\r\n isCurrentYear,\r\n periodToComma\r\n} from \"../../Helpers/CommonHelper\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\n\r\nconst LivingConditionContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n const [ref, inView] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n let cohabitingPercentage = 0;\r\n let singlePercentage = 0;\r\n let otherPercentage = 0;\r\n\r\n if (sweden.livingcondition) {\r\n cohabitingPercentage = calculatePercentage(\r\n sweden.livingcondition.cohabiting,\r\n sweden.livingcondition.total\r\n );\r\n\r\n singlePercentage = calculatePercentage(\r\n sweden.livingcondition.single,\r\n sweden.livingcondition.total\r\n );\r\n\r\n otherPercentage = calculatePercentage(\r\n sweden.livingcondition.other,\r\n sweden.livingcondition.total\r\n );\r\n }\r\n let subText = ` I Sverige är ${periodToComma(\r\n cohabitingPercentage\r\n )} procent sammanboende (med eller utan barn). ${periodToComma(\r\n singlePercentage\r\n )} procent ensamstående \r\n (med eller utan barn). ${periodToComma(\r\n otherPercentage\r\n )} procent tillhör någon annan typ av hushåll (${\r\n sweden.livingcondition ? sweden.livingcondition.year : \"\"\r\n }).`;\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"är\"\r\n : \"var\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `I ${municipality.name} kommun ${str} ${calculatePercentage(\r\n municipality.cohabiting,\r\n municipality.total\r\n )} procent sammanboende (med eller utan barn) år ${\r\n municipality.year\r\n }. ${calculatePercentage(\r\n municipality.single,\r\n municipality.total\r\n )} procent ${str} ensamstående (med eller utan barn)\r\n och ${calculatePercentage(\r\n municipality.other,\r\n municipality.total\r\n )} procent tillhör någon annan typ av hushåll.`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default LivingConditionContainer;\r\n","import React from \"react\";\r\nimport styled, { keyframes } from \"styled-components\";\r\nimport { Col } from \"react-bootstrap\";\r\nimport BubbleSvg from \"../Elements/BubbleSvg\";\r\nimport { scaleLinear } from \"d3-scale\";\r\nimport {\r\n drukText,\r\n fontSizeSmall,\r\n HeadingMunicipality,\r\n CaptionForeignObject\r\n} from \"../../Util/StyleProps\";\r\nimport { fadeIn, slideInUp } from \"react-animations\";\r\nimport { createMarkup } from \"../../Helpers/CommonHelper\";\r\nimport { ContactlessOutlined } from \"@material-ui/icons\";\r\n\r\nconst slideInAnimation = keyframes`${slideInUp}`;\r\n\r\nconst Wrapper = styled.div`\r\n position: relative;\r\n &.index1 {\r\n &:after {\r\n content: \"\";\r\n position: absolute;\r\n top: 35px;\r\n bottom: -20px;\r\n border-left: 1px solid #000;\r\n left: -15px;\r\n }\r\n }\r\n`;\r\nconst Svg = styled.svg`\r\n margin-top: 30px;\r\n width: 100%;\r\n`;\r\nconst G = styled.g``;\r\nconst Rect = styled.rect`\r\n height: ${props => props.height}px;\r\n width: 35px;\r\n animation: 0.75s ${props => (props.triggeranimation ? slideInAnimation : \"\")};\r\n animation-delay: ${props => props.delay}s;\r\n animation-fill-mode: both;\r\n`;\r\n\r\nconst DoubleBarSvg = props => {\r\n const indexDelays = [0, 0.2, 0.35, 0.45];\r\n const titleId = props.ariaId ? props.ariaId + \"Title\" : \"\";\r\n const descId = props.ariaId ? props.ariaId + \"Desc\" : \"\";\r\n const {\r\n idx,\r\n height,\r\n width,\r\n maxOffset,\r\n maxIsEven,\r\n captions,\r\n title,\r\n desc,\r\n color,\r\n triggeranimation,\r\n firstValue,\r\n secondValue,\r\n index,\r\n pstring1,\r\n pstring2\r\n } = props;\r\n\r\n const y = scaleLinear()\r\n .domain([0, maxOffset])\r\n .nice()\r\n .range([0, height - 0]);\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {title}\r\n {desc}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDoubleBarSvg.defaultProps = {\r\n captions: [\"stapeltext\", \"stapeltext\"],\r\n title: \"Titel\",\r\n desc: \"Desc\",\r\n pstring1: \"0\",\r\n pstring2: \"0\",\r\n maxOffset: 0,\r\n maxIsEven: true,\r\n height: \"190\",\r\n width: \"100\"\r\n};\r\n\r\nexport default DoubleBarSvg;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport KeyFigureBig from \"../Elements/KeyFigureBig\";\r\nimport {\r\n periodToComma,\r\n isCurrentYear,\r\n formatNumber\r\n} from \"../../Helpers/CommonHelper\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport {\r\n headingLarge,\r\n FiguresWrapper,\r\n HeadingMunicipality,\r\n Line\r\n} from \"../../Util/StyleProps\";\r\n\r\nconst TaxRateContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n let swedenTaxRate = sweden ? sweden.taxrate.taxRate : \"(data saknas)\";\r\n let swedenString = ` I Sverige betalar vi i genomsnitt ${periodToComma(\r\n swedenTaxRate.toFixed(2)\r\n )} procent i kommunal skatt (${\r\n sweden ? sweden.taxrate.year : \"årtal saknas\"\r\n }).`;\r\n\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n threshold: 0,\r\n triggerOnce: true\r\n });\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n const str = municipality\r\n ? isCurrentYear(municipality.year)\r\n ? \"betalas\"\r\n : \"betalades\"\r\n : \"\";\r\n\r\n return municipality\r\n ? `I ${\r\n municipality.name\r\n } kommun så ${str} det i genomsnitt ${municipality.taxRate.toFixed(\r\n 2\r\n )} procent i kommunal skatt (${\r\n municipality.year ? \"år \" + municipality.year : \"årtal saknas\"\r\n })`\r\n : \"\";\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TaxRateContainer;\r\n","import React from \"react\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport { Container, Row } from \"react-bootstrap\";\r\nimport ComponentHeader from \"../Header/ComponentHeader\";\r\nimport SingleBarSvg from \"../Charts/SingleBarSvgLargeBubble\";\r\nimport { primaryColor, secondaryColor } from \"../../Util/Colors\";\r\nimport { useInView } from \"react-intersection-observer\";\r\nimport {\r\n calculatePercentage,\r\n periodToComma,\r\n numberWithSpaces\r\n} from \"../../Helpers/CommonHelper\";\r\nimport {\r\n FiguresWrapper,\r\n Line,\r\n HeadingMunicipality\r\n} from \"../../Util/StyleProps\";\r\nimport EmptySpace from \"../Elements/EmptySpace\";\r\nimport SvgLayout from \"./../Layout/SvgLayout\";\r\n// rösta ska ha kommatecken\r\nconst ElectionContainer = props => {\r\n const { data, sweden, blockColor, scroll } = props;\r\n const [ref, inView, entry] = useInView({\r\n /* Optional options */\r\n\r\n threshold: 0.5,\r\n triggerOnce: true\r\n });\r\n\r\n let municipality1 = data[0];\r\n let municipality2 = data[1];\r\n\r\n const lastElectionYear = sweden.election\r\n ? sweden.election.year\r\n : \"årtal ej tillgängligt\";\r\n\r\n let swedenString = sweden\r\n ? ` I hela Sverige röstade ${numberWithSpaces(\r\n periodToComma(sweden.election.electionvalue)\r\n )} procent i det senaste valet till riksdagen (${lastElectionYear}). `\r\n : \"\";\r\n\r\n let total = 100;\r\n if (municipality1 && municipality2) {\r\n total =\r\n Number(municipality1.electionvalue) + Number(municipality2.electionvalue);\r\n } else if (municipality1) {\r\n total = municipality1.electionvalue;\r\n } else if (municipality2) {\r\n total = municipality2.electionvalue;\r\n }\r\n\r\n let maxOffset =\r\n municipality1 && municipality2\r\n ? 100 -\r\n calculatePercentage(\r\n Math.min(\r\n Number(municipality1.electionvalue),\r\n Number(municipality2.electionvalue)\r\n ),\r\n total\r\n )\r\n : 100;\r\n\r\n // Accessibility\r\n const ariaLabel = municipality => {\r\n return municipality\r\n ? `I ${municipality.name} kommun röstade ${municipality.electionvalue} procent i det senaste valet till riksdagen (${municipality.year}).`\r\n : \"\";\r\n };\r\n const svgAriaLabel = municipality =>\r\n municipality\r\n ? `Det här stapeldiagramet visar hur många procent som röstade i det senaste valet i ${municipality.name} kommun.`\r\n : \"\";\r\n\r\n const height = 150;\r\n const width = 100;\r\n\r\n return (\r\n \r\n \r\n \r\n {municipality1 ? (\r\n
\r\n \r\n {municipality1 ? (\r\n \r\n \r\n {municipality1.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n \r\n {municipality2 ? (\r\n \r\n \r\n {municipality2.name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ElectionContainer;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport IconPath from \"./../Elements/IconPath\";\r\nimport { roboto } from \"../../Util/StyleProps\";\r\nimport { primaryColor } from \"../../Util/Colors\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\n\r\nconst Wrapper = styled.div`\r\n display: block;\r\n width: 100%;\r\n color: ${props => props.color};\r\n height: 40px;\r\n`;\r\n\r\nconst SvgWrapper = styled.div`\r\n position: relative;\r\n height: 30px;\r\n width: 30px;\r\n text-align: center;\r\n line-height: 30px;\r\n margin: 0 auto;\r\n\r\n & > svg {\r\n width: 24px;\r\n height: 24px;\r\n position: absolute;\r\n top: 50%;\r\n bottom: 50%;\r\n transform: translate(-50%, -50%);\r\n padding: 2px;\r\n }\r\n`;\r\n\r\nconst Icon = styled.div`\r\n background: ${primaryColor};\r\n float: left;\r\n display: block;\r\n border-radius: 50%;\r\n height: 30px;\r\n width: 30px;\r\n`;\r\n\r\nconst Link = styled.a`\r\n display: block;\r\n padding: 0;\r\n margin-left: 39px;\r\n text-decoration: underline;\r\n color: ${primaryColor};\r\n font-family: ${roboto};\r\n font-weight: 500;\r\n font-size: 12px;\r\n line-height: 28px;\r\n height: 28px;\r\n\r\n @media${device.mobileM} {\r\n font-size: 16px;\r\n }\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n color: ${primaryColor};\r\n }\r\n`;\r\n\r\nconst KeyFigureLink = props => {\r\n const { children, href, color, iconName, onClickFunction, target } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nKeyFigureLink.defaultProps = {\r\n href: \"#\",\r\n iconName: \"\",\r\n onClickFunction: null,\r\n target: null\r\n};\r\n\r\nexport default KeyFigureLink;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport BlockLayout from \"./../Layout/BlockLayout\";\r\nimport KeyFigureLink from \"./../Elements/KeyFigureLink\";\r\nimport { getBrowserQueryParams } from \"../../Helpers/CommonHelper\";\r\nimport { getMunicipalityName, hasMunicipalityName } from \"../../data/kommuner\";\r\n\r\n\r\nconst EndWrapper = styled.div`\r\n background: #fff;\r\n width: 100%;\r\n min-height: 135px;\r\n`;\r\n\r\nconst Navigation = styled.nav``;\r\n\r\nconst EndComponent = props => {\r\n const { scroll } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Välj nya kommuner\r\n \r\n \r\n Läs om statistiken\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nEndComponent.defaultProps = {\r\n scroll: null\r\n};\r\nexport default EndComponent;\r\n\r\n\r\nfunction getRequestedMunicipalities() {\r\n const bp = getBrowserQueryParams();\r\n let munObj = { \"1\": null, \"2\": null };\r\n\r\n if (bp.id1 && bp.id1[0] && hasMunicipalityName(bp.id1[0])) {\r\n munObj[\"1\"] = {\r\n id: bp.id1[0],\r\n name: getMunicipalityName(bp.id1[0])\r\n };\r\n }\r\n\r\n if (bp.id2 && bp.id2[0] && hasMunicipalityName(bp.id2[0])) {\r\n munObj[\"2\"] = {\r\n id: bp.id2[0],\r\n name: getMunicipalityName(bp.id2[0])\r\n };\r\n }\r\n\r\n return munObj;\r\n}\r\n\r\nconst getMuniciplitiesInNumbersURL = () => {\r\n const params = getRequestedMunicipalities();\r\n\r\n const id1 = params['1'] ? params['1'].id : null;\r\n const id2 = params['2'] ? params['2'].id : null;\r\n\r\n const baseUrl =\r\n \"https://www.scb.se/hitta-statistik/sverige-i-siffror/kommuner-i-siffror/#\";\r\n const url = id1 || id2 ? `${baseUrl}?region1=${id1}®ion2=${id2}` : baseUrl;\r\n return url;\r\n};\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { rotate360CW, rotate360CCW } from \"../../Util/StyleProps\";\r\n\r\nconst Spinner = props => {\r\n let Spin = styled.div`\r\n animation: ${props.counterClockwise ? rotate360CCW : rotate360CW} infinite\r\n 1s linear;\r\n width: ${props.size ? props.size : \"60px\"};\r\n height: ${props.size ? props.size : \"60px\"};\r\n margin: 0 auto;\r\n `;\r\n\r\n return {props.children};\r\n};\r\n\r\nexport default Spinner;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\nimport SpinnerSvg from \"../../assets/img/spinner.svg\";\r\nimport BlockLayout from \"../Layout/BlockLayout\";\r\nimport { sectionPopulationColor } from \"./../../Util/Colors\";\r\nimport { roboto } from \"../../Util/StyleProps\";\r\n\r\nconst SpinnerBlock = props => {\r\n const InfoText = styled.p`\r\n font-family: ${roboto};\r\n font-size: 24px;\r\n line-height: 38px;\r\n font-weight: 400;\r\n margin-top: 20px;\r\n text-align: center;\r\n `;\r\n return (\r\n \r\n \r\n \"spinner\"\r\n \r\n Nu hämtas kommunsiffor...\r\n \r\n );\r\n};\r\n\r\nexport default SpinnerBlock;\r\n","import React, { useRef } from \"react\";\r\nimport \"./../../Styles/Dist/Bootstrap/css/bootstrap.min.css\";\r\nimport \"./../../Styles/Dist/fonts/Druk/druk.css\";\r\nimport \"./../../Styles/Dist/fonts/Roboto/roboto.css\";\r\nimport styled from \"styled-components\";\r\nimport {\r\n Header,\r\n Footer,\r\n StartPage,\r\n BirthPlaceContainer,\r\n PopulationContainer,\r\n AgeContainer,\r\n GenderContainer,\r\n MunicipalitySelector,\r\n LandSizeContainer,\r\n LandUseContainer,\r\n PopulationLocationContainer,\r\n Api,\r\n IncomeContainer,\r\n EmplomentExtentContainer,\r\n AccommodationContainer,\r\n LivingConditionContainer,\r\n RecidenceContainer,\r\n TaxRateContainer,\r\n ElectionContainer,\r\n EndComponent\r\n} from \"./../../Components\";\r\n\r\nimport startPageSvg from \"../../assets/img/startPageIllustration.svg\";\r\nimport populationSvg from \"../../assets/img/population.svg\";\r\nimport locationSvg from \"../../assets/img/location.svg\";\r\nimport accommodationSvg from \"../../assets/img/accomodation.svg\";\r\nimport walletSvg from \"../../assets/img/wallet.svg\";\r\nimport taxSvg from \"../../assets/img/tax.svg\";\r\nimport SectionImageBetween from \"./../Elements/SectionImageBetween\";\r\nimport SpinnerBlock from \"../Spinner/SpinnerBlock\";\r\n\r\nimport {\r\n sectionGenderColor,\r\n sectionPopulationColor,\r\n sectionLivingConditionColor,\r\n sectionAccommodationColor,\r\n sectionIncomeColor,\r\n sectionPopulationLocationColor,\r\n sectionBirthplaceColor,\r\n sectionTaxColor,\r\n sectionElectionColor,\r\n sectionEmplomentExtentColor,\r\n secondaryColor\r\n} from \"./../../Util/Colors\";\r\nimport {\r\n isNullorEmpty,\r\n getBrowserQueryParams\r\n} from \"./../../Helpers/CommonHelper\";\r\nimport { roboto, fontSizeMobile, lineheightSmall } from \"../../Util/StyleProps\";\r\nimport BlockLayout from \"./BlockLayout\";\r\nimport { device } from \"../../Util/Breakpoints\";\r\n\r\nconst AppTitle = styled.h3`\r\n font-family: ${roboto};\r\n font-size: ${fontSizeMobile};\r\n line-height: ${lineheightSmall};\r\n font-weight: 500;\r\n color: ${secondaryColor};\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n min-height: 60vh;\r\n background-color: ${sectionPopulationColor};\r\n @media${device.desktop} {\r\n min-height:64vh;\r\n }\r\n`;\r\n\r\nconst PageLayout = props => {\r\n const {\r\n requestedMunicipalities,\r\n populationdata,\r\n municipalityselection,\r\n agedata,\r\n montelyincomedata,\r\n sweden,\r\n landusedata,\r\n populationLocationdata,\r\n genderdata,\r\n accommodationdata,\r\n populationchangedata,\r\n genderAgeData,\r\n birthplacedata,\r\n emplomentextentdata,\r\n isLoadingData,\r\n livingconditiondata,\r\n taxratedata,\r\n electiondata\r\n } = props.data;\r\n\r\n // Check that all blocks contain data\r\n const blockArray = [\r\n populationdata,\r\n populationchangedata,\r\n genderdata,\r\n genderAgeData,\r\n landusedata,\r\n accommodationdata,\r\n populationLocationdata,\r\n montelyincomedata\r\n ];\r\n const municipalityRef = useRef(null);\r\n\r\n const refMunicipalitySelector = useRef(null);\r\n\r\n const scroll = ref => event => {\r\n if (ref == \"municipalitySelector\") {\r\n const params = Object.values(getBrowserQueryParams()).flat();\r\n event.preventDefault(); // prevent reload\r\n let index = params.indexOf(\"null\");\r\n\r\n // Scrolls to the municipality selector ref\r\n municipalityRef.current.scrollIntoView({ behavior: \"smooth\" });\r\n\r\n // Focus the correct input field depending on what input that is empty\r\n setTimeout(function() {\r\n if (index == 1) {\r\n // Focus the second input field\r\n refMunicipalitySelector.current\r\n .querySelector(\"#municipality2\")\r\n .focus();\r\n } else {\r\n // Focus the first input field\r\n refMunicipalitySelector.current\r\n .querySelector(\"#municipality1\")\r\n .focus();\r\n }\r\n }, 700); // A slight delay so that the smooth scolling can finnish before focusing.\r\n }\r\n };\r\n\r\n let allBlocksHaveData = blocksHaveData(blockArray);\r\n\r\n return (\r\n \r\n
\r\n \r\n Kommuner i siffror\r\n \r\n
\r\n \r\n
\r\n \r\n {isLoadingData ? : null}\r\n\r\n {allBlocksHaveData && !isLoadingData ? (\r\n <>\r\n {sweden.population ? (\r\n <>\r\n data)}\r\n populationchangedata={populationchangedata.filter(\r\n data => data\r\n )}\r\n sweden={sweden}\r\n blockColor={sectionPopulationColor}\r\n scroll={scroll}\r\n />\r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.gender ? (\r\n data)}\r\n blockColor={sectionGenderColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.age ? (\r\n data)}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.birthplace ? (\r\n data)}\r\n blockColor={sectionBirthplaceColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.populationLocation ? (\r\n <>\r\n \r\n data)}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.landuse ? (\r\n data)}\r\n blockColor={sectionLivingConditionColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.montelyincome ? (\r\n data)}\r\n blockColor={sectionIncomeColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n {emplomentextentdata.length && sweden.emplomentextent ? (\r\n <>\r\n \r\n data)}\r\n blockColor={sectionEmplomentExtentColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.accommodation ? (\r\n data)}\r\n sweden={sweden}\r\n blockColor={sectionAccommodationColor}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n\r\n {sweden.livingcondition ? (\r\n <>\r\n \r\n data)}\r\n blockColor={sectionPopulationLocationColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n {taxratedata.length && sweden.taxrate ? (\r\n <>\r\n data)}\r\n blockColor={sectionTaxColor}\r\n sweden={sweden}\r\n />\r\n \r\n \r\n ) : (\r\n
\r\n )}\r\n {electiondata.length && sweden.election ? (\r\n data)}\r\n blockColor={sectionElectionColor}\r\n sweden={sweden}\r\n scroll={scroll}\r\n />\r\n ) : (\r\n
\r\n )}\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n