{"version":3,"sources":["hooks/use-click-outside.tsx","components/Form/ContactFormBasic/styles.js","components/Form/ContactFormBasic/index.tsx","components/RancidBanner/styles.js","utils/city-conjugation.tsx","components/RancidBanner/index.tsx","components/HousetypeDropdown/styles.js","components/HousetypeDropdown/index.tsx","components/Form/HomevisitSmallForm/styles.js","components/Form/HomevisitSmallForm/index.tsx","utils/apartment-pricing/selections.tsx","components/Search/PriceAddressSearch/suggestion-categories.tsx","components/Search/PriceAddressSearch/styles.js","components/Search/PriceAddressSearch/index.tsx","pages/SellingPage/styles.js","components/ApartmentPricesLift/styles.js","components/ApartmentPricesLift/index.tsx","pages/SellingPage/index.tsx"],"names":["useOnClickOutside","ref","handler","useEffect","listener","event","target","current","contains","document","addEventListener","removeEventListener","FormWrapper","styled","div","attrs","props","className","id","withConfig","componentId","color","media","md","_templateObject","_taggedTemplateLiteral","textStyles","H3Condensed","Formik","lazy","then","module","default","ErrorMessage","ContactFormBasic","_ref","agent","agency","buttonText","children","subjectIndex","titleText","withTitle","withPostcode","isSubmitted","setSubmitted","useState","fields","initialValues","email","message","name","phone","postCode","validationSchema","getSchema","FormPlaceholder","React","createElement","Placeholder","PlaceholderInput","PlaceholderTextarea","PlaceholderGdpr","PlaceholderButton","width","contactSubmitTimeout","clearTimeout","hasWindow","Suspense","fallback","onSubmit","doSubmit","values","_ref2","setSubmitting","resetForm","__awaiter","submitUrl","location","href","formData","Object","assign","res","contactService","doBasicContact","console","log","window","setTimeout","e","_ref3","handleChange","handleBlur","handleSubmit","isSubmitting","clxs","InputGroup","aria-label","disabled","data-white","onBlur","onChange","placeholder","type","value","FaIcon","icon","component","msg","FormError","Textarea","ThankYouMessage","Fragment","GdprLink","Link","to","CtaButton","text","submitting","RancidBannerContainer","bannerColor","clsx","lg","RancidBannerContent","boxShadow","wide","smd","_templateObject2","emSpacing","lineHeight","_templateObject3","DismissButton","button","_templateObject4","cities","own","in","conjugateCity","city","RancidBanner","enterDelay","onExit","textOverride","isInQuarantine","historyTracker","isVisible","setVisible","getHistory","inCity","setInCity","enterTimeout","exitTimeout","bannerRef","useRef","classList","add","requestAnimationFrame","onHistoryTrackUpdate","detail","newCity","concat","onClick","removeBanner","setQuarantine","Select","SelectButton","fontFamily","base","isOpen","css","Selections","basic","Selection","active","HousetypeDropdown","_a","noSelectionsText","selections","selectables","onSelection","defaultValue","rest","__rest","length","mounted","setMounted","setSelections","selected","setSelected","setOpen","i","isActive","selection","label","map","index","key","sels","s","select","FormContainer","hugeLight","ribbon","PSmallCondensed","HomevisitSmallForm","Editor","BasicContactForm","selectableHouseTypes","order","selectableRooms","suggestionCategories","priceType","SearchInput","PriceAddressSearch","PureComponent","constructor","super","categories","createRef","inputRef","isRendering","initialPlaceholder","this","state","results","resultsOpen","selectedAddress","reset","bind","parseAddressSuggestions","getAddressSuggestionsCount","setSearchTerm","search","checkForClickOutside","setAddress","createPlaceholder","onFocus","setState","suggestions","l","suggestionCategory","addressType","addressTypeName","j","suggestion","t","push","count","forEach","category","getAddressByAssignedIndex","isSearching","timestamp","Date","getMilliseconds","query","response","axios","get","data","querySelector","onSelect","componentDidMount","componentWillUnmount","render","grey","TextInput","autoComplete","spin","AddressSearchResults","onSelectedAddress","time","SellingContainer","Container","SellingContent","PMedium","AInline","grid","gutter","SellingSidebar","SellingTitle","Background","span","rgba","SellingIngress","PLarge","_templateObject5","_templateObject6","ArticleCardsWrapper","_templateObject7","_templateObject8","_templateObject9","_templateObject10","SellingLift","_templateObject11","_templateObject12","H1","_templateObject13","_templateObject14","_templateObject15","_templateObject16","buttons","textLinkPrimary","LiftWrapper","LiftContent","LiftText","LiftImageArea","SelectionsWrapper","withRouter","setSelectedAddress","selectedHousetypes","setSelectedHousetypes","selectedRooms","setSelectedRooms","selectedArea","setSelectedArea","selectedYear","setSelectedYear","Text","srcSet","getAssetUrl","src","alt","MultiButtonSelect","single","labelAfter","calculate","locationId","housetype","isEmpty","room","area","year","address","test","url","body","remove","history","connect","doc","ArticlesMain","WhyKm","withIntro","HomevisitForm","ApartmentPricesLift","ArticleCards","articles"],"mappings":"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","file":"assets/js/pages-SellingPage.chunk.js?cb=9300f5786b746e370956","sourcesContent":["import React, { useEffect, RefObject } from 'react';\n\nconst useOnClickOutside = (ref: RefObject, handler: (e?: MouseEvent | TouchEvent) => void) => {\n\tuseEffect(() => {\n\t\tconst listener = (event: MouseEvent | TouchEvent) => {\n\t\t\tconst target = (event.target as HTMLElement);\n\t\t\t// Do nothing if clicking ref's element or descendent elements\n\t\t\tif (!ref.current || ref.current.contains(target)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler(event);\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', listener);\n\t\tdocument.addEventListener('touchstart', listener);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', listener);\n\t\t\tdocument.removeEventListener('touchstart', listener);\n\t\t};\n\t}, []);\n};\n\nexport default useOnClickOutside;","import styled from \"styled-components\";\nimport { color, media, textStyles } from \"@utils/style-utils\";\n\nexport const FormWrapper = styled.div.attrs(props => ({\n\tclassName: \"basic-form\",\n\tid: props.id || \"basic-form\",\n}))`\n\tbackground: ${color(\"grey\", 7)};\n\tborder: 1px solid ${color(\"grey\", 6)};\n\tborder-radius: 4px;\n\toverflow: hidden;\n\tpadding: 30px 15px;\n\n\t${media.md`\n\t\tpadding: 40px 32px;\n\t`}\n\n\th4 {\n\t\t${textStyles.H3Condensed}\n\t\tmargin: 0 auto 24px;\n\t\ttext-align: center;\n\t}\n\n\t.placeholder-textarea {\n\t\tmargin-top: 16px;\n\t}\n`;\n","import React, { lazy, Suspense, Fragment, useState, useEffect } from \"react\";\nimport {\n\tInputGroup,\n\tFormError,\n\tGdprLink,\n\tTextarea,\n\tThankYouMessage,\n\tPlaceholder,\n\tPlaceholderButton,\n\tPlaceholderGdpr,\n\tPlaceholderInput,\n\tPlaceholderTextarea,\n} from \"@components/Form/form-styles\";\nimport contactService from \"@services/contact.service\";\nimport { hasWindow } from \"@utils\";\nimport { getSchema } from \"@utils/validators\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport { Link } from \"react-router-dom\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport { FormWrapper } from \"./styles\";\nimport clxs from \"clsx\";\n\nconst Formik = lazy(() => import(/* webpackPrefetch:true */ \"formik\").then(module => ({ default: module.Formik })));\nconst ErrorMessage = lazy(() =>\n\timport(/* webpackPrefetch:true */ \"formik\").then(module => ({ default: module.ErrorMessage }))\n);\n\ninterface IProps {\n\tagent?: string;\n\tagency?: string;\n\tbuttonText?: string;\n\tchildren?: React.ReactNode;\n\tsubjectIndex?: number;\n\ttitleText?: string;\n\twithTitle?: boolean;\n\twithPostcode?: boolean;\n}\n\nconst ContactFormBasic = ({\n\tagent = null,\n\tagency = null,\n\tbuttonText = \"Lähetä\",\n\tchildren = null,\n\tsubjectIndex = 1,\n\ttitleText = \"Ota yhteyttä\",\n\twithTitle = true,\n\twithPostcode = false,\n}: IProps) => {\n\tconst [isSubmitted, setSubmitted] = useState(false);\n\n\tlet fields = [\"name\", \"email\", \"phone\", \"message\"];\n\tlet initialValues: any = {\n\t\temail: \"\",\n\t\tmessage: \"\",\n\t\tname: \"\",\n\t\tphone: \"\",\n\t};\n\n\tif (withPostcode) {\n\t\tfields = [\"name\", \"email\", \"postCode\", \"phone\", \"message\"];\n\n\t\tinitialValues = {\n\t\t\temail: \"\",\n\t\t\tmessage: \"\",\n\t\t\tname: \"\",\n\t\t\tphone: \"\",\n\t\t\tpostCode: \"\",\n\t\t};\n\t}\n\n\tconst validationSchema = getSchema(fields);\n\n\tconst FormPlaceholder = () => {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t{withPostcode && }\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n\n\tlet contactSubmitTimeout: number;\n\n\tconst doSubmit = async (values, { setSubmitting, resetForm }) => {\n\t\tsetSubmitting(true);\n\n\t\tconst submitUrl = location.href;\n\n\t\tconst formData = {\n\t\t\tagency: agency ? agency : null,\n\t\t\tagent: agent ? agent : null,\n\t\t\tsubjectIndex,\n\t\t\tsubmitUrl,\n\t\t\t...values,\n\t\t};\n\n\t\ttry {\n\t\t\tconst res = await contactService.doBasicContact(formData);\n\t\t\tconsole.log(\"successful form submit\", res);\n\t\t\tsetSubmitting(false);\n\t\t\tsetSubmitted(true);\n\n\t\t\tif (hasWindow) {\n\t\t\t\tcontactSubmitTimeout = window.setTimeout(() => {\n\t\t\t\t\tsetSubmitted(false);\n\t\t\t\t\tresetForm(initialValues);\n\t\t\t\t}, 6000);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(\"error while sending form..\", e);\n\t\t\tsetSubmitting(false);\n\t\t\tsetSubmitted(false);\n\t\t\tthrow e;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\t/* clear the reset timeout before component unmounts */\n\t\t\tif (contactSubmitTimeout) {\n\t\t\t\tclearTimeout(contactSubmitTimeout);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t\n\t\t\t{withTitle &&

{titleText}

}\n\t\t\t{children}\n\t\t\t{!hasWindow && }\n\t\t\t{hasWindow && (\n\t\t\t\t}>\n\t\t\t\t\t\n\t\t\t\t\t\t{({ values, handleChange, handleBlur, handleSubmit, isSubmitting }) => (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{msg => {msg}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{msg => {msg}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{msg => {msg}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{withPostcode && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{msg => {msg}}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{msg => {msg}}\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t{isSubmitted && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tKiitos yhteydenotosta!\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{!isSubmitted && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tTietosuojaseloste\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n};\n\nexport default ContactFormBasic;\n","import styled, { keyframes } from \"styled-components\";\nimport clsx from \"clsx\";\nimport { color, boxShadow, emSpacing, lineHeight, media } from \"@utils/style-utils\";\n\nexport const RancidBannerContainer = styled.div.attrs(({ bannerColor }) => ({\n\tclassName: clsx(\"rancid-banner\", bannerColor),\n}))`\n\tmargin: 80px auto;\n\tmax-width: 1160px;\n\topacity: 0;\n\tpadding: 30px 15px;\n\tperspective: 1000px;\n\tposition: relative;\n\tz-index: 80;\n\tdisplay: none;\n\n\t${media.lg`\n\t\tmax-width: 1170px;\n\t\tpadding: 30px 20px;\n\t`}\n\n\t&.visible {\n\t\tdisplay: block;\n\t}\n\t&.enter {\n\t\topacity: 1;\n\t}\n`;\n\nexport const RancidBannerContent = styled.div`\n\tborder-radius: 4px;\n\tbox-shadow: ${boxShadow.wide};\n\tleft: 0;\n\topacity: 0;\n\tpadding: 16px 24px;\n\tposition: absolute;\n\ttext-align: center;\n\ttop: 50%;\n\ttransform: translateY(10%);\n\ttransition: opacity 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55),\n\t\ttransform 0.6s cubic-bezier(0.68, -0.55, 0.265, 2.55);\n\twidth: 100%;\n\n\t${media.smd`\n\t\tpadding: 16px 68px;\n\t`}\n\n\ta {\n\t\tcolor: ${color(\"white\")};\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tfont-size: 16px;\n\t\tfont-weight: 500;\n\t\tjustify-content: center;\n\t\tletter-spacing: ${emSpacing(0.02)};\n\t\tline-height: ${lineHeight(18, 29)};\n\t\ttext-align: center;\n\t\ttext-decoration: none;\n\n\t\t${media.smd`\n\t\t\tfont-size: 18px;\n\t\t`}\n\t}\n\n\tspan {\n\t\tdisplay: inline-block;\n\n\t\t&.underlined {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t.red & {\n\t\tbackground-color: ${color(\"coral\", 1)};\n\t}\n\n\t.green & {\n\t\tbackground-color: ${color(\"greenDark\", 2)};\n\t}\n\n\t.blue & {\n\t\tbackground-color: ${color(\"blue\", 1)};\n\t}\n\n\t.enter & {\n\t\topacity: 1;\n\t\ttransform: translateY(-50%);\n\t\ttransform-origin: center;\n\t}\n\n\t.exit & {\n\t\ttransition: transform 0.3s ease-in-out;\n\t\ttransform: translateY(-50%) rotateX(90deg);\n\t}\n`;\n\nexport const DismissButton = styled.button`\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tbackground: rgba(255, 255, 255, 0);\n\tborder: 0;\n\tborder: 8px solid rgba(255, 255, 255, 0);\n\tborder-radius: 50%;\n\tcolor: rgba(255, 255, 255, 0.5);\n\tcursor: pointer;\n\tfont-size: 14px;\n\theight: 38px;\n\tmargin: 0;\n\tpadding: 0;\n\tposition: absolute;\n\tright: -11px;\n\ttext-align: center;\n\ttop: -11px;\n\ttransition: background-color 150ms;\n\twidth: 38px;\n\n\t&.red {\n\t\tbackground-color: ${color(\"coral\", 2)};\n\t}\n\t&.green {\n\t\tbackground-color: ${color(\"greenDark\", 3)};\n\t}\n\t&.blue {\n\t\tbackground-color: ${color(\"blue\", 2)};\n\t}\n\n\t${media.smd`\n\t\tbackground: rgba(255, 255, 255, 0);\n\t\tborder: 0;\n\t\theight: 44px;\n\t\tright: 12px;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\t\twidth: 44px;\n\n\t\t&.red,\n\t\t&.green,\n\t\t&.blue {\n\t\t\tbackground: rgba(255, 255, 255, 0);\n\n\t\t\t.is-pointer & {\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground-color: rgba(255, 255, 255, 0.1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`}\n\n\tsvg {\n\t\tmax-width: 17px;\n\t}\n`;\n","// prettier-ignore\nconst cities = {\n\t\"Akaa\": { own: \"Akaan\", in: \"Akaalla\" },\n\t\"Alajärvi\": { own: \"Alajärven\", in: \"Alajärvellä\" },\n\t\"Alavieska\": { own: \"Alavieskan\", in: \"Alavieskassa\" },\n\t\"Alavus\": { own: \"Alavuden\", in: \"Alavudella\" },\n\t\"Asikkala\": { own: \"Asikkalan\", in: \"Asikkalassa\" },\n\t\"Askola\": { own: \"Askolan\", in: \"Askolassa\" },\n\t\"Aura\": { own: \"Auran\", in: \"Aurassa\" },\n\t\"Brändö\": { own: \"Brändön\", in: \"Brändössa\" },\n\t\"Eckerö\": { own: \"Eckerön\", in: \"Eckerössä\" },\n\t\"Enonkoski\": { own: \"Enonkosken\", in: \"Enonkoskella\" },\n\t\"Enontekiö\": { own: \"Enontekiön\", in: \"Enontekiöllä\" },\n\t\"Espoo\": { own: \"Espoon\", in: \"Espoossa\" },\n\t\"Eura\": { own: \"Euran\", in: \"Eurassa\" },\n\t\"Eurajoki\": { own: \"Eurajoen\", in: \"Eurajoella\" },\n\t\"Evijärvi\": { own: \"Evijärven\", in: \"Evijärvellä\" },\n\t\"Finström\": { own: \"Finströmin\", in: \"Finströmissä\" },\n\t\"Forssa\": { own: \"Forssan\", in: \"Forssassa\" },\n\t\"Föglö\": { own: \"Föglön\", in: \"Föglössa\" },\n\t\"Geta\": { own: \"Getan\", in: \"Getassa\" },\n\t\"Haapajärvi\": { own: \"Haapajärven\", in: \"Haapajärvellä\" },\n\t\"Haapavesi\": { own: \"Haapaveden\", in: \"Haapavedellä\" },\n\t\"Hailuoto\": { own: \"Hailuodon\", in: \"Hailuodossa\" },\n\t\"Halsua\": { own: \"Halsuan\", in: \"Halsualla\" },\n\t\"Hamina\": { own: \"Haminan\", in: \"Haminassa\" },\n\t\"Hammarland\": { own: \"Hammarlandin\", in: \"Hammarlandissa\" },\n\t\"Hankasalmi\": { own: \"Hankasalmen\", in: \"Hankasalmella\" },\n\t\"Hanko\": { own: \"Hangon\", in: \"Hangossa\" },\n\t\"Harjavalta\": { own: \"Harjavallan\", in: \"Harjavallassa\" },\n\t\"Hartola\": { own: \"Hartolan\", in: \"Hartolassa\" },\n\t\"Hattula\": { own: \"Hattulan\", in: \"Hattulassa\" },\n\t\"Hausjärvi\": { own: \"Hausjärven\", in: \"Hausjärvellä\" },\n\t\"Heinola\": { own: \"Heinolan\", in: \"Heinolassa\" },\n\t\"Heinävesi\": { own: \"Heinäveden\", in: \"Heinävedellä\" },\n\t\"Helsinki\": { own: \"Helsingin\", in: \"Helsingissä\" },\n\t\"Hirvensalmi\": { own: \"Hirvensalmen\", in: \"Hirvensalmella\" },\n\t\"Hollola\": { own: \"Hollolan\", in: \"Hollolassa\" },\n\t\"Honkajoki\": { own: \"Honkajoen\", in: \"Honkajoella\" },\n\t\"Huittinen\": { own: \"Huittisten\", in: \"Huittisilla\" },\n\t\"Humppila\": { own: \"Humppilan\", in: \"Humppilassa\" },\n\t\"Hyrynsalmi\": { own: \"Hyrynsalmen\", in: \"Hyrynsalmella\" },\n\t\"Hyvinkää\": { own: \"Hyvinkään\", in: \"Hyvinkäällä\" },\n\t\"Hämeenkyrö\": { own: \"Hämeenkyrön\", in: \"Hämeenkyrössä\" },\n\t\"Hämeenlinna\": { own: \"Hämeenlinnan\", in: \"Hämeenlinnassa\" },\n\t\"Ii\": { own: \"Iin\", in: \"Iissä\" },\n\t\"Iisalmi\": { own: \"Iisalmen\", in: \"Iisalmella\" },\n\t\"Iitti\": { own: \"Iitin\", in: \"Iitissä\" },\n\t\"Ikaalinen\": { own: \"Ikaalisten\", in: \"Ikaalisissa\" },\n\t\"Ilmajoki\": { own: \"Ilmajoen\", in: \"Ilmajoella\" },\n\t\"Ilomantsi\": { own: \"Ilomantsin\", in: \"Ilomantsissa\" },\n\t\"Imatra\": { own: \"Imatran\", in: \"Imatralla\" },\n\t\"Inari\": { own: \"Inarin\", in: \"Inarissa\" },\n\t\"Inkoo\": { own: \"Inkoon\", in: \"Inkoossa\" },\n\t\"Isojoki\": { own: \"Isojoen\", in: \"Isojoella\" },\n\t\"Isokyrö\": { own: \"Isokyrön\", in: \"Isokyrössä\" },\n\t\"Janakkala\": { own: \"Janakkalan\", in: \"Janakkalassa\" },\n\t\"Joensuu\": { own: \"Joensuun\", in: \"Joensuussa\" },\n\t\"Jokioinen\": { own: \"Jokioisten\", in: \"Jokioisilla\" },\n\t\"Jomala\": { own: \"Jomalan\", in: \"Jomalassa\" },\n\t\"Joroinen\": { own: \"Joroisten\", in: \"Joroisilla\" },\n\t\"Joutsa\": { own: \"Joutsan\", in: \"Joutsassa\" },\n\t\"Juuka\": { own: \"Juukan\", in: \"Juukassa\" },\n\t\"Juupajoki\": { own: \"Juupajoen\", in: \"Juupajoella\" },\n\t\"Juva\": { own: \"Juvan\", in: \"Juvalla\" },\n\t\"Jyväskylä\": { own: \"Jyväskylän\", in: \"Jyväskylässä\" },\n\t\"Jämijärvi\": { own: \"Jämijärven\", in: \"Jämijärvellä\" },\n\t\"Jämsä\": { own: \"Jämsän\", in: \"Jämsässä\" },\n\t\"Järvenpää\": { own: \"Järvenpään\", in: \"Järvenpäässä\" },\n\t\"Kaarina\": { own: \"Kaarinan\", in: \"Kaarinassa\" },\n\t\"Kaavi\": { own: \"Kaavin\", in: \"Kaavissa\" },\n\t\"Kajaani\": { own: \"Kajaanin\", in: \"Kajaanissa\" },\n\t\"Kalajoki\": { own: \"Kalajoen\", in: \"Kalajoella\" },\n\t\"Kangasala\": { own: \"Kangasalan\", in: \"Kangasalla\" },\n\t\"Kangasniemi\": { own: \"Kangasniemen\", in: \"Kangasniemillä\" },\n\t\"Kankaanpää\": { own: \"Kankaanpään\", in: \"Kankaanpäässä\" },\n\t\"Kannonkoski\": { own: \"Kannonkosken\", in: \"Kannonkoskella\" },\n\t\"Kannus\": { own: \"Kannuksen\", in: \"Kannuksella\" },\n\t\"Karijoki\": { own: \"Karijoen\", in: \"Karijoella\" },\n\t\"Karkkila\": { own: \"Karkkilan\", in: \"Karkkilassa\" },\n\t\"Karstula\": { own: \"Karstulan\", in: \"Karstulassa\" },\n\t\"Karvia\": { own: \"Karvian\", in: \"Karvialla\" },\n\t\"Kauhajoki\": { own: \"Kauhajoen\", in: \"Kauhajoella\" },\n\t\"Kauhava\": { own: \"Kauhavan\", in: \"Kauhavalla\" },\n\t\"Kauniainen\": { own: \"Kauniaisten\", in: \"Kauniaisissa\" },\n\t\"Kaustinen\": { own: \"Kaustisen\", in: \"Kaustisilla\" },\n\t\"Keitele\": { own: \"Keiteleen\", in: \"Keiteleessä\" },\n\t\"Kemi\": { own: \"Kemin\", in: \"Kemissä\" },\n\t\"Kemijärvi\": { own: \"Kemijärven\", in: \"Kemijärvellä\" },\n\t\"Keminmaa\": { own: \"Keminmaan\", in: \"Keminmaalla\" },\n\t\"Kemiönsaari\": { own: \"Kemiönsaaren\", in: \"Kemiönsaaressa\" },\n\t\"Kempele\": { own: \"Kempeleen\", in: \"Kempeleellä\" },\n\t\"Kerava\": { own: \"Keravan\", in: \"Keravalla\" },\n\t\"Keuruu\": { own: \"Keuruun\", in: \"Keuruulla\" },\n\t\"Kihniö\": { own: \"Kihniön\", in: \"Kihniössä\" },\n\t\"Kinnula\": { own: \"Kinnulan\", in: \"Kinnulassa\" },\n\t\"Kirkkonummi\": { own: \"Kirkkonummen\", in: \"Kirkkonummella\" },\n\t\"Kitee\": { own: \"Kiteen\", in: \"Kiteellä\" },\n\t\"Kittilä\": { own: \"Kittilän\", in: \"Kittilässä\" },\n\t\"Kiuruvesi\": { own: \"Kiuruveden\", in: \"Kiuruvedellä\" },\n\t\"Kivijärvi\": { own: \"Kivijärven\", in: \"Kivijärvellä\" },\n\t\"Kokemäki\": { own: \"Kokemäen\", in: \"Kokemäellä\" },\n\t\"Kokkola\": { own: \"Kokkolan\", in: \"Kokkolassa\" },\n\t\"Kolari\": { own: \"Kolarin\", in: \"Kolarissa\" },\n\t\"Konnevesi\": { own: \"Konneveden\", in: \"Konnevedellä\" },\n\t\"Kontiolahti\": { own: \"Kontiolahden\", in: \"Kontiolahdella\" },\n\t\"Korsnäs\": { own: \"Korsnäsin\", in: \"Korsnäsissä\" },\n\t\"Koski TL\": { own: \"Koski TL:n\", in: \"Koski TL:ssä\" },\n\t\"Kotka\": { own: \"Kotkan\", in: \"Kotkassa\" },\n\t\"Kouvola\": { own: \"Kouvolan\", in: \"Kouvolassa\" },\n\t\"Kristiinankaupunki\": { own: \"Kristiinankaupungin\", in: \"Kristiinankaupungissa\" },\n\t\"Kruunupyy\": { own: \"Kruunupyyn\", in: \"Kruunupyyssä\" },\n\t\"Kuhmo\": { own: \"Kuhmon\", in: \"Kuhmossa\" },\n\t\"Kuhmoinen\": { own: \"Kuhmoisten\", in: \"Kuhmoisissa\" },\n\t\"Kumlinge\": { own: \"Kumlingen\", in: \"Kumlingessa\" },\n\t\"Kuopio\": { own: \"Kuopion\", in: \"Kuopiossa\" },\n\t\"Kuortane\": { own: \"Kuortaneen\", in: \"Kuortaneella\" },\n\t\"Kurikka\": { own: \"Kurikan\", in: \"Kurikassa\" },\n\t\"Kustavi\": { own: \"Kustavin\", in: \"Kustavissa\" },\n\t\"Kuusamo\": { own: \"Kuusamon\", in: \"Kuusamossa\" },\n\t\"Kyyjärvi\": { own: \"Kyyjärven\", in: \"Kyyjärvellä\" },\n\t\"Kärkölä\": { own: \"Kärkölän\", in: \"Kärkölässä\" },\n\t\"Kärsämäki\": { own: \"Kärsämäen\", in: \"Kärsämäellä\" },\n\t\"Kökar\": { own: \"Kökarin\", in: \"Kökarissa\" },\n\t\"Lahti\": { own: \"Lahden\", in: \"Lahdessa\" },\n\t\"Laihia\": { own: \"Laihian\", in: \"Laihialla\" },\n\t\"Laitila\": { own: \"Laitilan\", in: \"Laitilassa\" },\n\t\"Lapinjärvi\": { own: \"Lapinjärven\", in: \"Lapinjärvellä\" },\n\t\"Lapinlahti\": { own: \"Lapinlahden\", in: \"Lapinlahdella\" },\n\t\"Lappajärvi\": { own: \"Lappajärven\", in: \"Lappajärvellä\" },\n\t\"Lappeenranta\": { own: \"Lappeenrannan\", in: \"Lappeenrannassa\" },\n\t\"Lapua\": { own: \"Lapuan\", in: \"Laupualla\" },\n\t\"Laukaa\": { own: \"Laukaan\", in: \"Laukaalla\" },\n\t\"Lemi\": { own: \"Lemin\", in: \"Lemillä\" },\n\t\"Lemland\": { own: \"Lemlandin\", in: \"Lemlandissa\" },\n\t\"Lempäälä\": { own: \"Lempäälän\", in: \"Lempäälässä\" },\n\t\"Leppävirta\": { own: \"Leppävirran\", in: \"Leppävirralla\" },\n\t\"Lestijärvi\": { own: \"Lestijärven\", in: \"Lestijärvellä\" },\n\t\"Levi\": { own: \"Levin\", in: \"Levillä\" },\n\t\"Lieksa\": { own: \"Lieksan\", in: \"Lieksassa\" },\n\t\"Lieto\": { own: \"Liedon\", in: \"Liedossa\" },\n\t\"Liminka\": { own: \"Limingan\", in: \"Limingalla\" },\n\t\"Liperi\": { own: \"Liperin\", in: \"Liperissä\" },\n\t\"Lohja\": { own: \"Lohjan\", in: \"Lohjassa\" },\n\t\"Loimaa\": { own: \"Loimaan\", in: \"Loimaalla\" },\n\t\"Loppi\": { own: \"Lopen\", in: \"Lopella\" },\n\t\"Loviisa\": { own: \"Loviisan\", in: \"Loviisassa\" },\n\t\"Luhanka\": { own: \"Luhangan\", in: \"Luhangalla\" },\n\t\"Lumijoki\": { own: \"Lumijoen\", in: \"Lumijoella\" },\n\t\"Lumparland\": { own: \"Lumparlandin\", in: \"Lumparlandissa\" },\n\t\"Luoto\": { own: \"Luodon\", in: \"Luodossa\" },\n\t\"Luumäki\": { own: \"Luumäen\", in: \"Luumäellä\" },\n\t\"Maalahti\": { own: \"Maalahden\", in: \"Maalahdessa\" },\n\t\"Maarianhamina\": { own: \"Maarianhaminan\", in: \"Maarianhaminassa\" },\n\t\"Marttila\": { own: \"Marttilan\", in: \"Marttilassa\" },\n\t\"Masku\": { own: \"Maskun\", in: \"Maskussa\" },\n\t\"Merijärvi\": { own: \"Merijärven\", in: \"Merijärvellä\" },\n\t\"Merikarvia\": { own: \"Merikarvian\", in: \"Merikarvialla\" },\n\t\"Miehikkälä\": { own: \"Miehikkälän\", in: \"Miehikkälässä\" },\n\t\"Mikkeli\": { own: \"Mikkelin\", in: \"Mikkelissä\" },\n\t\"Muhos\": { own: \"Muhoksen\", in: \"Muhoksella\" },\n\t\"Multia\": { own: \"Multian\", in: \"Multiassa\" },\n\t\"Muonio\": { own: \"Muonion\", in: \"Muoniossa\" },\n\t\"Mustasaari\": { own: \"Mustasaaren\", in: \"Mustasaaressa\" },\n\t\"Muurame\": { own: \"Muuramen\", in: \"Muuramella\" },\n\t\"Mynämäki\": { own: \"Mynämäen\", in: \"Mynämäellä\" },\n\t\"Myrskylä\": { own: \"Myrskylän\", in: \"Myrskylässä\" },\n\t\"Mäntsälä\": { own: \"Mäntsälän\", in: \"Mäntsälässä\" },\n\t\"Mänttä\": { own: \"Mäntän\", in: \"Mäntässä\" },\n\t\"Mäntyharju\": { own: \"Mäntyharjun\", in: \"Mäntyharjussa\" },\n\t\"Naantali\": { own: \"Naantalin\", in: \"Naantalissa\" },\n\t\"Nakkila\": { own: \"Nakkilan\", in: \"Nakkilassa\" },\n\t\"Nivala\": { own: \"Nivalan\", in: \"Nivalassa\" },\n\t\"Nokia\": { own: \"Nokian\", in: \"Nokialla\" },\n\t\"Nousiainen\": { own: \"Nousiaisten\", in: \"Nousiaisilla\" },\n\t\"Nummela\": { own: \"Nummelan\", in: \"Nummelassa\" },\n\t\"Nurmes\": { own: \"Nurmeksen\", in: \"Nurmeksella\" },\n\t\"Nurmijärvi\": { own: \"Nurmijärven\", in: \"Nurmijärvellä\" },\n\t\"Närpiö\": { own: \"Närpiön\", in: \"Närpiössä\" },\n\t\"Orimattila\": { own: \"Orimattilan\", in: \"Orimattilassa\" },\n\t\"Oripää\": { own: \"Oripään\", in: \"Oripäässä\" },\n\t\"Orivesi\": { own: \"Oriveden\", in: \"Orivedellä\" },\n\t\"Oulainen\": { own: \"Oulaisten\", in: \"Oulaisilla\" },\n\t\"Oulu\": { own: \"Oulun\", in: \"Oulussa\" },\n\t\"Outokumpu\": { own: \"Outokummun\", in: \"Outokummussa\" },\n\t\"Padasjoki\": { own: \"Padasjoen\", in: \"Padasjoella\" },\n\t\"Paimio\": { own: \"Paimion\", in: \"Paimiossa\" },\n\t\"Paltamo\": { own: \"Paltamon\", in: \"Paltamossa\" },\n\t\"Parainen\": { own: \"Paraisten\", in: \"Paraisilla\" },\n\t\"Parikkala\": { own: \"Parikkalan\", in: \"Parikkalassa\" },\n\t\"Parkano\": { own: \"Parkanon\", in: \"Parkanossa\" },\n\t\"Pedersören kunta\": { own: \"Pedersören kunnan\", in: \"Pedersören kunnassa\" },\n\t\"Pelkosenniemi\": { own: \"Pelkosenniemen\", in: \"Pelkosenniemellä\" },\n\t\"Pello\": { own: \"Pellon\", in: \"Pellossa\" },\n\t\"Perho\": { own: \"Perhon\", in: \"Perhossa\" },\n\t\"Pertunmaa\": { own: \"Pertunmaan\", in: \"Pertunmaalla\" },\n\t\"Petäjävesi\": { own: \"Petäjäveden\", in: \"Petäjävedellä\" },\n\t\"Pieksämäki\": { own: \"Pieksämäen\", in: \"Pieksämäellä\" },\n\t\"Pielavesi\": { own: \"Pielaveden\", in: \"Pielavedellä\" },\n\t\"Pietarsaari\": { own: \"Pietarsaaren\", in: \"Pietarsaaressa\" },\n\t\"Pihtipudas\": { own: \"Pihtiputaan\", in: \"Pihtiputaalla\" },\n\t\"Pirkkala\": { own: \"Pirkkalan\", in: \"Pirkkalassa\" },\n\t\"Polvijärvi\": { own: \"Polvijärven\", in: \"Polvijärvellä\" },\n\t\"Pomarkku\": { own: \"Pomarkun\", in: \"Pomarkkussa\" },\n\t\"Pori\": { own: \"Porin\", in: \"Porissa\" },\n\t\"Pornainen\": { own: \"Pornaisten\", in: \"Pornaisissa\" },\n\t\"Porvoo\": { own: \"Porvoon\", in: \"Porvoossa\" },\n\t\"Posio\": { own: \"Posion\", in: \"Posiossa\" },\n\t\"Pudasjärvi\": { own: \"Pudasjärven\", in: \"Pudasjärvellä\" },\n\t\"Pukkila\": { own: \"Pukkilan\", in: \"Pukkilassa\" },\n\t\"Punkalaidun\": { own: \"Punkalaitumen\", in: \"Punkalaitumella\" },\n\t\"Puolanka\": { own: \"Puolangan\", in: \"Puolangassa\" },\n\t\"Puumala\": { own: \"Puumalan\", in: \"Puumalassa\" },\n\t\"Pyhtää\": { own: \"Pyhtään\", in: \"Pyhtäällä\" },\n\t\"Pyhäjoki\": { own: \"Pyhäjoen\", in: \"Pyhäjoella\" },\n\t\"Pyhäjärvi\": { own: \"Pyhäjärven\", in: \"Pyhäjärvellä\" },\n\t\"Pyhäntä\": { own: \"Pyhännän\", in: \"Pyhännällä\" },\n\t\"Pyhäranta\": { own: \"Pyhärannan\", in: \"Pyhärannalla\" },\n\t\"Pälkäne\": { own: \"Pälkäneen\", in: \"Pälkäneellä\" },\n\t\"Pöytyä\": { own: \"Pöytyän\", in: \"Pöytyällä\" },\n\t\"Raahe\": { own: \"Raahen\", in: \"Raahessa\" },\n\t\"Raasepori\": { own: \"Raaseporin\", in: \"Raaseporissa\" },\n\t\"Raisio\": { own: \"Raision\", in: \"Raisiossa\" },\n\t\"Rantasalmi\": { own: \"Rantasalmen\", in: \"Rantasalmella\" },\n\t\"Ranua\": { own: \"Ranuan\", in: \"Ranualla\" },\n\t\"Rauma\": { own: \"Rauman\", in: \"Raumalla\" },\n\t\"Rautalampi\": { own: \"Rautalammin\", in: \"Rautalammella\" },\n\t\"Rautavaara\": { own: \"Rautavaaran\", in: \"Rautavaarassa\" },\n\t\"Rautjärvi\": { own: \"Rautjärven\", in: \"Rautjärvellä\" },\n\t\"Reisjärvi\": { own: \"Reisjärven\", in: \"Reisjärvellä\" },\n\t\"Riihimäki\": { own: \"Riihimäen\", in: \"Riihimäellä\" },\n\t\"Ristijärvi\": { own: \"Ristijärven\", in: \"Ristijärvellä\" },\n\t\"Rovaniemi\": { own: \"Rovaniemen\", in: \"Rovaniemellä\" },\n\t\"Ruokolahti\": { own: \"Ruokolahden\", in: \"Ruokolahdella\" },\n\t\"Ruovesi\": { own: \"Ruoveden\", in: \"Ruovedellä\" },\n\t\"Rusko\": { own: \"Ruskon\", in: \"Ruskossa\" },\n\t\"Rääkkylä\": { own: \"Rääkkylän\", in: \"Rääkkylässä\" },\n\t\"Saarijärvi\": { own: \"Saarijärven\", in: \"Saarijärvellä\" },\n\t\"Salla\": { own: \"Sallan\", in: \"Sallassa\" },\n\t\"Salo\": { own: \"Salon\", in: \"Salossa\" },\n\t\"Saltvik\": { own: \"Saltvikin\", in: \"Saltvikissa\" },\n\t\"Sastamala\": { own: \"Sastamalan\", in: \"Sastamalassa\" },\n\t\"Sauvo\": { own: \"Sauvon\", in: \"Sauvossa\" },\n\t\"Savitaipale\": { own: \"Savitaipaleen\", in: \"Savitaipaleella\" },\n\t\"Savonlinna\": { own: \"Savonlinnan\", in: \"Savonlinnassa\" },\n\t\"Savukoski\": { own: \"Savukosken\", in: \"Savukoskella\" },\n\t\"Seinäjoki\": { own: \"Seinäjoen\", in: \"Seinäjoella\" },\n\t\"Sievi\": { own: \"Sievin\", in: \"Sievissä\" },\n\t\"Siikainen\": { own: \"Siikaisten\", in: \"Siikaisilla\" },\n\t\"Siikajoki\": { own: \"Siikajoen\", in: \"Siikajoella\" },\n\t\"Siikalatva\": { own: \"Siikalatvan\", in: \"Siikalatvassa\" },\n\t\"Siilinjärvi\": { own: \"Siilinjärven\", in: \"Siilinjärvellä\" },\n\t\"Simo\": { own: \"Simon\", in: \"Simossa\" },\n\t\"Sipoo\": { own: \"Sipoon\", in: \"Sipoossa\" },\n\t\"Siuntio\": { own: \"Siuntion\", in: \"Siuntiossa\" },\n\t\"Sodankylä\": { own: \"Sodankylän\", in: \"Sodankylässä\" },\n\t\"Soini\": { own: \"Soinin\", in: \"Soinissa\" },\n\t\"Somero\": { own: \"Someron\", in: \"Somerossa\" },\n\t\"Sonkajärvi\": { own: \"Sonkajärven\", in: \"Sonkajärvellä\" },\n\t\"Sotkamo\": { own: \"Sotkamon\", in: \"Sotkamossa\" },\n\t\"Sottunga\": { own: \"Sottungan\", in: \"Sottungassa\" },\n\t\"Sulkava\": { own: \"Sulkavan\", in: \"Sulkavalla\" },\n\t\"Sund\": { own: \"Sundin\", in: \"Sundissa\" },\n\t\"Suomussalmi\": { own: \"Suomussalmen\", in: \"Suomussalmella\" },\n\t\"Suonenjoki\": { own: \"Suonenjoen\", in: \"Suonenjoella\" },\n\t\"Sysmä\": { own: \"Sysmän\", in: \"Sysmässä\" },\n\t\"Säkylä\": { own: \"Säkylän\", in: \"Säkylässä\" },\n\t\"Taipalsaari\": { own: \"Taipalsaaren\", in: \"Taipalsaaressa\" },\n\t\"Taivalkoski\": { own: \"Taivalkosken\", in: \"Taivalkoskella\" },\n\t\"Taivassalo\": { own: \"Taivassalon\", in: \"Taivassalossa\" },\n\t\"Tammela\": { own: \"Tammelan\", in: \"Tammelassa\" },\n\t\"Tampere\": { own: \"Tampereen\", in: \"Tampereella\" },\n\t\"Tervo\": { own: \"Tervon\", in: \"Tervossa\" },\n\t\"Tervola\": { own: \"Tervolan\", in: \"Tervolassa\" },\n\t\"Teuva\": { own: \"Teuvan\", in: \"Teuvalla\" },\n\t\"Tohmajärvi\": { own: \"Tohmajärven\", in: \"Tohmajärvellä\" },\n\t\"Toholampi\": { own: \"Toholammen\", in: \"Toholammella\" },\n\t\"Toivakka\": { own: \"Toivakan\", in: \"Toivakassa\" },\n\t\"Tornio\": { own: \"Tornion\", in: \"Torniossa\" },\n\t\"Turku\": { own: \"Turun\", in: \"Turussa\" },\n\t\"Tuusniemi\": { own: \"Tuusniemen\", in: \"Tuusniemessä\" },\n\t\"Tuusula\": { own: \"Tuusulan\", in: \"Tuusulassa\" },\n\t\"Tyrnävä\": { own: \"Tyrnävän\", in: \"Tyrnävällä\" },\n\t\"Ulvila\": { own: \"Ulvilan\", in: \"Ulvilassa\" },\n\t\"Urjala\": { own: \"Urjalan\", in: \"Urjalassa\" },\n\t\"Utajärvi\": { own: \"Utajärven\", in: \"Utajärvellä\" },\n\t\"Utsjoki\": { own: \"Utsjoen\", in: \"Utsjoella\" },\n\t\"Uurainen\": { own: \"Uuraisten\", in: \"Uuraisilla\" },\n\t\"Uusikaarlepyy\": { own: \"Uudenkaarlepyyn\", in: \"Uudessakaarlepyyssä\" },\n\t\"Uusikaupunki\": { own: \"Uudenkaupungin\", in: \"Uudessakaupungissa\" },\n\t\"Vaala\": { own: \"Vaalan\", in: \"Vaalassa\" },\n\t\"Vaasa\": { own: \"Vaasan\", in: \"Vaasassa\" },\n\t\"Valkeakoski\": { own: \"Valkeakosken\", in: \"Valkeakoskella\" },\n\t\"Valtimo\": { own: \"Valtimon\", in: \"Valtimossa\" },\n\t\"Vantaa\": { own: \"Vantaan\", in: \"Vantaalla\" },\n\t\"Varkaus\": { own: \"Varkauden\", in: \"Varkaudessa\" },\n\t\"Vehmaa\": { own: \"Vehmaan\", in: \"Vehmaalla\" },\n\t\"Vesanto\": { own: \"Vesannon\", in: \"Vesannolla\" },\n\t\"Vesilahti\": { own: \"Vesilahden\", in: \"Vesilahdella\" },\n\t\"Veteli\": { own: \"Vetelin\", in: \"Vetelissä\" },\n\t\"Vieremä\": { own: \"Vieremän\", in: \"Vieremällä\" },\n\t\"Vihti\": { own: \"Vihdin\", in: \"Vihdissä\" },\n\t\"Viitasaari\": { own: \"Viitasaaren\", in: \"Viitasaaressa\" },\n\t\"Vimpeli\": { own: \"Vimpelin\", in: \"Vimpelissä\" },\n\t\"Virolahti\": { own: \"Virolahden\", in: \"Vironlahdella\" },\n\t\"Virrat\": { own: \"Virtojen\", in: \"Virroilla\" },\n\t\"Vårdö\": { own: \"Vårdön\", in: \"Vårdössa\" },\n\t\"Vöyri\": { own: \"Vöyrin\", in: \"Vöyrissä\" },\n\t\"Ylitornio\": { own: \"Ylitornion\", in: \"Ylitorniossa\" },\n\t\"Ylivieska\": { own: \"Ylivieskan\", in: \"Ylivieskassa\" },\n\t\"Ylöjärvi\": { own: \"Ylöjärven\", in: \"Ylöjärvellä\" },\n\t\"Ypäjä\": { own: \"Ypäjän\", in: \"Ypäjällä\" },\n\t\"Ähtäri\": { own: \"Ähtärin\", in: \"Ähtärissä\" },\n\t\"Äänekoski\": { own: \"Äänekosken\", in: \"Äänekoskella\" },\n};\n// prettier-ignore-end\n\nconst conjugateCity = (city: string, type: string): string => {\n\tif (!city) {\n\t\treturn \"\";\n\t}\n\n\tif ((!type && city) || !cities[city]) {\n\t\treturn city;\n\t}\n\n\tif (city && (type === \"own\" || type === \"in\") && cities[city]) {\n\t\treturn cities[city][type];\n\t}\n};\n\nexport default conjugateCity;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { RancidBannerContainer, DismissButton, RancidBannerContent } from \"./styles\";\nimport { Link } from \"react-router-dom\";\nimport conjugateCity from \"@utils/city-conjugation\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport { hasWindow } from \"@utils\";\nimport historyTracker, { HistoryField } from \"@services/history-tracker\";\n\ninterface IProps {\n\tbannerColor?: \"red\" | \"green\" | \"blue\";\n\tenterDelay?: number;\n\tonExit?: (e: any) => void;\n\ttextOverride?: string;\n\ttype: HistoryField;\n}\n\nconst RancidBanner = (props: IProps) => {\n\tconst { bannerColor = \"green\", enterDelay = 1000, onExit, textOverride, type } = props;\n\n\tif (!textOverride && !type) {\n\t\treturn null;\n\t}\n\n\tconst isInQuarantine = historyTracker.isInQuarantine();\n\tconst [isVisible, setVisible] = useState(true);\n\tconst city = historyTracker.getHistory(type) || null;\n\tconst [inCity, setInCity] = useState(conjugateCity(city, \"in\") || \"\");\n\tlet enterTimeout: number = null;\n\tlet exitTimeout: number = null;\n\tconst bannerRef = useRef(null);\n\n\tuseEffect(() => {\n\t\tif (hasWindow && bannerRef.current && isVisible && inCity && !isInQuarantine) {\n\t\t\tbannerRef.current.classList.add(\"visible\");\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tenterTimeout = window.setTimeout(() => {\n\t\t\t\t\tbannerRef.current.classList.add(\"enter\");\n\t\t\t\t}, enterDelay);\n\t\t\t});\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout(enterTimeout);\n\t\t\tclearTimeout(exitTimeout);\n\t\t};\n\t}, [bannerRef.current]);\n\n\tuseEffect(() => {\n\t\tif (hasWindow) {\n\t\t\twindow.addEventListener(\"historyTrackUpdate\", onHistoryTrackUpdate);\n\t\t}\n\t\treturn () => {\n\t\t\tclearTimeout(enterTimeout);\n\t\t\tclearTimeout(exitTimeout);\n\t\t\tif (hasWindow) {\n\t\t\t\twindow.removeEventListener(\"historyTrackUpdate\", onHistoryTrackUpdate);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tconst onHistoryTrackUpdate = event => {\n\t\tif (event.detail && event.detail[type]) {\n\t\t\tconst newCity = conjugateCity(event.detail[type], \"in\");\n\t\t\tsetInCity(newCity);\n\t\t}\n\t};\n\n\tconst removeBanner = () => {\n\t\tbannerRef.current.classList.add(\"exit\");\n\n\t\tif (hasWindow) {\n\t\t\texitTimeout = window.setTimeout(() => {\n\t\t\t\tsetVisible(false);\n\t\t\t\thistoryTracker.setQuarantine(city);\n\n\t\t\t\tif (typeof onExit === \"function\") {\n\t\t\t\t\tonExit(city);\n\t\t\t\t}\n\t\t\t}, 450);\n\t\t}\n\t};\n\n\t// This needs to be always, SSR + Hydrate doens't like it magically appearing.\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{!textOverride ? `Oletko myymässä asuntoasi ${inCity}?` : textOverride} \n\t\t\t\t\tHanki osuva hinta-arvio ›\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default RancidBanner;\n","import styled, { css } from \"styled-components\";\nimport { color, boxShadow, fontFamily } from \"@utils/style-utils\";\n\nexport const Select = styled.div`\n\tdisplay: inline-block;\n\tposition: relative;\n\tz-index: 9;\n`;\n\nexport const SelectButton = styled.button`\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tbackground: ${color(\"white\")};\n\tborder: 1px solid ${color(\"grey\", 5)};\n\tborder-radius: 4px;\n\tcursor: pointer;\n\tfont-family: ${fontFamily.base};\n\tfont-size: 16px;\n\tmin-width: 205px;\n\tpadding: 11px 50px 11px 16px;\n\tposition: relative;\n\ttext-align: left;\n\n\tspan.icon {\n\t\tcolor: ${color(\"greenBright\", 1)};\n\t\tfont-size: 16px;\n\t\tdisplay: block;\n\t\tright: 16px;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%) rotate(0deg);\n\n\t\tsvg {\n\t\t\tmax-width: 16px;\n\t\t}\n\t}\n\n\t${props =>\n\t\tprops.isOpen &&\n\t\tcss`\n\t\t\tspan {\n\t\t\t\ttransform: translateY(-50%) rotate(180deg);\n\t\t\t}\n\t\t`}\n`;\n\nexport const Selections = styled.div`\n\tborder: 1px solid ${color(\"grey\", 5)};\n\tbox-shadow: ${boxShadow.basic};\n\tleft: 0;\n\tmin-width: 205px;\n\tposition: absolute;\n\ttop: 100%;\n`;\n\nexport const Selection = styled.div`\n\tbackground: ${color(\"white\")};\n\tborder-bottom: 1px solid ${color(\"grey\", 6)};\n\tcursor: pointer;\n\tfont-size: 16px;\n\tpadding: 11px 16px;\n\ttransition: background-color 150ms;\n\n\t&:hover {\n\t\tbackground: ${color(\"grey\", 7)};\n\t}\n\n\t${props =>\n\t\tprops.active &&\n\t\tcss`\n\t\t\tbackground: ${color(\"greenBright\", 4)};\n\t\t\tpointer-events: none;\n\t\t`}\n`;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport useOnClickOutside from \"@hooks/use-click-outside\";\nimport { ISelection } from \"@utils/apartment-search/selections\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport { SelectButton, Select, Selections, Selection } from \"./styles\";\n\ninterface IProps {\n\tnoSelectionsText?: string;\n\tselections: ISelection[];\n\tonSelection?: (e) => void;\n\tdefaultValue?: any;\n\t[key: string]: any;\n}\n\nconst HousetypeDropdown = ({\n\tnoSelectionsText = \"Valitse\",\n\tselections: selectables,\n\tonSelection = e => void 0,\n\tdefaultValue = null,\n\t...rest\n}: IProps) => {\n\tif (!selectables || selectables.length <= 0) {\n\t\treturn null;\n\t}\n\tconst [mounted, setMounted] = useState(false);\n\tconst [selections, setSelections] = useState([...selectables]);\n\tconst [selected, setSelected] = useState([]);\n\tconst [isOpen, setOpen] = useState(false);\n\tconst ref = useRef(null);\n\n\tuseOnClickOutside(ref, () => setOpen(false));\n\n\tuseEffect(() => {\n\t\tif (defaultValue) {\n\t\t\tfor (const i in selections) {\n\t\t\t\tif (selections[i].value === defaultValue) {\n\t\t\t\t\tselections[i].selected = true;\n\n\t\t\t\t\tsetSelected([selections[i]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetMounted(true);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (typeof onSelection === \"function\" && mounted) {\n\t\t\tonSelection(selected);\n\t\t}\n\t}, [selected]);\n\n\tconst select = (selection: ISelection) => {\n\t\tif (selected[0] && selection.value === selected[0].value) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sels = selections.map(s => {\n\t\t\treturn {\n\t\t\t\t...s,\n\t\t\t\tselected: s.value === selection.value,\n\t\t\t};\n\t\t});\n\n\t\tsetSelections([...sels]);\n\t\tsetSelected([{ ...selection, selected: true }]);\n\t\tsetOpen(false);\n\t};\n\n\tconst isActive = (selection: ISelection): boolean =>\n\t\tselected && selected[0] && selection.value === selected[0].value;\n\n\treturn (\n\t\t\n\t);\n};\n\nexport default HousetypeDropdown;\n","import styled from \"styled-components\";\nimport { ribbon, media, boxShadow, color, textStyles } from \"@utils/style-utils\";\n\nexport const FormContainer = styled.div.attrs(() => ({\n\tclassName: \"homevisit-form\",\n}))`\n\tbackground: ${color(\"white\")};\n\tbox-shadow: ${boxShadow.hugeLight};\n\tposition: relative;\n\tpadding: 50px 30px 20px;\n\n\t@media print {\n\t\tdisplay: none !important;\n\t}\n\n\t${media.md`\n\t\tpadding-top: 66px;\n\n\t\t> * {\n\t\t\tmargin-left: auto;\n\t\t\tmargin-right: auto;\n\t\t\tmax-width: 312px;\n\t\t}\n\t`}\n\n\t&::before {\n\t\t${ribbon}\n\t\tcontent: '';\n\t\theight: 6px;\n\t\tleft: 0;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\twidth: 100%;\n\t}\n\n\ttextarea {\n\t\tmargin-top: 16px;\n\t}\n\n\tinput,\n\ttextarea {\n\t\tbackground: ${color(\"grey\", 7)} !important;\n\t}\n\n\t.basic-form {\n\t\tbackground: ${color(\"white\")};\n\t\tborder: 0;\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\t\tpadding-top: 5px;\n\n\t\tbutton {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\th3 {\n\t\t${textStyles.H3Condensed}\n\t\tmargin-bottom: 24px;\n\t\tmargin-top: 0;\n\t\ttext-align: center;\n\t}\n\n\tp {\n\t\t${textStyles.PSmallCondensed}\n\t\tcolor: ${color(\"grey\", 2)};\n\t\ttext-align: center;\n\n\t\tstrong {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t\tfont-weight: 500;\n\t\t}\n\t}\n`;\n","import React from \"react\";\nimport Editor from \"wake-react-components/editor\";\nimport BasicContactForm from \"@components/Form/ContactFormBasic\";\nimport { FormContainer } from \"./styles\";\n\nconst defaultText = `

Kutsu välittäjämme Kotikäynnille, kun haluat keskustella tarkemmin asunnon myynnistä ja arvosta. Välittäjiemme antamat hinta-arviot ovat toteutuneet tilastojemme mukaan keskimäärin 98 prosenttisesti.

Kotikäynti ei sido sinua mihinkään eikä aiheuta sinulle mitään kuluja.

`;\n\nconst HomevisitSmallForm = props => {\n\treturn (\n\t\t\n\t\t\t

Pyydä perusteltu hinta-arvio asunnostasi!

\n\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default HomevisitSmallForm;\n","export interface ISelection {\n\tlabel: string;\n\t/** Order can be used to \"manually\" sort selections instead of alphabetical sort by label in sagas */\n\torder?: number;\n\tselected?: boolean;\n\tvalue: any;\n\t[key: string]: any;\n}\n\nexport const selectableHouseTypes: ISelection[] = [\n\t{ label: \"Kaikki asuntotyypit\", order: 0, value: \"all\" },\n\t{ label: \"Kerrostalo\", order: 1, value: \"kt\" },\n\t{ label: \"Rivitalo\", order: 2, value: \"rt\" },\n\t{ label: \"Omakotitalo\", order: 3, value: \"okt\" },\n];\n\nexport const selectableRooms: ISelection[] = [\n\t{ label: \"1h\", value: \"1h\" },\n\t{ label: \"2h\", value: \"2h\" },\n\t{ label: \"3h\", value: \"3h\" },\n\t{ label: \"4h\", value: \"4h\" },\n\t{ label: \"5h\", value: \"5h\" },\n\t{ label: \"6h+\", value: \"5hplus\" },\n];\n","export interface ISuggestionCategory {\n\tindex?: number;\n\tname: string;\n\ttype: string;\n\tpriceType: string;\n\tvalues: any[];\n}\n\nconst suggestionCategories: ISuggestionCategory[] = [\n\t{\n\t\tname: \"Kaupunki\",\n\t\ttype: \"city\",\n\t\tpriceType: \"c\",\n\t\tvalues: [],\n\t},\n\t{\n\t\tname: \"Postinumero\",\n\t\ttype: \"postcode\",\n\t\tpriceType: \"p\",\n\t\tvalues: [],\n\t},\n];\n\nexport default suggestionCategories;","import styled from \"styled-components\";\nimport { color } from \"@utils/style-utils\";\n\nexport const SearchInput = styled.div`\n\tposition: relative;\n\n\tinput {\n\t\tpadding: 10px 30px 10px 16px;\n\t\twidth: 306px;\n\n\t\t&.has-selected-area {\n\t\t\t&::placeholder {\n\t\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t\t}\n\t\t}\n\t}\n\n\t.icon {\n\t\tcolor: ${color(\"grey\", 4)};\n\t\tdisplay: inline-block;\n\t\tfont-size: 14px;\n\t\tright: 14px;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\ttransform: translateY(-50%);\n\n\t\t&.searching {\n\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t}\n\n\t\tsvg {\n\t\t\tanimation-duration: 500ms;\n\t\t\tmax-width: 14px;\n\t\t}\n\t}\n`;\n","import React, { PureComponent, RefObject } from \"react\";\nimport TextInput from \"@components/Form/TextInput\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\n\nimport axios from \"axios\";\nimport categories, { ISuggestionCategory } from \"./suggestion-categories\";\n\nimport AddressSearchResults from \"@components/Search/AddressSearchResults\";\n\nimport { SearchInput } from \"./styles\";\nimport clsx from \"clsx\";\n\ninterface IProps {\n\tonSelect?: (selections?: any) => void;\n\tdefaultValue?: string;\n\tgrey?: boolean;\n}\n\ninterface IState {\n\tisOpen: boolean;\n\tresults: any;\n\tresultsOpen: boolean;\n\tselectedAddress: any;\n\ttimestamp?: number;\n\tplaceholder?: string;\n\t[key: string]: any;\n}\n\nclass PriceAddressSearch extends PureComponent {\n\tprotected suggestionCategories: ISuggestionCategory[] = [...categories];\n\tprotected ref: RefObject = React.createRef();\n\tprotected inputRef: RefObject = React.createRef();\n\tprotected isRendering: boolean = true;\n\tprotected initialPlaceholder: string = \"Kirjoita kaupunki tai postinumero\";\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tresults: [],\n\t\t\tresultsOpen: false,\n\t\t\tselectedAddress: {},\n\t\t\tplaceholder: props.defaultValue || \"Kirjoita kaupunki tai postinumero\",\n\t\t};\n\n\t\tthis.reset = this.reset.bind(this);\n\t\tthis.parseAddressSuggestions = this.parseAddressSuggestions.bind(this);\n\t\tthis.getAddressSuggestionsCount = this.getAddressSuggestionsCount.bind(this);\n\t\tthis.setSearchTerm = this.setSearchTerm.bind(this);\n\t\tthis.search = this.search.bind(this);\n\t\tthis.checkForClickOutside = this.checkForClickOutside.bind(this);\n\t\tthis.setAddress = this.setAddress.bind(this);\n\t\tthis.setOpen = this.setOpen.bind(this);\n\t\tthis.createPlaceholder = this.createPlaceholder.bind(this);\n\t\tthis.onFocus = this.onFocus.bind(this);\n\t}\n\n\tpublic reset() {\n\t\tconsole.log(\"reset address search\");\n\t\tthis.setState({\n\t\t\tisOpen: false,\n\t\t\tresults: [],\n\t\t\tresultsOpen: false,\n\t\t\tselectedAddress: {},\n\t\t});\n\t}\n\n\tparseAddressSuggestions(suggestions): ISuggestionCategory[] {\n\t\tfor (let i = 0, l = this.suggestionCategories.length; i < l; i++) {\n\t\t\tconst suggestionCategory = this.suggestionCategories[i];\n\t\t\tconst addressType = suggestionCategory.priceType;\n\t\t\tconst addressTypeName = suggestionCategory.name;\n\t\t\tsuggestionCategory.values.length = 0;\n\n\t\t\tfor (let j = 0; j < suggestions.length; j++) {\n\t\t\t\tconst suggestion = suggestions[j];\n\t\t\t\tif (suggestion.t === addressType) {\n\t\t\t\t\tsuggestion.index = j;\n\t\t\t\t\tsuggestion.value = suggestion.name;\n\t\t\t\t\tsuggestion.addressTypeName = addressTypeName;\n\t\t\t\t\tsuggestionCategory.values.push(suggestion);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.suggestionCategories;\n\t}\n\n\tgetAddressSuggestionsCount() {\n\t\tlet count = 0;\n\t\tthis.suggestionCategories.forEach(category => {\n\t\t\tcount += category.values.length;\n\t\t});\n\t\treturn count;\n\t}\n\n\tgetAddressByAssignedIndex(index: number) {\n\t\tfor (const category of this.suggestionCategories) {\n\t\t\tconst values = category.values;\n\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value.index === index) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tsetOpen(state?: boolean) {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tisOpen: true,\n\t\t});\n\t}\n\n\tasync setSearchTerm(value: string) {\n\t\tif (!value) {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tresults: [],\n\t\t\t\tresultsOpen: false,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tisSearching: true,\n\t\t});\n\n\t\tconst results = await this.search(value);\n\n\t\tif (!this.isRendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\tcount: this.getAddressSuggestionsCount(),\n\t\t\tisOpen: true,\n\t\t\tisSearching: false,\n\t\t\tresults,\n\t\t\tresultsOpen: true,\n\t\t\ttimestamp: new Date().getMilliseconds() /* this will make component re-render without need for very deep check */,\n\t\t});\n\t}\n\n\tasync search(query: string) {\n\t\ttry {\n\t\t\tconst response = await axios.get(`/api/km/KMSite/priceAreas?key=${query}&limit=50`);\n\n\t\t\treturn this.parseAddressSuggestions(response.data.data);\n\t\t} catch (e) {\n\t\t\tconsole.log(\"Failed to search\", e);\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tcheckForClickOutside(event: MouseEvent | TouchEvent) {\n\t\tif (!this.state.isOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = event.target as HTMLElement;\n\t\tif (!this.ref.current || this.ref.current.contains(target)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tisOpen: false,\n\t\t\tresultsOpen: false,\n\t\t});\n\t}\n\n\tsetAddress(index: number) {\n\t\tconst selection = this.getAddressByAssignedIndex(index);\n\t\tconst input = this.ref.current.querySelector(\"input\");\n\t\tinput.value = \"\";\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\t...this.state,\n\t\t\t\tisOpen: false,\n\t\t\t\tresultsOpen: false,\n\t\t\t\tselectedAddress: selection,\n\t\t\t\tplaceholder: selection.value,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tif (this.props.onSelect) {\n\t\t\t\t\tthis.props.onSelect(this.state.selectedAddress);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tcreatePlaceholder() {\n\t\tconst { placeholder, isOpen } = this.state;\n\n\t\tif (isOpen) {\n\t\t\treturn this.initialPlaceholder;\n\t\t}\n\n\t\treturn placeholder;\n\t}\n\n\tonFocus() {\n\t\tthis.setOpen(true);\n\t}\n\n\tcomponentDidMount() {\n\t\tdocument.addEventListener(\"mousedown\", this.checkForClickOutside);\n\t\tdocument.addEventListener(\"touchstart\", this.checkForClickOutside);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.isRendering = false;\n\t\tdocument.removeEventListener(\"mousedown\", this.checkForClickOutside);\n\t\tdocument.removeEventListener(\"touchstart\", this.checkForClickOutside);\n\t}\n\n\trender() {\n\t\tconst { grey } = this.props;\n\t\tconst { count, isOpen, placeholder, isSearching, results, resultsOpen, timestamp } = this.state;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t this.setSearchTerm(e.target.value)}\n\t\t\t\t\t\tonFocus={this.onFocus}\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\t{isSearching && }\n\t\t\t\t\t\t{!isSearching && }\n\t\t\t\t\t\n\t\t\t\t\t{resultsOpen && results && (\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default PriceAddressSearch;\n","import styled from \"styled-components\";\nimport { Container } from \"@components/Grid\";\nimport { textStyles, media, color, grid, buttons } from \"@utils/style-utils\";\nimport { rgba } from \"polished\";\n\nexport const SellingContainer = styled(Container)`\n\tpadding-top: 160px;\n\tposition: relative;\n\n\t.rancid-banner {\n\t\tmargin-top: 0px;\n\t}\n`;\n\nexport const SellingContent = styled.div`\n\t${media.lg`\n\t\tfloat: left;\n\t\tmax-width: 896px;\n\t\twidth: calc(896 / 1364 * 100%);\n\t`}\n\n\t.selling-content {\n\t\tmax-width: 776px;\n\n\t\tp {\n\t\t\t${textStyles.PMedium}\n\t\t}\n\n\t\ta {\n\t\t\t${textStyles.AInline}\n\t\t}\n\t}\n\n\t#why-km .container {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\n\t\ta {\n\t\t\talign-items: flex-start;\n\t\t\tmargin-bottom: 30px;\n\t\t\tpadding: 26px 40px 25px 30px;\n\n\t\t\t${media.smd`\n\t\t\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\t\t\tpadding: 46px 40px 45px 30px;\n\t\t\t`}\n\t\t}\n\t}\n`;\n\nexport const SellingSidebar = styled.div`\n\tpadding-top: 11px;\n\n\t${media.lg`\n\t\tfloat: right;\n\t\tmargin-bottom: 0;\n\t\tposition: relative;\n\t\twidth: calc(428 / 1364 * 100%);\n\t`}\n`;\n\nexport const SellingTitle = styled.div`\n\tposition: relative;\n\tz-index: 9;\n\n\th1 {\n\t\tmargin-bottom: 30px;\n\t\tmargin-top: 0;\n\n\t\t${media.md`\n\t\t\tmargin-bottom: 40px;\n\t\t`}\n\t}\n`;\n\nexport const Background = styled.span`\n\tbackground: ${rgba(color(\"greenBright\", 4), 0.25)};\n\tbottom: 0;\n\theight: 100vh;\n\tleft: -50vw;\n\tposition: absolute;\n\tpointer-events: none;\n\twidth: 150vw;\n\tz-index: 0;\n`;\n\nexport const SellingIngress = styled.div`\n\t${textStyles.PLarge}\n\tmargin-bottom: 50px;\n\tpadding-bottom: 50px;\n\tposition: relative;\n\n\t${media.md`\n\t\tmargin-bottom: 65px;\n\t\tpadding-bottom: 65px;\n\t`}\n\n\t${media.lg`\n\t\tmargin-bottom: 80px;\n\t\tpadding-bottom: 80px;\n\t`}\n\n\tp {\n\t\t${textStyles.PLarge}\n\t}\n\n\t.selling-ingress {\n\t\tposition: relative;\n\t\tz-index: 9;\n\n\t\t> *:first-child {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n`;\n\nexport const ArticleCardsWrapper = styled.div`\n\tbackground: ${color(\"grey\", 7)};\n\tpadding: 30px 0 20px;\n\tmargin: 50px 0;\n\n\t${media.md`\n\t\tpadding: 50px 0 35px;\n\t\tmargin: 70px 0;\n\t`}\n\n\t${media.lg`\n\t\tpadding: 70px 0 70px;\n\t\tmargin: 90px 0;\n\t`}\n\n\th2 {\n\t\tmargin-bottom: 30px;\n\t\ttext-align: center;\n\n\t\t${media.md`\n\t\t\tmargin-bottom: 40px;\n\t\t`}\n\n\t\t${media.lg`\n\t\t\tmargin-bottom: 60px;\n\t\t`}\n\t}\n`;\n\nexport const SellingLift = styled.div`\n\tmargin: 80px auto;\n\tmax-width: 896px;\n\ttext-align: center;\n\n\t${media.md`\n\t\tmargin: 110px auto;\n\t`}\n\n\t${media.lg`\n\t\tmargin: 130px auto;\n\t`}\n\n\th2 {\n\t\t${textStyles.H1}\n\t\tmargin-bottom: 35px;\n\n\t\t${media.md`\n\t\t\tmargin-bottom: 45px;\n\t\t`}\n\n\t\t${media.lg`\n\t\t\tmargin-bottom: 56px;\n\t\t`}\n\t}\n\n\tp {\n\t\t${textStyles.PMedium}\n\n\t\t:last-child {\n\t\t\tmargin-top: 35px;\n\n\t\t\t${media.md`\n\t\t\t\tmargin-top: 45px;\n\t\t\t`}\n\n\t\t\t${media.lg`\n\t\t\t\tmargin-top: 56px;\n\t\t\t`}\n\t\t}\n\n\t\ta {\n\t\t\t${buttons.textLinkPrimary}\n\t\t}\n\t}\n`;\n","import styled from \"styled-components\";\nimport { color, textStyles, media, fontFamily } from \"@utils/style-utils\";\n\nexport const LiftWrapper = styled.div`\n\tbackground: ${color(\"grey\", 7)};\n\tmargin: 60px 0;\n\tpadding-top: 30px;\n\tpadding-bottom: 40px;\n\n\t${media.md`\n\t\tmargin: 80px 0;\n\t\tpadding-bottom: 60px;\n\t`}\n\n\t${media.lg`\n\t\tmargin: 100px 0;\n\t\tpadding-bottom: 80px;\n\t\tpadding-top: 0;\n\t`}\n`;\n\nexport const LiftContent = styled.div`\n\talign-items: flex-end;\n\tdisplay: flex;\n\tmargin-bottom: 35px;\n\n\t${media.md`\n\t\tmargin-bottom: 60px;\n\t`}\n\n\t${media.lg`\n\t\tmargin-top: -67px;\n\t\tmargin-bottom: 90px;\n\t\tpadding-top: 30px;\n\t`}\n`;\n\nexport const LiftText = styled.div`\n\tflex-basis: 100%;\n\n\t${media.lg`\n\t\tflex-basis: 50%;\n\t`}\n\n\t.lift-body {\n\t\tmax-width: 600px;\n\n\t\t${media.lg`\n\t\t\t> *:last-child {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t`}\n\t}\n\n\tp {\n\t\t${textStyles.PMedium}\n\t}\n`;\n\nexport const LiftImageArea = styled.div`\n\tdisplay: none;\n\tflex-basis: 50%;\n\tpadding-bottom: 9px;\n\tpadding-left: 10%;\n\n\t${media.lg`\n\t\tdisplay: flex;\n\t`}\n\n\tpicture,\n\timg {\n\t\tdisplay: block;\n\t\tmax-width: 545px;\n\t\twidth: 100%;\n\t}\n`;\n\nexport const SelectionsWrapper = styled.div`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\n\t> * {\n\t\tflex-basis: 100%;\n\t\tmargin-bottom: 12px;\n\n\t\t@media (min-width: 1386px) {\n\t\t\tmargin-right: 24px;\n\t\t}\n\t\t:last-child {\n\t\t\tmargin-right: 0;\n\t\t}\n\t}\n\n\t.form-group {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex-basis: calc((100% - 12px) / 2);\n\n\t\t&--year {\n\t\t\tmargin-right: 12px;\n\t\t}\n\t}\n\n\t.multi-button-select {\n\t\tdisplay: flex;\n\t}\n\n\t.selection-button {\n\t\tflex-basis: 0;\n\t\tflex-grow: 1;\n\t\tfont-size: 15px;\n\t\theight: 40px;\n\t\tmargin-left: -1px;\n\t\tpadding-left: 15px;\n\t\tpadding-right: 15px;\n\n\t\t&:first-of-type {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t@media (min-width: 374px) {\n\t\t\tfont-size: 16px;\n\t\t\tpadding-left: 17px;\n\t\t\tpadding-right: 17px;\n\t\t}\n\t}\n\n\t.calculate-button {\n\t\talign-self: center;\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t\tmargin-top: 12px;\n\t\tmax-width: 312px;\n\t}\n\n\t.housetype-dropdown button {\n\t\tfont-size: 15px;\n\t\tpadding: 10px 50px 10px 16px;\n\t\twidth: 100%;\n\n\t\t@media (min-width: 374px) {\n\t\t\tfont-size: 16px;\n\t\t}\n\t}\n\n\tinput#search {\n\t\tfont-size: 15px;\n\t\twidth: 100%;\n\n\t\t@media (min-width: 374px) {\n\t\t\tfont-size: 16px;\n\t\t}\n\t}\n\n\tinput[name=\"year\"],\n\tinput[name=\"area\"] {\n\t\tfont-family: ${fontFamily.base};\n\t\tfont-size: 15px;\n\t\tflex-grow: 1;\n\t\twidth: 100%;\n\n\t\t@media (min-width: 374px) {\n\t\t\tfont-size: 16px;\n\t\t}\n\t}\n\n\tinput[name=\"area\"] {\n\t\tmargin-right: 10px;\n\t}\n\n\t${media.md`\n\t\t> * {\n\t\t\tmargin-bottom: 18px;\n\t\t}\n\n\t\t.search-input,\n\t\t.housetype-dropdown {\n\t\t\tflex-basis: calc((100% - 12px) / 2);\n\t\t}\n\n\t\t.search-input {\n\t\t\tmargin-right: 12px;\n\t\t}\n\t`}\n\n\t${media.lg`\n\t\t.multi-button-select {\n\t\t\tflex-basis: calc((100% - 12px) / 2);\n\t\t}\n\n\t\t.form-group--year,\n\t\t.form-group--area {\n\t\t\tflex-basis: calc((50% - 24px) / 2);\n\t\t}\n\n\t\t.multi-button-select,\n\t\t.form-group--year {\n\t\t\tmargin-right: 12px;\n\t\t}\n\t`}\n\n\t@media (min-width: 1386px) {\n\t\t.search-input {\n\t\t\tflex-basis: 269px;\n\t\t\tmargin-bottom: 0;\n\t\t\tmargin-right: 24px;\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\t.housetype-dropdown {\n\t\t\tflex-basis: 209px;\n\t\t\tmargin-bottom: 0;\n\t\t\tmargin-right: 24px;\n\t\t}\n\n\t\t.multi-button-select {\n\t\t\tflex-basis: 331px;\n\t\t\tmargin-bottom: 0;\n\t\t\tmargin-right: 24px;\n\t\t}\n\n\t\t.form-group--year {\n\t\t\tflex-basis: 135px;\n\t\t\tmargin-bottom: 0;\n\t\t\tmargin-right: 24px;\n\t\t}\n\n\t\t.form-group--area {\n\t\t\tflex-basis: 115px;\n\t\t\tmargin-bottom: 0;\n\t\t\tmargin-right: 24px;\n\t\t}\n\n\t\tinput[name=\"year\"] {\n\t\t\tmax-width: 136px;\n\t\t}\n\n\t\tinput[name=\"area\"] {\n\t\t\tmax-width: 100px;\n\t\t}\n\n\t\t.calculate-button {\n\t\t\tflex-basis: 159px;\n\t\t\tmargin: 0;\n\t\t\tmargin-left: auto;\n\t\t\tpadding: 12px 20px 11px;\n\t\t\twidth: auto;\n\t\t}\n\t}\n`;\n","import React, { useState } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\nimport { LiftWrapper, SelectionsWrapper, LiftContent, LiftText, LiftImageArea } from \"./styles\";\nimport PriceAddressSearch from \"@components/Search/PriceAddressSearch\";\nimport HousetypeDropdown from \"@components/HousetypeDropdown\";\nimport { selectableHouseTypes, selectableRooms } from \"@utils/apartment-pricing/selections\";\nimport MultiButtonSelect from \"@components/Form/MultiButtonSelect\";\nimport TextInput from \"@components/Form/TextInput\";\nimport { Container } from \"@components/Grid\";\nimport Text from \"wake-react-components/text\";\nimport Editor from \"wake-react-components/editor\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { getAssetUrl } from \"@utils\";\n\nconst onlyNumbers = (str: string) => /^[0-9]*$/.test(str);\n\ninterface IProps {\n\t[key: string]: any;\n}\n\nconst ApartmentPricesLift = (props: IProps & RouteComponentProps) => {\n\tconst [selectedAddress, setSelectedAddress] = useState(null);\n\tconst [selectedHousetypes, setSelectedHousetypes] = useState(null);\n\tconst [selectedRooms, setSelectedRooms] = useState(null);\n\tconst [selectedArea, setSelectedArea] = useState(null);\n\tconst [selectedYear, setSelectedYear] = useState(null);\n\n\tconst calculate = () => {\n\t\tconst locationId = selectedAddress ? selectedAddress.id : \"Helsinki\";\n\t\tconst housetype = !isEmpty(selectedHousetypes) ? selectedHousetypes[0].value : \"all\";\n\t\tconst room = !isEmpty(selectedRooms) ? selectedRooms[0].value : \"all\";\n\t\tconst area = !isEmpty(selectedArea) ? selectedArea : null;\n\t\tconst year = !isEmpty(selectedYear) ? selectedYear : null;\n\n\t\tlet address = `${locationId}/0`;\n\n\t\tif (onlyNumbers(locationId)) {\n\t\t\taddress = `0/${locationId}`;\n\t\t}\n\n\t\tlet url = `/asuntojen-hinnat/${address}/${housetype}/${room}/`;\n\n\t\tif (!area && year) {\n\t\t\turl += year;\n\t\t}\n\t\telse if (area && !year) {\n\t\t\turl += \"0/\" + area;\n\t\t}\n\t\telse if (area && year) {\n\t\t\turl += `${year}/${area}`;\n\t\t}\n\n\t\tdocument.body.classList.remove(\"loaded\");\n\t\tdocument.body.classList.add(\"load-start\");\n\n\t\tsetTimeout(() => {\n\t\t\tprops.history.push(url);\n\t\t}, 300);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t setSelectedYear(target.value)}\n\t\t\t\t\t\tclassName=\"year-input\"\n\t\t\t\t\t/>\n\t\t\t\t\t setSelectedArea(target.value)}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tLaske arvio\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default withRouter(ApartmentPricesLift);\n","import React, { Fragment, useEffect } from \"react\";\nimport { IDocument } from \"@redux/document\";\nimport { IApplicationState } from \"@redux\";\nimport { connect } from \"react-redux\";\nimport Editor from \"wake-react-components/editor\";\nimport Text from \"wake-react-components/text\";\nimport {\n\tSellingIngress,\n\tSellingTitle,\n\tSellingContainer,\n\tSellingContent,\n\tSellingSidebar,\n\tBackground,\n\tArticleCardsWrapper,\n\tSellingLift,\n} from \"./styles\";\nimport HomevisitForm from \"@components/Form/HomevisitSmallForm\";\nimport ApartmentPricesLift from \"@components/ApartmentPricesLift\";\nimport WhyKm from \"@components/WhyKm\";\nimport ArticleCards from \"@components/ArticleCards\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { Container } from \"@components/Grid\";\nimport { Link } from \"react-router-dom\";\nimport RancidBanner from \"@components/RancidBanner\";\n\ninterface IProps {\n\tdoc: IDocument;\n}\n\nconst SellingPage = ({ doc }: IProps) => {\n\tconst { ArticlesMain } = doc;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t

Asunnon myyjän opas

\n\t\t\t\t\t

\n\t\t\t\t\t\tKiinteistömaailmassa hoidamme nykyisen asuntosi myynnin alusta loppuun ja autamme uuden\n\t\t\t\t\t\tetsinnässä. Näin voit itse keskittyä muihin asioihin ja jättää kaiken meidän huoleksemme.\n\t\t\t\t\t

\n\t\t\t\t\t

\n\t\t\t\t\t\tTutustu\n\t\t\t\t\t

\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t{!isEmpty(ArticlesMain) && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t

Lue lisää asuntosi myynnistä

\n\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t)}\n\t\t
\n\t);\n};\n\nconst mapStateToProps = (state: IApplicationState) => ({\n\tdoc: state.document,\n});\n\nexport default connect(mapStateToProps)(SellingPage);\n"],"sourceRoot":""}