{"version":3,"sources":["../node_modules/wake-react-components/background.js","hooks/use-click-outside.tsx","../node_modules/wake-react-components/lib/background/index.js","components/HousetypeDropdown/styles.js","components/HousetypeDropdown/index.tsx","utils/apartment-pricing/selections.tsx","components/Search/PriceAddressSearch/suggestion-categories.tsx","components/Search/PriceAddressSearch/styles.js","components/Search/PriceAddressSearch/index.tsx","pages/CampaignSpring2023/styles.js","pages/CampaignSpring2023/index.tsx"],"names":["Object","defineProperty","exports","value","default","e","_background","__esModule","useOnClickOutside","ref","handler","useEffect","listener","event","target","current","contains","document","addEventListener","removeEventListener","_typeof","o","Symbol","iterator","constructor","prototype","_react","_interopRequireDefault","_render","_image","_extends","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_defineProperty","i","toPrimitive","TypeError","String","Number","_toPrimitive","_toPropertyKey","configurable","writable","_toConsumableArray","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","from","_iterableToArray","a","toString","slice","name","test","_unsupportedIterableToArray","_nonIterableSpread","FrontComponent","_ref","doc","thumb","children","_ref$tagName","tagName","_ref$defaultValue","defaultValue","frontProps","src","style","thumbParams","fill","getThumb","concat","relation","url","indexOf","backgroundImage","Tag","props","forEach","getOwnPropertyDescriptors","defineProperties","_objectSpread","createElement","Background","displayName","Select","styled","div","withConfig","componentId","SelectButton","button","color","fontFamily","base","isOpen","css","Selections","boxShadow","basic","Selection","active","HousetypeDropdown","_a","noSelectionsText","selections","selectables","onSelection","rest","__rest","mounted","setMounted","useState","setSelections","selected","setSelected","setOpen","useRef","isActive","selection","React","onClick","type","label","className","FaIcon","icon","map","index","key","sels","s","select","selectableHouseTypes","order","selectableRooms","suggestionCategories","priceType","values","SearchInput","PriceAddressSearch","PureComponent","super","categories","createRef","inputRef","isRendering","initialPlaceholder","this","state","results","resultsOpen","selectedAddress","placeholder","reset","parseAddressSuggestions","getAddressSuggestionsCount","setSearchTerm","search","checkForClickOutside","setAddress","createPlaceholder","onFocus","console","log","setState","suggestions","l","suggestionCategory","addressType","addressTypeName","j","suggestion","count","category","getAddressByAssignedIndex","isSearching","timestamp","Date","getMilliseconds","query","response","axios","get","data","querySelector","onSelect","componentDidMount","componentWillUnmount","render","grey","Fragment","TextInput","aria-label","clsx","onChange","autoComplete","spin","AddressSearchResults","onSelectedAddress","time","CampaignSpring2023Background","CampaignSpring2023Wrapper","CampaignSpring2023Container","hugeLight","breakpoints","lgx","md","ribbon","SearchArea","condensed","media","lg","_templateObject","_taggedTemplateLiteral","SearchAreaTop","_templateObject2","_templateObject3","Section","_templateObject4","Title","p","textStyles","PSmall","_templateObject5","PriceInputs","_templateObject6","Continue","CampaignSpring2023BottomWrapper","Suggestions","_templateObject7","SuggestionSpacer","minHeight","_templateObject8","SuggestionsTitle","h2","SuggestedProperty","_templateObject9","SuggestionImage","almostNormal","_templateObject10","SuggestionTitle","ButtonArea","ThumbUp","ThumbDown","BelowButtonsText","NoMoreMatches","ZeroMatches","_templateObject11","MatchedProperty","_templateObject12","MatchTitle","h3","connect","selectedAddresses","setSelectedAddresses","selectedRooms","setSelectedRooms","budgetRooms","setBudgetRooms","selectedHouseTypes","setSelectedHouseTypes","selectedArea","setSelectedArea","minPrice","setMinPrice","maxPrice","setMaxPrice","setSearching","properties","setProperties","hasSearched","setHasSearched","propertyIndex","setPropertyIndex","match","setMatch","tallestImageHeight","setTallestImageHeight","hasWindow","screen","availHeight","foobarLink","matchRef","suggestionsRef","zeroMatchesRef","resetSearch","scroll","undefined","classList","remove","window","scrollTo","behavior","left","top","Text","onSubmit","preventDefault","post","then","tallest","property","firstImage","height","setTimeout","offsetTop","catch","error","toast","hideAfter","hide","position","MultiButtonSelect","single","labelAfter","_ref2","budgetSelectableRooms","_ref3","_ref4","CtaButton","disabled","text","submitting","isAdmin","suggestionsTitle","area","livingArea","totalArea","sortArea","totalAreaBlock","replace","roomTypes","getSuggestionTitle","alt","description","onError","_ref5","currentTarget","onerror","getAssetUrl","imageWithSize","getImageUrl","add","click","faThumbsUp","faThumbsDown","Link","to","ApartmentBlock","openInNew","Editor","newSearchButtonText","href","rel"],"mappings":"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","file":"assets/js/pages-CampaignSpring2023.chunk.js?cb=87906c5e7c4c9799e683","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _background = _interopRequireDefault(require(\"./lib/background\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar _default = exports.default = _background.default;","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;","\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _render = _interopRequireDefault(require(\"../utils/render\"));\nvar _image = require(\"../utils/image\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar FrontComponent = function FrontComponent(_ref) {\n var doc = _ref.doc,\n name = _ref.name,\n thumb = _ref.thumb,\n children = _ref.children,\n _ref$tagName = _ref.tagName,\n tagName = _ref$tagName === void 0 ? \"div\" : _ref$tagName,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? \"\" : _ref$defaultValue,\n frontProps = _ref.frontProps;\n var value = doc[name];\n var src = value && value.src || defaultValue;\n var style = {};\n if (src || value) {\n if (thumb && src) {\n var thumbParams = Object.assign(new Array(4).fill(null), thumb);\n src = _image.getThumb.apply(void 0, [value].concat(_toConsumableArray(thumbParams), [true]));\n } else if (value && value.relation) {\n src = value.relation.url || src;\n }\n if (src && src.indexOf(\"url(\") !== 0) {\n src = \"url(\\\"\".concat(src, \"\\\")\");\n }\n style = {\n backgroundImage: src\n };\n }\n var Tag = tagName;\n var props = _objectSpread({}, frontProps);\n delete props.tagName;\n return /*#__PURE__*/_react.default.createElement(Tag, _extends({\n style: style\n }, props), children);\n};\nvar Background = function Background(props) {\n return (0, _render.default)(\"Background\", props, FrontComponent);\n};\nBackground.displayName = \"Background\";\nvar _default = exports.default = Background;","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","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 { boxShadow, breakpoints, color, fontFamily, media, ribbon, textStyles } from \"@utils/style-utils\";\n\nexport const CampaignSpring2023Background = styled.div`\n\tbackground-position: top 65px center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: auto calc(100% - 185px); // full height - header size - bottom clip\n`;\nexport const CampaignSpring2023Wrapper = styled.div`\n\tmargin: 0 auto 50px;\n\tpadding-top: 85px;\n\tmin-height: 660px;\n`;\n\n// export const CampaignSpring2023Hero = styled.div`\n// \tbox-sizing: border-box;\n// \tmargin: 50px auto 0;\n// \tmax-width: min(90vw, ${breakpoints.lgx});\n// \ttext-align: center;\n// \tpadding: 0 10px;\n//\n// \t${media.lg`\n// \t\tpadding: 0 80px;\n// \t`};\n// `;\n\nexport const CampaignHeroContent = styled.div`\n\tfont-size: 2.4rem;\n\tline-height: 1.6;\n`;\n\nexport const CampaignSpring2023Container = styled.div`\n\tbackground: white;\n\tbox-shadow: ${boxShadow.hugeLight};\n\tmargin: 50px auto;\n\tmin-height: 600px;\n\tmax-width: min(90vw, ${breakpoints.lgx});\n\tposition: relative;\n\tpadding: 5em;\n\n\t@media (max-width: ${breakpoints.md}) {\n\t\tpadding: 2em 10px;\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\th3 {\n\t\ttext-align: center;\n\t}\n`;\n\nexport const SearchArea = styled.div`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: flex-start;\n\n\t> div {\n\t\tbutton {\n\t\t\talign-items: center;\n\t\t\tdisplay: inline-flex;\n\t\t\tfont-family: ${fontFamily.condensed};\n\t\t\tfont-size: 16px;\n\t\t\theight: 40px;\n\t\t\tjustify-content: center;\n\t\t\tpadding: 0 14px;\n\n\t\t\t+ button {\n\t\t\t\t${media.lg`\n\t\t\t\t\tmargin-left: -1px;\n\t\t\t\t`};\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const SearchAreaTop = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: wrap;\n\tgap: 20px;\n\tmargin-bottom: 20px;\n\twidth: 100%;\n\n\t${media.md`\n\t\tmargin-bottom: 40px;\n\t`};\n\n\t${media.lg`\n\t\tflex-direction: row;\n\t\tgap: 50px;\n\t`};\n`;\n\nexport const Section = styled.div`\n\tdisplay: inline-flex;\n\tflex-direction: column;\n\tflex-basis: calc((100% - 50px) / 2);\n\tmargin-bottom: 0;\n\tmin-width: calc((100% - 50px) / 2);\n\n\t${media.lg`\n\t\tmargin-bottom: 24px;\n\t\tpadding-right: 15px;\n\t`};\n\n\t.icon {\n\t\tcolor: ${color(\"greenBright\", 1)};\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\tdiv.housetype-dropdown {\n\t\talign-items: center;\n\t\tdisplay: inline-flex;\n\t\tjustify-content: flex-start;\n\n\t\tbutton {\n\t\t\tflex: 1 0 auto;\n\t\t\tjustify-content: flex-start;\n\t\t}\n\t\t.selections {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\tdiv.multi-button-select {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-start;\n\t\twidth: 100%;\n\n\t\tbutton {\n\t\t\tflex: 1 0 auto;\n\t\t}\n\t}\n\n\t.area-input {\n\t\twidth: 113px;\n\t}\n`;\n\nexport const Title = styled.p`\n\t${textStyles.PSmall};\n\tfont-weight: 500;\n\tmargin: 0 0 6px;\n\n\t&.spacer {\n\t\tdisplay: none;\n\n\t\t${media.lg`\n\t\t\tdisplay: block;\n\t\t`};\n\t}\n`;\n\nexport const PriceInputs = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\n\tinput {\n\t\twidth: 95px;\n\t\t${media.lg`\n\t\t\twidth: 113px;\n\t\t`};\n\t}\n`;\n\nexport const Continue = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 20px;\n\tjustify-content: center;\n\tmargin: 40px 10px;\n\twidth: 100%;\n\n\ta {\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\ttext-align: center;\n\n\t\timg {\n\t\t\tmargin-top: 40px;\n\t\t\tmax-width: min(30vw, 120px);\n\t\t\ttransform: scale(1);\n\t\t\ttransition: all 300ms linear;\n\t\t}\n\n\t\t&:hover img {\n\t\t\ttransform: scale(1.1);\n\t\t}\n\t}\n`;\n\nexport const CampaignSpring2023BottomWrapper = styled.div`\n\tmargin: 0 auto;\n\tmax-width: min(90vw, ${breakpoints.lgx});\n`;\n\nexport const Suggestions = styled.div`\n\talign-items: center;\n\tbackground: ${color(\"greenBright\", 5)};\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\tmargin: 0 auto 40px;\n\tmax-width: min(90vw, 900px);\n\tpadding: 10px 10px 20px 10px;\n\tposition: relative;\n\n\t${media.lg`\n\t\tpadding: 40px;\n\t`};\n`;\n\nexport const SuggestionSpacer = styled.div`\n\tdisplay: block;\n\theight: min(calc(30vh + 115px), min(485px, ${props => props.minHeight || \"426px\"}));\n\n\t${media.lg`\n\t\theight: min(485px, ${props => props.minHeight || \"426px\"});\n\t`};\n`;\n\nexport const SuggestionsTitle = styled.h2`\n\tmargin: 20px 0;\n\ttext-align: center;\n`;\n\nexport const SuggestedProperty = styled.div`\n\t@keyframes matchAppear {\n\t\tfrom {\n\t\t\tz-index: 1;\n\t\t\topacity: 0;\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t\tz-index: 3;\n\t\t}\n\t}\n\n\t@keyframes matchDiscard {\n\t\tfrom {\n\t\t\topacity: 1;\n\t\t\tz-index: 3;\n\t\t}\n\t\tto {\n\t\t\topacity: 0;\n\t\t\tz-index: 1;\n\t\t}\n\t}\n\n\talign-items: center;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: flex-start;\n\topacity: 0;\n\tpointer-events: none;\n\tposition: absolute;\n\ttop: 88px;\n\tz-index: 5;\n\n\t${media.lg`\n\t\ttop: 90px;\n\t`};\n\tleft: 0;\n\tright: 0;\n\n\t&.visible, &.seen {\n\t\t&:not(.first):not(.discarded) {\n\t\t\tanimation: matchAppear 1s linear 1s 1 forwards;\n\t\t}\n\t\t&.first:not(.discarded) {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\t&.visible {\n\t\tpointer-events: auto;\n\t\tz-index: 10;\n\t}\n\n\t&.discarded {\n\t\tanimation: matchDiscard 1s linear 0s 1 forwards;\n\t\timg {\n\t\t\tfilter: grayscale(1);\n\t\t}\n\t}\n`;\n\nexport const SuggestionImage = styled.div`\n\talign-items: center;\n\tbackground: ${color(\"white\")};\n\tbox-shadow: ${boxShadow.almostNormal};\n\tdisplay: flex;\n\tjustify-content: center;\n\tmargin-top: 5px;\n\tmax-height: 315px;\n\tmax-width: min(95%, 748px);\n\tmin-height: min(30vh, min(439px, ${props => props.minHeight || \"315px\"}));\n\tposition: relative;\n\tz-index: 3;\n\n\timg {\n\t\tborder: 15px solid ${color(\"white\")};\n\t\tbox-sizing: border-box;\n\t\tfilter: none;\n\t\theight: 100%;\n\t\tmax-height: 315px;\n\t\tobject-fit: cover;\n\t\twidth: 100%;\n\t}\n\n\t${media.lg`\n\t\tmax-height: 439px;\n\t\timg {\n\t\t\tmax-height: 439px;\n\t\t}\n\t`};\n`;\n\nexport const SuggestionTitle = styled.div`\n\tmargin: 20px 0;\n\n\tspan {\n\t\t&:not(.roomTypes) {\n\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t}\n\n\t\t&.roomTypes {\n\t\t\tcolor: ${color(\"grey\", 3)};\n\t\t\tmargin-left: 12px;\n\t\t}\n\t}\n\n\t@media (max-width: ${breakpoints.lg}) {\n\t\ttext-align: center;\n\t\tspan.roomTypes {\n\t\t\tdisplay: block;\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n`;\n\nexport const ButtonArea = styled.div`\n\talign-items: center;\n\tbottom: -40px;\n\tdisplay: flex;\n\tgap: 20px;\n\tjustify-content: center;\n\tleft: 0;\n\topacity: 1 !important;\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: 4;\n`;\n\nexport const ThumbUp = styled.button`\n\talign-items: center;\n\tbackground: ${color(\"greenBright\", 1)};\n\tborder: 3px solid ${color(\"greenBright\", 5)};\n\tborder-radius: 50%;\n\tcolor: ${color(\"white\")};\n\tcursor: pointer;\n\tdisplay: flex;\n\tfont-size: 40px;\n\theight: 80px;\n\tline-height: 40px;\n\tjustify-content: center;\n\tpointer-events: auto;\n\ttransform: scale(1);\n\ttransition: transform 150ms, box-shadow 150ms;\n\twidth: 80px;\n\n\t&:hover {\n\t\tbox-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);\n\t\ttransform: scale(1.1);\n\t}\n\n\tsvg {\n\t\tpointer-events: none !important;\n\t}\n`;\n\nexport const ThumbDown = styled(ThumbUp)`\n\tbackground: ${color(\"grey\", 4)};\n\tborder-color: ${color(\"grey\", 7)};\n`;\n\nexport const BelowButtonsText = styled.h2`\n\tmargin: 20px auto;\n\ttext-align: center;\n`;\n\nexport const NoMoreMatches = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: center;\n\tposition: absolute;\n\twidth: 100%;\n\tz-index: 3;\n`;\n\nexport const ZeroMatches = styled.div`\n\talign-items: center;\n\tbackground: ${color(\"greenBright\", 5)};\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding: 10px;\n\tposition: relative;\n\ttext-align: center;\n\twidth: 100%;\n\tz-index: 3;\n\n\t${media.lg`\n\t\tpadding: 60px 195px;\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\nexport const MatchedProperty = styled.div`\n\n\t@keyframes heart {\n\t\t0% {\n\t\t\tbackground-size: 0;\n\t\t}\n\t\t50% {\n\t\t\tbackground-size: 50%;\n\t\t}\n\t\t100% {\n\t\t\tbackground-size: 0;\n\t\t}\n\t}\n\n\tbackground: ${color(\"greenBright\", 4)};\n\tbox-sizing: border-box;\n\tmargin: 0 auto 40px;\n\tmax-width: min(90vw, 900px);\n\tpadding: 10px;\n\tposition: relative;\n\ttransition: background-color 600ms linear;\n\n\t&.visible {\n\t\tbackground: ${color(\"greenBright\", 5)};\n\n\t\t&::after {\n\t\t\tanimation: heart 1200ms linear 0ms 1 forwards;\n\t\t}\n\t}\n\n\t${media.lg`\n\t\tpadding: 20px 92px 60px;\n\t`};\n\n\t&::after {\n\t\tbackground: transparent url(/assets/images/svg/heart.svg) no-repeat center center;\n\t\tbackground-size: 0;\n\t\tcolor: ${color(\"coral\", 1)};\n\t\tcontent: \"\";\n\t\theight: 100%;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\twidth: 100%;\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\nexport const MatchTitle = styled.h3`\n\tmargin: 24px auto;\n\tmax-width: 465px;\n\ttext-align: center;\n`;\n","import React, { useRef, useState } from \"react\";\nimport { IDocument } from \"@redux/document\";\nimport { IApplicationState } from \"@redux\";\nimport { connect } from \"react-redux\";\nimport {\n\tBelowButtonsText,\n\tButtonArea,\n\tCampaignSpring2023Background,\n\tCampaignSpring2023BottomWrapper,\n\tCampaignSpring2023Container,\n\tCampaignSpring2023Wrapper,\n\tContinue,\n\tMatchedProperty,\n\tMatchTitle,\n\tNoMoreMatches,\n\tPriceInputs,\n\tSearchArea,\n\tSearchAreaTop,\n\tSection,\n\tSuggestedProperty,\n\tSuggestionImage,\n\tSuggestions,\n\tSuggestionSpacer,\n\tSuggestionsTitle,\n\tSuggestionTitle,\n\tThumbDown,\n\tThumbUp,\n\tTitle,\n\tZeroMatches,\n} from \"@pages/CampaignSpring2023/styles\";\nimport Text from \"wake-react-components/text\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport MultiButtonSelect from \"@components/Form/MultiButtonSelect\";\nimport { selectableHouseTypes, selectableRooms } from \"@utils/apartment-pricing/selections\";\nimport { selectableRooms as budgetSelectableRooms } from \"@utils/apartment-search/selections\";\nimport HousetypeDropdown from \"@components/HousetypeDropdown\";\nimport PriceAddressSearch from \"@components/Search/PriceAddressSearch\";\nimport TextInput from \"@components/Form/TextInput\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport axios from \"axios\";\nimport toast from \"cogo-toast\";\nimport { getAssetUrl, hasWindow, imageWithSize } from \"@utils\";\nimport { getImageUrl } from \"@utils/apartment\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport ApartmentBlock from \"@components/ApartmentBlock\";\nimport { Link } from \"react-router-dom\";\nimport Editor from \"wake-react-components/editor\";\nimport { faThumbsDown, faThumbsUp } from \"@fortawesome/pro-regular-svg-icons\";\nimport Background from \"wake-react-components/background\";\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\n\nconst CampaignSpring2023 = ({ doc }: IDocument) => {\n\n\tconst [ selectedAddresses, setSelectedAddresses ] = useState([]);\n\tconst [ selectedRooms, setSelectedRooms ] = useState([]);\n\tconst [ budgetRooms, setBudgetRooms ] = useState([]);\n\tconst [ selectedHouseTypes, setSelectedHouseTypes ] = useState([]);\n\tconst [ selectedArea, setSelectedArea ] = useState(null);\n\tconst [ minPrice, setMinPrice ] = useState(null);\n\tconst [ maxPrice, setMaxPrice ] = useState(null);\n\tconst [ isSearching, setSearching ] = useState(false);\n\tconst [ properties, setProperties ] = useState([]);\n\tconst [ hasSearched, setHasSearched ] = useState(false);\n\tconst [ propertyIndex, setPropertyIndex ] = useState(0);\n\tconst [ match, setMatch ] = useState(null as any);\n\tconst [ tallestImageHeight, setTallestImageHeight ] = useState(hasWindow ? screen.availHeight / 10 * 3 : 439);\n\tconst foobarLink = useRef(null);\n\tconst matchRef = useRef(null);\n\tconst suggestionsRef = useRef(null);\n\tconst zeroMatchesRef = useRef(null);\n\n\tconst handleSubmit = (e: any) => {\n\t\te.preventDefault();\n\t\tsetSearching(true);\n\t\tif (matchRef.current) {\n\t\t\tmatchRef.current.classList.remove(\"visible\");\n\t\t}\n\t\tsetMatch(null);\n\n\t\taxios.post(\"/api/km/KMSite/campaign2023\", {\n\t\t\tbudgetRooms,\n\t\t\tmaxPrice,\n\t\t\tminPrice,\n\t\t\tselectedAddresses,\n\t\t\tselectedArea,\n\t\t\tselectedHouseTypes,\n\t\t\tselectedRooms,\n\t\t}).then((response) => {\n\t\t\tsetSearching(false);\n\t\t\tlet tallest = 0;\n\t\t\tresponse.data.data.properties.map((property: any) => {\n\t\t\t\tif (!(property.hasOwnProperty(\"firstImage\"))) return;\n\n\t\t\t\tif (property.firstImage.height > tallest) {\n\t\t\t\t\ttallest = property.firstImage.height;\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetTallestImageHeight(tallest);\n\t\t\tsetProperties(response.data.data.properties);\n\t\t\tsetPropertyIndex(0);\n\t\t\tsetHasSearched(true);\n\t\t\tif (hasWindow) {\n\t\t\t\tif (suggestionsRef.current) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: suggestionsRef.current.offsetTop,\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 300);\n\t\t\t\t} else if (zeroMatchesRef.current) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: zeroMatchesRef.current.offsetTop,\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t}\n\t\t}).catch((error: any) => {\n\t\t\tsetSearching(false);\n\t\t\tconsole.log(\"Finding matches failed\", error);\n\t\t\tresetSearch();\n\t\t\ttoast.error(\n\t\t\t\t`Palvelussa on ruuhkaa. Ole hyvä ja yritä uudelleen.`,\n\t\t\t\t{\n\t\t\t\t\thideAfter: 0,\n\t\t\t\t\tonClick: (hide: any) => {\n\t\t\t\t\t\thide();\n\t\t\t\t\t},\n\t\t\t\t\tposition: \"bottom-right\",\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t};\n\n\tconst resetSearch = (scroll: boolean = false) => {\n\t\tsetHasSearched(false);\n\t\tsetProperties([]);\n\t\tsetPropertyIndex(0);\n\t\tsetMatch(null);\n\t\tif (matchRef.current) {\n\t\t\tmatchRef.current.classList.remove(\"visible\");\n\t\t}\n\n\t\tif (scroll && hasWindow) {\n\t\t\twindow.scrollTo({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst getSuggestionTitle = (property: any) => {\n\t\tif (!property) return \"\";\n\n\t\tconst area = property.livingArea\n\t\t\t? property.livingArea\n\t\t\t: property.totalArea\n\t\t\t\t? property.totalArea\n\t\t\t\t: property.sortArea\n\t\t\t\t\t? property.sortArea\n\t\t\t\t\t: null;\n\t\tconst totalAreaBlock = property.totalArea ?\n\t\t\t / {property.totalArea.toString().replace(\".\", \",\")} m² : \"\";\n\n\t\treturn <>\n\t\t\t{area.toString().replace(\".\", \",\")} m²\n\t\t\t{totalAreaBlock}\n\t\t\t{property.roomTypes}\n\t\t;\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*/}\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\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\t
\n\t\t\t\t\t\t\t\t\t<Text name=\"selectAddressesText\" defaultValue=\"Valitse alue\" />\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
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t<Text name=\"selectRoomsText\" defaultValue=\"Huoneluku\" />\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<Text name=\"selectAreaText\" defaultValue=\"Asuinpinta-ala\" />\n\t\t\t\t\t\t\t\t\t setSelectedArea(target.value)}\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\n\t\t\t\t\t\t

\n\n\t\t\t\t\t\t\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<Text name=\"selectRooms2\" defaultValue=\"Huoneluku\" />\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<Text name=\"selectBudgetText\" defaultValue=\"Hinta\" />\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t setMinPrice(target.value)}\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 setMaxPrice(target.value)}\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\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t 0 && (minPrice > 0 || maxPrice > 0)) ||\n\t\t\t\t\t\t\t\t\t(selectedAddresses && selectedAddresses.hasOwnProperty(\"id\") && selectedRooms.length > 0 &&\n\t\t\t\t\t\t\t\t\t\tselectedArea > 0 && selectedHouseTypes.length > 0)\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\ttext=\"Näytä\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tsubmitting={isSearching}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\n\t\t\t\t\t{isAdmin &&
\n\t\t\t\t\t\t

Ehdotusten otsikko

\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\t\n\t\t\t{!!(!match && properties.length > 0) && \n\t\t\t\t{doc.suggestionsTitle || \"Samalla rahalla saisit vaikka mitä! Kuten tämän:\"}\n\t\t\t\t\n\t\t\t\t{properties.map((property: any, index: number) => {\n\t\t\t\t\treturn \n\t\t\t\t\t\t{/*
{JSON.stringify(properties[ propertyIndex ], null, 4)}
*/}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{getSuggestionTitle(property)}\n\t\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\t\tcurrentTarget.onerror = null;\n\t\t\t\t\t\t\t\t\tcurrentTarget.src = getAssetUrl(\"/assets/images/km-2019/kohde/kohde_placeholder-img@2x.png\");\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tsrc={getAssetUrl(imageWithSize(getImageUrl(property.firstImage), \"h_800,c_scale\"))}\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{propertyIndex < properties.length && <>\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\tsetMatch(properties[ propertyIndex ]);\n\t\t\t\t\t\t\tif (hasWindow) {\n\t\t\t\t\t\t\t\twindow.setTimeout(() => {\n\t\t\t\t\t\t\t\t\tif (matchRef.current) {\n\t\t\t\t\t\t\t\t\t\tmatchRef.current.classList.add(\"visible\");\n\t\t\t\t\t\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\t\t\t\t\t\tbehavior: \"auto\",\n\t\t\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\t\t\ttop: matchRef.current.offsetTop - (screen.availHeight / 4),\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}, 300);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// takes hover state off on mobile\n\t\t\t\t\t\t\tif (foobarLink.current) {\n\t\t\t\t\t\t\t\tfoobarLink.current.click();\n\t\t\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\t\tsetPropertyIndex((current: number) => current + 1);\n\t\t\t\t\t\t\t// takes hover state off on mobile\n\t\t\t\t\t\t\tif (foobarLink.current) {\n\t\t\t\t\t\t\t\tfoobarLink.current.click();\n\t\t\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\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t{propertyIndex >= properties.length && \n\t\t\t\t\tKatso tästä kaikki myytävät kohteemme\n\t\t\t\t}\n\t\t\t
}\n\t\t\t{!!(isAdmin || match) && \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{!isAdmin && <>\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t{isAdmin && <>\n\t\t\t\t\t

Painikkeen teksti

\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
}\n\t\t\t{!!(isAdmin || (hasSearched && properties.length === 0)) && \n\t\t\t\t

Harmi, nyt ei löytynyt sopivaa kohdetta

Tekemällä ostotoimeksiannon löydämme sinulle myös ne kohteet, jotka eivät ole julkisesti myynnissä.

'\n\t\t\t\t\tname=\"noMatchesText\"\n\t\t\t\t/>\n\t\t\t
}\n\t\t\t{!!((hasSearched && properties.length === 0) || (match || (propertyIndex > 0 && propertyIndex >= properties.length))) && \n\t\t\t\t resetSearch(true)}\n\t\t\t\t\ttext={doc.newSearchButtonText || \"Tee uusi haku\"}\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t/>\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t}\n\t\t\t {}} />\n\t\t
\n\t;\n\n};\n\nconst mapStateToProps = (state: IApplicationState) => ({\n\tdoc: state.document,\n});\n\nexport default connect(mapStateToProps)(CampaignSpring2023);\n"],"sourceRoot":""}