{"version":3,"sources":["../node_modules/wake-react-components/repeater.js","../node_modules/wake-react-components/lib/repeater/index.js","components/ContentBlocks/TwoTextBoxes/styles.js","components/ContentBlocks/TwoTextBoxes/index.tsx","components/ContentBlocks/TextBoxes/styles.js","components/ContentBlocks/TextBoxes/index.tsx","components/ContentBlocks/Video/styles.js","components/ContentBlocks/Video/index.tsx","components/Agency/Blocks/Stats/styles.js","pages/AgencyPage/styles.js","components/Agency/Blocks/Agents/styles.js","components/Agency/Blocks/Agents/index.tsx","components/Agency/Blocks/ContactInfoMap/styles.js","components/Agency/AddressInfo.tsx","components/Agency/PhoneInfo.tsx","components/Agency/LegalInfo.tsx","components/Agency/Blocks/ContactInfoMap/index.tsx","components/Agency/Blocks/Stats/index.tsx","utils/property-carousel.tsx","components/DynamicPropertyCarousel/styles.js","components/DynamicPropertyCarousel/index.tsx","components/Agency/AgencyProperties/styles.js","components/Agency/AgencyProperties/index.tsx","components/Agency/Blocks/Properties/styles.js","components/Agency/Blocks/Properties/index.tsx","components/Agency/Blocks/OwnerGreetings/styles.js","components/Agency/AgencySomeLinks/styles.js","components/Agency/AgencySomeLinks/index.tsx","components/Agency/Blocks/OwnerGreetings/index.tsx","components/Agency/Blocks/AgencyArticles/index.tsx","components/Agency/Blocks/AgencyContactForm/styles.js","components/Agency/Blocks/AgencyContactForm/index.tsx","components/Agency/Blocks/OtherAgencies/styles.js","components/Agency/Blocks/OtherAgencies/card.tsx","components/Agency/Blocks/OtherAgencies/index.tsx","components/Agency/AgencyContactBar/index.tsx","pages/AgencyPage/index.tsx"],"names":["Object","defineProperty","exports","value","default","e","_repeater","__esModule","_react","_interopRequireWildcard","_render","_getRequireWildcardCache","WeakMap","r","t","_typeof","has","get","n","__proto__","a","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","o","Symbol","iterator","constructor","prototype","FrontComponent","_ref","children","className","doc","limit","name","tag","Tag","tagName","references","Array","isArray","length","slice","createElement","Fragment","map","item","index","$$index","ItemContext","Provider","key","concat","ItemChildren","keyPrefix","Repeater","props","displayName","defaultProps","BoxWrapper","styled","div","withConfig","componentId","media","lg","_templateObject","_taggedTemplateLiteral","Box","color","md","_templateObject2","_templateObject3","grid","gutterSmall","lgx","_templateObject4","gutter","BoxTitle","isAdmin","css","BoxText","textStyles","AInline","TwoTextBoxes","arguments","undefined","elementID","restProps","__rest","React","Wrapper","Container","Background","onClick","stopPropagation","Text","placeholder","multiline","Editor","settings","thumb","src","getAssetUrl","alt","TextBoxesTitle","H2","TextBoxesWrapper","invert","TextBox","_templateObject5","TextBoxIcon","TextBoxTitle","TextBoxContent","PSmall","buttons","textLinkPrimary","calculateTallestTitle","items","tallest","height","getBoundingClientRect","breakpoints","TextBoxes","hasGradientBg","textBoxesTitle","textBoxes","id","getID","breakpoint","ref","useRef","setTallest","useState","makeSameHeight","elems","window","innerWidth","onResize","debounce","current","querySelectorAll","useEffect","addEventListener","removeEventListener","grey","textBoxIcon","style","Input","type","VideoContainer","Video","video","YoutubeEmbed","videoID","StatsContainer","StatsTitle","h2","StatsWrapper","Stat","numberAnimation","keyframes","StatNumber","step","Number","parseInt","StatLabel","StatDescription","AgencyHero","sm","AgencyHeroContent","StickyContainer","AgencyName","MicroTextCaps","ContactButton","TextButton","_templateObject6","H3Condensed","AgentsContainer","smd","AgentsWrapper","xsm","AgentsCarousel","Agents","mainDoc","useSelector","state","document","page","agents","isEmpty","valittajat","sortedAgents","handleClick","clickTarget","hasWindow","location","href","canonicalPath","defaultValue","agent","AgentListItem","agentImageSize","halfBody","Swiper","swiperOptions","autoplay","delay","freeMode","grabCursor","loop","navigation","nextEl","prevEl","pagination","clickable","el","slidesPerGroup","slidesPerView","spaceBetween","Slide","lazy","ContactInfoMapWrapper","ContactInfo","ContactInfoBox","Legal","MicroText","AgencyMap","AddressInfo","title","titleTag","address","city","email","marketingName","postcode","itemProp","itemScope","itemType","Email","to","split","PhoneInfo","LegalInfo","businessId","companyName","Link","ContactInfoMap","coordinates","openingHours","phone","showPriceList","telPhone","CtaButton","preventDefault","Phone","single","withIcon","latitude","longitude","content","GoogleMap","addBounds","initialCenter","lat","lng","markers","zoom","Stats","soldCount","propertyCount","showPercentage","visibleCount","filter","onScreen","useOnScreen","swiperOptionsBase","swiperOptionsOne","assign","swiperOptionsTwo","450","580","860","1920","swiperOptionsThree","1130","swiperOptionsFourOrMore","forcedSlidesPerGroup","1300","CarouselContainer","LoadMoreBlock","button","fontFamily","base","count","getSwiperOptions","mousewheel","DynamicPropertyCarousel","forwardRef","agencyKey","small","properties","setProperties","totalCount","setTotalCount","skip","setSkip","allLoaded","setAllLoaded","isLoading","setLoading","loc","useLocation","isRendering","baseParams","agencyArea","excludeAgency","openhouses","openHouses","sort","sortOrder","loadProperties","skipAmount","__awaiter","params","data","searchService","fetchProperties","console","log","loadMore","newSkip","loadedProperties","results","matches","setTotalProperties","useLayoutEffect","swiper","update","wake","loading","onNoProperties","pathname","CarouselPlaceholder","reachEnd","onReachEnd","slideChange","onSlideChange","property","ApartmentBlock","FaIcon","icon","spin","CarouselTabsWrapper","CarouselTabs","CarouselHeader","CarouselTitle","h3","H3","CarouselButtons","AgencyProperties","agency","firstRef","secondRef","thirdRef","currentRef","setCurrentRef","contentfulTabs","setContentfulTabs","totalPropertiesSecond","setTotalPropertiesSecond","totalPropertiesThird","setTotalPropertiesThird","slideChanged","setSlideChanged","getSwiper","updateSwiper","setTimeout","updateSize","updateSlides","hideTab","ts","isVisible","indexOf","currentValue","TabSwitcher","renderHidden","Tab","hidden","aria-label","slideToPrev","slidePrev","slideToNext","slideNext","TabPanel","whenActive","PropertyBlockContainer","Properties","OwnerGreetingsContainer","OwnerGreetingsWrapper","OwnerGreetingsText","OwnerName","h4","OwnerBottom","OwnerTitle","p","OwnerImage","AgencySomeLinksWrapper","SomeLinks","AgencySomeLinks","socialAccounts","socialAccount","someIcon","SomeButton","url","rel","target","OwnerGreetings","agencyAgent","hasMultipleImages","activeImageIndex","setActiveImageIndex","intervalId","setInterval","previousIndex","clearInterval","defaultGreetings","news","description","greetingsText","firstName","lastName","agencyAgentItem","AgentImage","AgencyArticles","agencyArticles","Articles","ArticlesTitle","ArticleCards","articles","MainFormWrapper","FormHeader","condensed","AgencyContactForm","as","ScrollTarget","AContactForm","OtherAgenciesContainer","OtherAgenciesTitle","OtherAgenciesWrapper","AgencyCard","flipCard","flipBack","ImageOrMap","NameAndAddress","OtherAgencyCard","imageName","imagePath","urlParts","hovered","setHovered","hasMap","bubbles","onMouseLeave","onMouseEnter","Image","fallbackSrc","OtherAgencies","otherAgencies","otherAgency","AgencyContactBar","inHeader","scrollToContact","connect","supportedBlocks","MediaCarousel","TextContent","historyTracker","trackHistory","JSON","stringify","visitedAt","Date","getTime","dataLayerPush","documentID","hasHeroBackground","agencyHeroBackground","formElements","getElementsByClassName","scrollTo","behavior","left","top","parentElement","offsetTop","sizeInfo","heroTitleColor","marginBottom","marginTop","StickyContactBar","Blocklist","blocks"],"mappings":"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","file":"assets/js/pages-AgencyPage.chunk.js?cb=7a410b61713915b03887","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _repeater = _interopRequireDefault(require(\"./lib/repeater\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar _default = exports.default = _repeater.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _render = _interopRequireWildcard(require(\"../utils/render\"));\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), 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); }\nvar FrontComponent = function FrontComponent(_ref) {\n var children = _ref.children,\n className = _ref.className,\n doc = _ref.doc,\n limit = _ref.limit,\n name = _ref.name,\n tag = _ref.tag,\n Tag = _ref.tagName;\n var value = doc[name];\n if (!value) {\n return null;\n }\n // Support admin data, where references are not automatically serialized. \"tag\" prop is mainly for internal use only.\n if (tag === \"Reference\" && value.references) {\n value = value.references;\n }\n if (!Array.isArray(value)) {\n return null;\n }\n if (limit && value.length > limit) {\n value = value.slice(0, limit);\n }\n return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, value.map(function (item, index) {\n if (!item || _typeof(item) !== \"object\") {\n return null;\n }\n item.$$index = index;\n return /*#__PURE__*/_react.default.createElement(_render.ItemContext.Provider, {\n value: item,\n key: \"r-\".concat(name, \"-\").concat(index)\n }, /*#__PURE__*/_react.default.createElement(Tag, {\n className: className\n }, /*#__PURE__*/_react.default.createElement(_render.ItemChildren, {\n keyPrefix: \"repeater\",\n item: item,\n children: children\n })));\n }));\n};\nvar Repeater = function Repeater(props) {\n return (0, _render.default)(props.tag || \"Repeater\", props, FrontComponent);\n};\nRepeater.displayName = \"Repeater\";\nRepeater.defaultProps = {\n className: \"\",\n tagName: \"div\"\n};\nvar _default = exports.default = Repeater;","import styled, { css } from \"styled-components\";\nimport { color, media, textStyles, grid } from \"@utils/style-utils\";\n\nexport const BoxWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: auto;\n\tmax-width: 1130px;\n\n\t${media.lg`\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t`}\n`;\n\nexport const Box = styled.div`\n\tbackground: ${color(\"grey\", 7)};\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 30px;\n\tmax-width: 484px;\n\tpadding: 40px 30px 50px;\n\twidth: 100%;\n\n\t${media.md`\n\t\tpadding: 48px 56px 56px;\n\t`}\n\n\t${media.lg`\n\t\tflex-basis: calc((100% - ${grid.gutterSmall}px) / 2);\n\t\tmargin: 0 0 20px;\n\t\tmax-width: 100%;\n\t`}\n\n\t${media.lgx`\n\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\tpadding: 48px 64px 75px;\n\t`}\n`;\n\nexport const BoxTitle = styled.div`\n\th3 {\n\t\tbackground-position: left 22px;\n\t\tbackground-size: 46px;\n\t\tfont-size: 22px;\n\t\tfont-weight: 500;\n\t\tline-height: 1.25;\n\t\tmargin: 0 0 20px;\n\t\tpadding: 20px 0;\n\t\ttext-align: center;\n\n\t\t> span {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\th3[style*=\"background-image\"] {\n\t\tbackground-position: 50% 0;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 40px;\n\t\tpadding: 64px 0 20px;\n\t}\n\n\t${props =>\n\t\tprops.isAdmin &&\n\t\tcss`\n\t\t\th3 > span {\n\t\t\t\tcursor: text;\n\t\t\t}\n\t\t`}\n`;\n\nexport const BoxText = styled.div`\n\ttext-align: center;\n\n\ta {\n\t\t${textStyles.AInline}\n\t}\n`;\n","import React from \"react\";\nimport { Wrapper, Container } from \"@components/Grid\";\n\nimport Text from \"wake-react-components/text\";\nimport Editor from \"wake-react-components/editor\";\nimport Background from \"wake-react-components/background\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport { getAssetUrl } from \"@utils\";\n\nimport { BoxWrapper, Box, BoxTitle, BoxText } from \"./styles\";\n\nconst TwoTextBoxes = (props: any = {}) => {\n\tconst {\n\t\titem: { elementID },\n\t\t...restProps\n\t} = props;\n\n\tif (elementID) {\n\t\trestProps[\"id\"] = elementID;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{[1, 2].map(i => (\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 e.stopPropagation()}>\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\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\nTwoTextBoxes.settings = () => (\n\t
\n\t\t\n\t\t\tElementin ID (esim ankkuriksi) \n\t\t\n\t\t\n\t
\n);\n\nTwoTextBoxes.thumb = () => (\n\t
\n\t\t\"Vaakalaatikot\n\t\t

Vaakalaatikot x 2

\n\t
\n);\n\nexport default TwoTextBoxes;\n","import styled, { css } from \"styled-components\";\nimport { textStyles, media, color, grid, buttons } from \"@utils/style-utils\";\n\nexport const TextBoxesTitle = styled.div`\n\tpadding: 40px 0;\n\ttext-align: center;\n\n\t${media.md`\n\t\tpadding: 53px 0;\n\t`}\n\n\th2 {\n\t\t${textStyles.H2}\n\t\tmargin: 0;\n\t}\n`;\n\nexport const TextBoxesWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\tpadding-bottom: 40px;\n\n\t${media.md`\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tpadding-bottom: 53px;\n\t`}\n\n\t${props =>\n\t\tprops.invert &&\n\t\tcss`\n\t\t\t${TextBox} {\n\t\t\t\tbackground: ${color(\"white\")};\n\t\t\t\tborder: 1px solid ${color(\"grey\", 6)};\n\t\t\t}\n\t\t`}\n`;\n\nexport const TextBox = styled.div`\n\tbackground: ${color(\"grey\", 7)};\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n margin-bottom: ${grid.gutterSmall}px;\n\tpadding: 40px 20px;\n\tposition: relative;\n\ttext-align: center;\n\n\t[ng-app=\"editor\"] & {\n\t\tpadding-top: 35px;\n\n\t\t.r-toolbar {\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\t${media.md`\n\t\t&:first-child:nth-last-child(1) {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t&:first-child:nth-last-child(2),\n\t\t&:first-child:nth-last-child(2) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\t}\n\n\t\t&:first-child:nth-last-child(3),\n\t\t&:first-child:nth-last-child(3) ~ & {\n\t\t\tflex-basis: 100%;\n\t\t\tmargin-bottom: ${grid.gutter}px;\n\t\t}\n\n\t\t&:first-child:nth-last-child(4),\n\t\t&:first-child:nth-last-child(4) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\t}\n\t`}\n\n\t${media.lg`\n\t\tpadding: 40px 20px;\n\n\t\t&:first-child:nth-last-child(1) {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t&:first-child:nth-last-child(2),\n\t\t&:first-child:nth-last-child(2) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\t}\n\n\t\t&:first-child:nth-last-child(3),\n\t\t&:first-child:nth-last-child(3) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutterSmall * 2}px) / 3);\n\t\t}\n\n\t\t&:first-child:nth-last-child(4),\n\t\t&:first-child:nth-last-child(4) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t\t}\n\t`}\n\n\t${media.lgx`\n\t\t&:first-child:nth-last-child(4),\n\t\t&:first-child:nth-last-child(4) ~ & {\n\t\t\tflex-basis: calc((100% - ${grid.gutter * 3}px) / 4);\n\t\t}\n\t`}\n`;\n\nexport const TextBoxIcon = styled.div`\n\tbackground-position: center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 50px;\n\tdisplay: inline-block;\n\theight: 60px;\n\tmargin: 0 auto 20px;\n\twidth: 60px;\n\n\t/* &:empty {\n\t\tdisplay: none;\n\t} */\n`;\n\nexport const TextBoxTitle = styled.div`\n\t/* flex-grow: 1; */\n\n\th5 {\n\t\tfont-size: 22px;\n\t\tfont-weight: 500;\n\t\tline-height: 1.25;\n\t\tmargin: 0;\n\t}\n`;\n\nexport const TextBoxContent = styled.div`\n\t${textStyles.PSmall}\n\n\ta:not(.cta) {\n\t\t${textStyles.AInline}\n\t}\n\n\t> div {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tflex-grow: 1;\n\t}\n\n\ta.cta {\n\t\t${buttons.textLinkPrimary}\n\t}\n`;\n","import React, { Fragment, useState, useEffect, useRef } from \"react\";\nimport { Wrapper, Container } from \"@components/Grid\";\nimport Input from \"wake-react-components/input\";\nimport Text from \"wake-react-components/text\";\nimport Editor from \"wake-react-components/editor\";\nimport Repeater from \"wake-react-components/repeater\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport Background from \"wake-react-components/background\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport debounce from \"lodash-es/debounce\";\nimport { getAssetUrl } from \"@utils\";\n\nimport { TextBoxesTitle, TextBoxesWrapper, TextBox, TextBoxIcon, TextBoxTitle, TextBoxContent } from \"./styles\";\n\nfunction calculateTallestTitle(items: HTMLDivElement[]) {\n\tlet tallest = 0;\n\n\tfor (const item of items) {\n\t\tconst { height } = item.children[0].getBoundingClientRect();\n\t\ttallest = height > tallest ? height : tallest;\n\t}\n\n\treturn tallest;\n}\n\nconst breakpoints = [9999, 768, 991, 1120];\n\nconst TextBoxes = (props: any = {}) => {\n\tconst {\n\t\titem: { hasGradientBg, textBoxesTitle, textBoxes },\n\t\t...restProps\n\t} = props;\n\n\tconst id = getID(props);\n\n\tconst breakpoint = breakpoints[(textBoxes || []).length - 1] || 9999;\n\n\tconst ref = useRef(null);\n\tconst [tallest, setTallest] = useState(null);\n\n\tconst makeSameHeight = (elems: HTMLDivElement[]) => {\n\t\tif (isAdmin) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (elems && elems.length > 0) {\n\t\t\tif (window.innerWidth > breakpoint) {\n\t\t\t\tsetTallest(calculateTallestTitle(elems));\n\t\t\t} else {\n\t\t\t\tsetTallest(null);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst onResize = debounce(() => {\n\t\tif (ref && ref.current) {\n\t\t\tconst elems = [...ref.current.querySelectorAll(\".textbox-title\")];\n\t\t\tmakeSameHeight(elems);\n\t\t}\n\t}, 100);\n\n\tuseEffect(() => {\n\t\twindow.addEventListener(\"resize\", onResize);\n\t\tif (ref && ref.current) {\n\t\t\tconst elems = [...ref.current.querySelectorAll(\".textbox-title\")];\n\t\t\tmakeSameHeight(elems);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"resize\", onResize);\n\t\t};\n\t}, [ref]);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{(isAdmin || (!isAdmin && textBoxesTitle)) && (\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\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{({ item }) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{(isAdmin || (!isAdmin && item.textBoxIcon)) && (\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\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\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\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\nTextBoxes.thumb = () => (\n\t
\n\t\t\"Pystylaatikot\"\n\t\t

Pystylaatikot

\n\t
\n);\n\nTextBoxes.settings = () => (\n\t
\n\t\t\n\t\t
\n\t\t\n\t\t\tElementin ID (esim ankkuriksi) \n\t\t\n\t\t\n\t
\n);\n\nexport default TextBoxes;\n","import styled, { css } from \"styled-components\";\nimport { media, color } from \"@utils/style-utils\";\n\nexport const VideoContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 1em;\n\tmargin: 0 auto 50px;\n\tmax-width: min(896px, 95vw);\n\n\tlabel span {\n\t\tfont-weight: normal;\n\t}\n\n\t> div {\n\t\tdisplay: flex;\n\t\tflex-basis: 100%;\n\t\tjustify-content: center;\n\n\t\t.yt-embed {\n\t\t\tbackground-color: ${color(\"blue\", 4)};\n\t\t}\n\t}\n\n\t${media.md`\n\t\tmargin: 0 auto 90px;\n\t`};\n`;\n","import React from \"react\";\nimport { Container, Wrapper } from \"@components/Grid\";\nimport Text from \"wake-react-components/text\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport YoutubeEmbed from \"@components/Embeds/Youtube\";\nimport { getAssetUrl } from \"@utils\";\nimport { VideoContainer } from \"./styles\";\n\nconst Video = (props: any = {}) => {\n\tconst {\n\t\titem: { video },\n\t\t...restProps\n\t} = props;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isAdmin && }\n\t\t\t\t\t{video && }\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nVideo.thumb = () => (\n\t
\n\t\t\"Video\"\n\t\t

Video

\n\t
\n);\n\nVideo.settings = () => (\n\t
\n\t\t\n\t\t\tElementin ID (esim. ankkuriksi) \n\t\t\n\t\t\n\t
\n);\n\nexport default Video;\n","import styled, { keyframes } from \"styled-components\";\nimport { color, media } from \"@utils/style-utils\";\n\nexport const StatsContainer = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\n\t&.has-data {\n\t\tmargin-bottom: 9em;\n\t}\n`;\n\nexport const StatsTitle = styled.h2`\n`;\n\n\nexport const StatsWrapper = styled.div`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 3em;\n\tjustify-content: space-evenly;\n\n\t${media.md`\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t`};\n`;\n\nexport const Stat = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tgap: 10px;\n\tflex-direction: column;\n\tjustify-content: center;\n`;\n\nconst numberAnimation = keyframes`\n\t0% {\n\t\ttransform: translateY(-5%) scale(0);\n\t}\n\t50% {\n\t\ttransform: translateY(0) scale(2);\n\t}\n\t75% {\n\t\ttransform: translateY(-5%) scale(0.75);\n\t}\n\t100% {\n\t\ttransform: translateY(0) scale(1);\n\t}\n`;\n\nexport const StatNumber = styled.div`\n\tcolor: ${color(\"greenBright\", 1)};\n\tfont-size: 8rem;\n\ttransform: translateY(100%) scale(0);\n\n\t&.number-visible {\n\t\tanimation: ${numberAnimation} 1666ms ease-in-out forwards;\n\t}\n\t&.number-delay {\n\t\tanimation-delay: 666ms;\n\t}\n\t&.number-delay-2 {\n\t\tanimation-delay: 1332ms;\n\t}\n\n\t${props => props.step\n\t\t? `\n\t\t\t&.number-visible {\n\t\t\t\tanimation-delay : calc(${Number.parseInt(props.step)} * 400ms);\n\t\t\t}\n\t\t`\n\t\t: null\n\t};\n`;\n\nexport const StatLabel = styled.div`\n\tcolor: ${color(\"grey\", 1)};\n\tfont-size: 1.7rem;\n`;\n\nexport const StatDescription = styled.div`\n\tcolor: ${color(\"greenDark\", 2)};\n\tfont-size: 1.4rem;\n\tmargin-top: 0;\n`;\n","import styled from \"styled-components\";\nimport { color, media, textStyles } from \"@utils/style-utils\";\nimport { Container } from \"@components/Grid\";\nimport TextButton from \"@components/Buttons/TextButton\";\n\nexport const AgencyHero = styled.div`\n\tbackground: ${color(\"beige\", 4)};\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-size: auto 100%;\n\tmargin-bottom: 36px;\n\tmin-height: 300px;\n\tpadding: 80px 0 20px;\n\n\t${media.sm`\n\t\tmargin-bottom: 60px;\n\t\tpadding: 110px 0 40px;\n\t`};\n\t${media.md`\n\t\tmargin-bottom: 120px;\n\t\tpadding: 130px 0 0;\n\t`};\n\t${media.lg`\n\t\tmargin-bottom: 110px;\n\t\tmin-height: 540px;\n\t\tpadding: 194px 0 147px;\n\t`};\n\n\t&.fallback-background {\n\t\tbackground-position: bottom right;\n\t\tbackground-size: 50vw auto;\n\t}\n`;\n\nexport const AgencyHeroContent = styled.div`\n\tposition: relative;\n\twidth: 100%;\n\n\th1 {\n\t\tmargin: 0 0 20px;\n\n\t\t&.black-shadow {\n\t\t\ttext-shadow: 3px 3px 3px ${color(\"white\")};\n\t\t}\n\n\t\t&.white, &.white-shadow {\n\t\t\tcolor: ${color(\"white\")};\n\n\t\t\t&.white-shadow {\n\t\t\t\ttext-shadow: 3px 3px 3px ${color(\"grey\", 1)};\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const StickyContainer = styled(Container)`\n\talign-items: center;\n\tdisplay: flex;\n\tgap: 1em;\n\tjustify-content: space-between;\n\tmin-height: 59px;\n\tpadding: 0;\n\n\t&.static {\n\t\tmargin-top: 65px;\n\t\tpadding-bottom: 1em;\n\t\tpadding-top: 1em;\n\t}\n\n\t.spacer {\n\t\tdisplay: none;\n\t\tflex: 1 1 auto;\n\t}\n\n\t.phone-button {\n\t\tmin-height: 38px;\n\t\tpadding: 4px 16px;\n\t\twhite-space: nowrap;\n\n\t\ta {\n\t\t\talign-items: center;\n\t\t\tcolor: ${color(\"white\")};\n\t\t\tdisplay: flex;\n\t\t\tgap: 1em;\n\t\t\tjustify-content: flex-start;\n\t\t}\n\n\t\t.icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t${media.md`\n\t\tmin-height: 77px;\n\n\t\t.spacer {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t\t.phone-button {\n\t\t\tmin-height: 64px;\n\t\t\tpadding: 16px 16px 15px;\n\n\t\t\t.icon {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\t`};\n`;\n\nexport const AgencyName = styled.div`\n\t${textStyles.MicroTextCaps};\n\tcolor: ${color(\"gray\", 2)};\n\tdisplay: none;\n\tfont-size: 1.7rem;\n\n\t${media.md`\n\t\tdisplay: block;\n\t`};\n`;\n\nexport const ContactButton = styled(TextButton)`\n\tborder: 1px solid ${color(\"greenBright\", 1)};\n\tborder-radius: 4px;\n\tmin-height: 38px;\n\tpadding: 4px 16px;\n\twhite-space: nowrap;\n\n\t&:after {\n\t\tdisplay: none;\n\t}\n\n\t${media.md`\n\t\tmin-height: 64px;\n\t\tpadding: 16px 16px 15px;\n\n\t\t&:after {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t`};\n\n`;\n\nexport const InfoBox = styled.div`\n\tborder: 1px solid ${color(\"blue\", 2)};\n\tborder-radius: 4px;\n\tmargin-bottom: 16px;\n\tpadding: 24px;\n\n\th4 {\n\t\t${textStyles.MicroTextCaps};\n\t\tfont-weight: bold;\n\t\tmargin: 0 0 15px;\n\t}\n\n\tp {\n\t\t${textStyles.PSmall};\n\t\tcolor: ${color(\"grey\", 2)};\n\t\tmargin: 0 0 15px;\n\n\t\t&:last-of-type {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\ta {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t\ttext-decoration: none;\n\t\t\ttransition: color 150ms;\n\n\t\t\t&:not(:first-of-type) {\n\t\t\t\t&::before {\n\t\t\t\t\tcontent: \"\\\\A\";\n\t\t\t\t\twhite-space: pre;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[itemprop=\"email\"] {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t\t}\n\t\t}\n\t}\n\n\t&.telephones {\n\t\ta {\n\t\t\t${textStyles.H3Condensed};\n\t\t\tmargin-bottom: 5px;\n\n\t\t\tspan {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tmargin-bottom: 5px;\n\t\t\t}\n\t\t}\n\n\t\tp:first-of-type {\n\t\t\tpadding-left: 25px;\n\t\t\tposition: relative;\n\t\t}\n\n\t\t.icon {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t\tfont-size: 16px;\n\t\t\tleft: 0;\n\t\t\tposition: absolute;\n\t\t\ttop: 2px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 16px;\n\t\t\t}\n\t\t}\n\t}\n`;\n","import styled from \"styled-components\";\nimport { color, media } from \"@utils/style-utils\";\nimport { Container } from \"@components/Grid\";\n\nexport const AgentsContainer = styled(Container)`\n\tmargin: 0 2em 2em 2em;\n\tpadding: 0;\n\n\th3 {\n\t\ttext-align: center;\n\t}\n\n\t${media.lg`\n\t\tmargin: 0 0 2em 0;\n\t`};\n\n\t.agent-list-item {\n\t\tbackground-color: ${color(\"white\")};\n\t\tflex-basis: 100%;\n\t\tmax-width: 312px;\n\t\tmin-width: 312px;\n\n\t\t// (100% - (number of boxes * padding+border around each box) - gap) / number of boxes\n\t\t${media.sm`\n\t\t\tflex-basis: calc((100% - (2 * 38px) - 3em) / 2);\n\t\t`};\n\t\t${media.smd`\n\t\t\tflex-basis: calc((100% - (3 * 38px) - 6em) / 3);\n\t\t`};\n\t\t${media.md`\n\t\t\tflex-basis: calc((100% - (4 * 38px) - 9em) / 4);\n\t\t`};\n\n\t\t.agent-recommendation {\n\t\t\tfont-size: 18px;\n\t\t\tline-height: 22px;\n\n\t\t\tspan {\n\t\t\t\tfont-size: 22px;\n\t\t\t\tsvg {\n\t\t\t\t\tmax-width: 22px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.agent-header {\n\t\t\talign-items: flex-start;\n\t\t\tborder-bottom: none;\n\t\t\tflex-direction: column;\n\t\t\tmargin-top: 1em;\n\t\t}\n\n\t\t.agent-portrait {\n\t\t\talign-items: stretch;\n\t\t\tdisplay: flex;\n\t\t\theight: auto;\n\t\t\tjustify-content: center;\n\t\t\tmargin-bottom: 1em;\n\t\t\tmargin-right: 0;\n\t\t\tmax-height: 282px;\n\t\t\tmax-width: 286px;\n\t\t\twidth: 100%;\n\n\t\t\t&::before {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\timg {\n\t\t\t\tbottom: unset;\n\t\t\t\theight: unset;\n\t\t\t\tleft: unset;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tposition: relative;\n\t\t\t\tright: unset;\n\t\t\t\ttop: unset;\n\t\t\t\twidth: unset;\n\n\t\t\t\t&[src*=\"backup\"] {\n\t\t\t\t\theight: unset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.agent-title:not(.has-extra) {\n\t\t\tmin-height: 55px; // to keep the height consistent\n\t\t}\n\n\t\t.agent-read-more {\n\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t}\n\t}\n`;\nexport const AgentsWrapper = styled.div`\n\talign-items: flex-start;\n\tdisplay: none;\n\tflex-wrap: wrap;\n\tgap: 3em;\n\tjustify-content: flex-start;\n\tmargin-bottom: 6em;\n\tposition: relative;\n\n\t${media.xsm`\n\t\tdisplay: flex;\n\t`};\n\n\t&:before {\n\t\tbackground-color: ${color(\"beige\", 4)};\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\theight: calc(100% + 3em);\n\t\tleft: -25vw;\n\t\tposition: absolute;\n\t\ttop: 3em;\n\t\twidth: 200vw;\n\t}\n`;\n\nexport const AgentsCarousel = styled.div`\n\tdisplay: block;\n\n\t${media.xsm`\n\t\tdisplay: none;\n\t`};\n\n\t.swiper-slide {\n\t\theight: auto;\n\n\t\t> div {\n\t\t\theight: 100%;\n\t\t}\n\n\t\t.agent-list-item {\n\t\t\tflex-basis: 100%;\n\t\t}\n\t}\n\n\t.swiper-button-next,\n\t.swiper-button-prev {\n\t\tdisplay: none !important;\n\t}\n\n\t.swiper-pagination {\n\t\tpadding: 30px 0 15px;\n\t\tposition: relative;\n\n\t\t.swiper-pagination-bullet {\n\t\t\tbackground: ${color(\"white\")};\n\t\t\tborder: 1px solid ${color(\"greenBright\", 1)};\n\t\t\tcursor: pointer;\n\t\t\theight: 8px;\n\t\t\topacity: 1;\n\t\t\ttransition: background-color 300ms;\n\t\t\twidth: 8px;\n\n\t\t\t&.swiper-pagination-bullet-active {\n\t\t\t\tbackground: ${color(\"greenBright\", 1)};\n\t\t\t}\n\t\t}\n\t}\n`;\n","import React from \"react\";\nimport { getAssetUrl, hasWindow } from \"@utils\";\nimport Text from \"wake-react-components/text\";\nimport { useSelector } from \"react-redux\";\nimport { Wrapper } from \"@components/Grid\";\nimport { AgentsCarousel, AgentsContainer, AgentsWrapper } from \"./styles\";\nimport AgentListItem from \"@components/AgentList/AgentListItem\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport { Slide, Swiper } from \"react-dynamic-swiper\";\nimport isEmpty from \"lodash-es/isEmpty\";\n\nconst Agents = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { page } = mainDoc;\n\tconst agents = page && !isEmpty(page.valittajat) ? page.valittajat : (mainDoc.sortedAgents || []);\n\n\tconst handleClick = (clickTarget: any) => {\n\t\tif (isAdmin) {\n\t\t\treturn;\n\t\t}\n\t\tif (hasWindow) {\n\t\t\tlocation.href = clickTarget.canonicalPath;\n\t\t}\n\t};\n\n\tif ((!Array.isArray(agents) || agents.length === 0) && !isAdmin) {\n\t\treturn null;\n\t}\n\n\tconst id = getID(item);\n\n\tconst swiperOptions: any = {\n\t\tautoplay: {\n\t\t\tdelay: 5000,\n\t\t},\n\t\tfreeMode: true,\n\t\tgrabCursor: true,\n\t\tloop: true,\n\t\tnavigation: {\n\t\t\tnextEl: \".swiper-btn-next\",\n\t\t\tprevEl: \".swiper-btn-prev\",\n\t\t},\n\t\tpagination: {\n\t\t\tclickable: true,\n\t\t\tel: \".swiper-pagination\",\n\t\t\ttype: \"bullets\",\n\t\t},\n\t\tslidesPerGroup: 1,\n\t\tslidesPerView: 1.1,\n\t\tspaceBetween: 10,\n\t};\n\n\treturn \n\t\t\n\t\t\t

\n\t\t\t\n\t\t\t\t{Array.isArray(agents) && agents.map((agent: IAgent) => {\n\t\t\t\t\treturn ;\n\t\t\t\t})}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Array.isArray(agents) && agents.map((agent: IAgent) => {\n\t\t\t\t\t\treturn \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};\n\nAgents.thumb = () => (\n\t
\n\t\t\"Välittäjänosto\"\n\t\t

Välittäjänosto

\n\t
\n);\n\nAgents.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default Agents;\n","import styled from \"styled-components\";\nimport { color, media, textStyles } from \"@utils/style-utils\";\n\nexport const ContactInfoMapWrapper = styled.div`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 3em;\n\tjustify-content: space-between;\n\tmargin: 6em auto;\n\tmax-width: 896px;\n\tpadding: 0 20px;\n\n\t${media.md`\n\t\tflex-direction: row;\n\t`};\n`;\n\nexport const ContactInfo = styled.div`\n\tmax-width: 341px;\n\n\t.phone-button {\n\t\tmin-height: 64px;\n\n\t\ta {\n\t\t\talign-items: center;\n\t\t\tcolor: ${color(\"white\")};\n\t\t\tdisplay: flex;\n\t\t\tgap: 1em;\n\t\t\tjustify-content: flex-start;\n\t\t}\n\n\t\tmargin-bottom: 3em;\n\t}\n`;\n\nexport const ContactInfoBox = styled.div`\n\tmargin-bottom: 3em;\n\n\th4 {\n\t\t${textStyles.MicroTextCaps};\n\t\tfont-weight: bold;\n\t\tmargin: 0 0 15px;\n\t}\n\n\tp {\n\t\t${textStyles.PSmall};\n\t\tcolor: ${color(\"grey\", 2)};\n\t\tmargin: 0;\n\n\t\t&:last-of-type {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\ta {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t\ttext-decoration: none;\n\t\t\ttransition: color 150ms;\n\n\t\t\t&:not(:first-of-type) {\n\t\t\t\t&::before {\n\t\t\t\t\tcontent: \"\\\\A\";\n\t\t\t\t\twhite-space: pre;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&[itemprop=\"email\"] {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t\t}\n\t\t}\n\t}\n`;\n\nexport const Legal = styled.div`\n\tmargin: 40px 0 40px;\n\n\tp {\n\t\t${textStyles.MicroText};\n\t\tcolor: ${color(\"grey\", 3)};\n\t\tmargin: 0;\n\n\t\t&:last-of-type {\n\t\t\tmargin-top: 6px;\n\t\t}\n\t}\n\n\ta {\n\t\tcolor: ${color(\"greenDark\", 1)};\n\t\ttext-decoration: none;\n\n\t\t&:hover {\n\t\t\tcolor: ${color(\"greenDark\", 2)};\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n`;\n\nexport const AgencyMap = styled.div`\n\t//max-height: 462px;\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n`;\n","import React, { Fragment } from \"react\";\nimport { IDocument } from \"@redux/document\";\nimport Email from \"@components/Info/Email\";\n\ninterface IAddressInfoProps {\n\tdoc: IDocument | IAgency;\n\ttitle?: string;\n\ttitleTag?: string;\n}\n\nconst AddressInfo = (props: IAddressInfoProps) => {\n\tconst { doc, title, titleTag } = props;\n\tconst { address, city, email, marketingName, postcode } = doc;\n\tconst Tag: any = titleTag || \"h1\";\n\n\treturn (\n\t\t\n\t\t\t{title && {title}}\n\t\t\t

\n\t\t\t\tKiinteistömaailma {marketingName}\n\t\t\t\t
\n\t\t\t\t{address}\n\t\t\t\t
\n\t\t\t\t{postcode} {city}\n\t\t\t\t
\n\t\t\t

\n\t\t\t

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

\n\t\t
\n\t);\n};\n\nexport default AddressInfo;\n","import React, { Fragment } from \"react\";\nimport Phone from \"@components/Info/Phone\";\n\nconst PhoneInfo = ({ doc, children = null }) => {\n\tconst { phone, phone2, phoneInfo, phoneInformation, telPhone } = doc;\n\treturn (\n\t\t\n\t\t\t

\n\t\t\t\t\n\t\t\t\t{phone2 && }\n\n\t\t\t\t{children && children}\n\t\t\t

\n\t\t\t{(phoneInfo || phoneInformation) && (\n\t\t\t\t

\n\t\t\t\t\t{phoneInformation ? phoneInformation : phoneInfo}\n\t\t\t\t

\n\t\t\t)}\n\t\t
\n\t);\n};\n\nexport default PhoneInfo;\n","import React, { Fragment } from \"react\";\nimport { IDocument } from \"@redux/document\";\n\nimport { Link } from \"react-router-dom\";\n\ninterface IProps {\n\tdoc: IDocument;\n}\n\nconst LegalInfo = ({ doc }: IProps) => {\n\tconst { businessId, companyName, canonicalPath } = doc;\n\n\treturn (\n\t\t\n\t\t\t

{companyName}

\n\t\t\t

{businessId}

\n\t\t\t

\n\t\t\t\tTietosuojaseloste ›\n\t\t\t

\n\t\t
\n\t);\n};\n\nexport default LegalInfo;\n","import React from \"react\";\nimport { getAssetUrl } from \"@utils\";\nimport Text from \"wake-react-components/text\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport { useSelector } from \"react-redux\";\nimport Phone from \"@components/Info/Phone\";\nimport { AgencyMap, ContactInfo, ContactInfoBox, ContactInfoMapWrapper, Legal } from \"./styles\";\nimport { Container } from \"@components/Grid\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport { AddressInfo, LegalInfo } from \"@components/Agency\";\nimport GoogleMap from \"@components/GoogleMap\";\nimport { Link } from \"react-router-dom\";\n\nconst ContactInfoMap = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst id = getID(item);\n\tconst { coordinates, openingHours, phone, showPriceList, telPhone } = mainDoc;\n\n\treturn \n\t\t\n\t\t\t\n\t\t\t\t{phone && {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tlocation.href = \"tel:\" + telPhone;\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{openingHours && (\n\t\t\t\t\t\n\t\t\t\t\t\t

Tavoitat meidät

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

\n\t\t\t\t\t\t\t{openingHours}\n\t\t\t\t\t\t

\n\t\t\t\t\t
\n\t\t\t\t)}\n\n\t\t\t\t{showPriceList && Palveluhinnasto ›}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t{coordinates && coordinates.latitude && coordinates.longitude && (\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\n\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};\n\nContactInfoMap.thumb = () => (\n\t
\n\t\t\"Yhteystiedot\n\t\t

Yhteystiedot ja kartta

\n\t
\n);\n\nContactInfoMap.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default ContactInfoMap;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { getAssetUrl, hasWindow } from \"@utils\";\nimport Text from \"wake-react-components/text\";\nimport { useSelector } from \"react-redux\";\nimport { Stat, StatLabel, StatNumber, StatsContainer, StatsTitle, StatsWrapper, StatDescription } from \"./styles\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport useOnScreen from \"@hooks/use-on-screen\";\n\nconst Stats = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { soldCount, propertyCount, showPercentage, marketingName } = mainDoc;\n\tconst visibleCount = [ soldCount, propertyCount, showPercentage ].filter(value => !!value).length;\n\n\tconst ref = useRef(null);\n\tconst onScreen = useOnScreen(ref, \"0px\", false);\n\n\tuseEffect(() => {\n\t\tif (!hasWindow) {\n\t\t\treturn;\n\t\t}\n\t}, [ onScreen ]);\n\n\tconst id = getID(item);\n\n\treturn \n\t\t{!!visibleCount && \n\t\t\t\n\t\t}\n\t\t\n\t\t\t{!!propertyCount && \n\t\t\t\t{propertyCount}\n\t\t\t\tkohdetta myynnissä\n\t\t\t}\n\t\t\t{!!soldCount && \n\t\t\t\t\n\t\t\t\t\t{soldCount}\n\t\t\t\t\n\t\t\t\tmyydyt kohteet\n\t\t\t\tviim. 12kk aikana\n\t\t\t}\n\t\t\t{!!showPercentage && \n\t\t\t\t\n\t\t\t\t\t{showPercentage}%\n\t\t\t\t\n\t\t\t\tsuosittelee välittäjiämme\n\t\t\t}\n\t\t\n\t;\n\n};\n\nStats.thumb = () => (\n\t
\n\t\t\"Myymälän\n\t\t

Myymälän tilastot

\n\t
\n);\n\nStats.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default Stats;\n","export const swiperOptionsBase = {\n\tgrabCursor: true,\n\tpagination: false,\n};\n\nexport const swiperOptionsOne = {\n\t...swiperOptionsBase,\n\tloop: false,\n\tslidesPerGroup: 1,\n\tslidesPerView: 1,\n\tspaceBetween: 40,\n};\n\nexport const swiperOptionsTwo = {\n\t...swiperOptionsBase,\n\tbreakpoints: {\n\t\t450: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.1,\n\t\t\tspaceBetween: 10,\n\t\t},\n\t\t580: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.4,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t860: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 2,\n\t\t\tslidesPerView: 2,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1920: {\n\t\t\tslidesPerGroup: 2,\n\t\t\tslidesPerView: 2,\n\t\t\tspaceBetween: 40,\n\t\t},\n\t},\n\tloop: false,\n\tslidesPerGroup: 2,\n\tslidesPerView: 2,\n\tspaceBetween: 40,\n};\n\nexport const swiperOptionsThree = {\n\t...swiperOptionsBase,\n\tbreakpoints: {\n\t\t450: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.1,\n\t\t\tspaceBetween: 10,\n\t\t},\n\t\t580: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.4,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t860: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 2,\n\t\t\tslidesPerView: 2,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1130: {\n\t\t\tfreeMode: false,\n\t\t\tslidesPerGroup: 3,\n\t\t\tslidesPerView: 3,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1920: {\n\t\t\tslidesPerGroup: 3,\n\t\t\tslidesPerView: 3,\n\t\t\tspaceBetween: 40,\n\t\t},\n\t},\n\tloop: false,\n\tslidesPerGroup: 3,\n\tslidesPerView: 3,\n\tspaceBetween: 40,\n};\n\nexport const swiperOptionsFourOrMore = (loop: boolean = false, forcedSlidesPerGroup: number = null) => ({\n\t...swiperOptionsBase,\n\tbreakpoints: {\n\t\t450: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.1,\n\t\t\tspaceBetween: 10,\n\t\t},\n\t\t580: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: 1,\n\t\t\tslidesPerView: 1.4,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t860: {\n\t\t\tfreeMode: true,\n\t\t\tslidesPerGroup: forcedSlidesPerGroup || 2,\n\t\t\tslidesPerView: 2,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1130: {\n\t\t\tfreeMode: false,\n\t\t\tslidesPerGroup: forcedSlidesPerGroup || 3,\n\t\t\tslidesPerView: 3,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1300: {\n\t\t\tslidesPerView: 4,\n\t\t\tspaceBetween: 20,\n\t\t},\n\t\t1920: {\n\t\t\tslidesPerGroup: forcedSlidesPerGroup || 4,\n\t\t\tspaceBetween: 40,\n\t\t},\n\t},\n\n\tloop,\n\tslidesPerGroup: forcedSlidesPerGroup || 4,\n\tslidesPerView: 4,\n\tspaceBetween: 40,\n});\n\nexport const getSwiperOptions = (count: number, loop: boolean = false, forcedSlidesPerGroup: number = null) => {\n\tswitch (count) {\n\t\tcase 1:\n\t\t\treturn swiperOptionsOne;\n\n\t\tcase 2:\n\t\t\treturn swiperOptionsTwo;\n\t\tcase 3:\n\t\t\treturn swiperOptionsThree;\n\n\t\tcase 4:\n\t\t\treturn swiperOptionsFourOrMore(loop, forcedSlidesPerGroup);\n\n\t\tdefault:\n\t\t\treturn swiperOptionsFourOrMore(loop, forcedSlidesPerGroup);\n\t}\n};\n","import styled from \"styled-components\";\nimport { Container } from \"@components/Grid\";\nimport { color, fontFamily } from \"@utils/style-utils\";\n\nexport const CarouselContainer = styled(Container)`\n\t.swiper-slide {\n\t\theight: auto;\n\n\t\t> div {\n\t\t\theight: 100%;\n\t\t}\n\t}\n\n\t.swiper-button-next,\n\t.swiper-button-prev {\n\t\tdisplay: none;\n\t}\n`;\n\nexport const LoadMoreBlock = styled.button`\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\talign-items: center;\n\tbackground: ${color(\"greenBright\", 6)};\n\tborder-radius: 4px;\n\tborder: 1px solid ${color(\"greenBright\", 1)};\n\tcolor: ${color(\"greenBright\", 1)};\n\tcursor: pointer;\n\tdisplay: flex;\n\tflex-direction: column;\n\tfont-family: ${fontFamily.base};\n\tfont-size: 16px;\n\tfont-weight: bold;\n\theight: 100%;\n\tjustify-content: center;\n\toutline: 0;\n\ttext-transform: uppercase;\n\ttransition: background-color 150ms;\n\twidth: 100%;\n\n\t&:hover {\n\t\tbackground-color: ${color(\"greenBright\", 5)};\n\t}\n\n\t.icon {\n\t\tfont-size: 40px;\n\n\t\tsvg {\n\t\t\tanimation-duration: 0.4s;\n\t\t\tmax-width: 40px;\n\t\t}\n\t}\n`;\n","import React, { useState, useEffect, useLayoutEffect, forwardRef, RefObject } from \"react\";\nimport { Swiper, Slide } from \"react-dynamic-swiper\";\nimport searchService from \"@services/search.service\";\nimport CarouselPlaceholder from \"@components/PropertyCarousel/placeholder\";\nimport ApartmentBlock from \"@components/ApartmentBlock\";\nimport { getSwiperOptions } from \"@utils/property-carousel\";\nimport { CarouselContainer, LoadMoreBlock } from \"./styles\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { wake } from \"@utils\";\nimport { useLocation } from \"react-router\";\n\ninterface IProps {\n\tagencyKey: string | number;\n\tagencyArea?: boolean;\n\texcludeAgency?: boolean;\n\topenHouses?: boolean;\n\tonNoProperties?: () => void;\n\tonSlideChange?: any;\n\tsetTotalProperties?: any;\n\tsmall?: boolean;\n}\n\nconst swiperOptions = {\n\t...getSwiperOptions(3, false, 1),\n\tfreeMode: true,\n\tmousewheel: true,\n\tslidesPerGroup: 1,\n};\n\nconst DynamicPropertyCarousel = forwardRef((props: IProps, ref: RefObject) => {\n\t// const ref = useRef(null);\n\tconst { agencyKey, small = true } = props;\n\tconst [properties, setProperties] = useState([]);\n\tconst [totalCount, setTotalCount] = useState(null);\n\tconst [skip, setSkip] = useState(0);\n\tconst [allLoaded, setAllLoaded] = useState(false);\n\tconst [isLoading, setLoading] = useState(false);\n\tconst loc = useLocation();\n\tlet isRendering: boolean = true;\n\n\tconst baseParams = {\n\t\tagencyArea: props.agencyArea || undefined,\n\t\tagencyKey,\n\t\texcludeAgency: props.excludeAgency || undefined,\n\t\tlimit: 7,\n\t\topenhouses: props.openHouses || undefined,\n\t\tskip,\n\t\tsort: \"latestPublishTimestamp\",\n\t\tsortOrder: \"desc\",\n\t\ttype: \"agency\",\n\t};\n\n\tconst loadProperties = async (skipAmount: number = 0) => {\n\t\tconst params = {\n\t\t\t...baseParams,\n\t\t\tskip: skipAmount,\n\t\t};\n\n\t\ttry {\n\t\t\tconst { data } = await searchService.fetchProperties(params);\n\t\t\treturn data;\n\t\t} catch (e) {\n\t\t\tconsole.log(\"error while fetching agency properties: \", e);\n\t\t\tif (isRendering) {\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t};\n\n\tconst getInitialProperties = async () => {\n\t\tif (wake && wake.loading) {\n\t\t\treturn;\n\t\t}\n\t\tif (isRendering) {\n\t\t\tsetLoading(true);\n\t\t\tconst data = await loadProperties();\n\t\t\tconst { results, matches } = data || { results: null, matches: null };\n\n\t\t\tif (results && matches) {\n\t\t\t\tif (isRendering) {\n\t\t\t\t\tsetTotalCount(matches);\n\t\t\t\t\tif (props.setTotalProperties) {\n\t\t\t\t\t\tprops.setTotalProperties(matches);\n\t\t\t\t\t}\n\t\t\t\t\tsetProperties(results);\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t}\n\n\t\t\t\tif (results.length === matches) {\n\t\t\t\t\tconsole.log(`loaded all ${matches} agency properties`);\n\t\t\t\t\tif (isRendering) {\n\t\t\t\t\t\tsetAllLoaded(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isEmpty(results) && typeof props.onNoProperties === \"function\") {\n\t\t\t\tprops.onNoProperties();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst loadMore = async () => {\n\t\tsetLoading(true);\n\n\t\tif (isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!allLoaded) {\n\t\t\tconst newSkip = skip + 7;\n\t\t\tsetSkip(newSkip);\n\n\t\t\tconst loadedProperties = await loadProperties(newSkip);\n\t\t\tconst { results, matches } = loadedProperties || { results: null, matches: null };\n\n\t\t\tif (results.length + newSkip >= totalCount) {\n\t\t\t\tconsole.log(`loaded all ${matches} agency properties`);\n\t\t\t\tsetAllLoaded(true);\n\t\t\t}\n\n\t\t\tif (matches !== null && props.setTotalProperties) {\n\t\t\t\tprops.setTotalProperties(matches);\n\t\t\t}\n\t\t\tsetProperties([...properties, ...results]);\n\t\t\tsetLoading(false);\n\t\t}\n\t};\n\n\tconst onReachEnd = () => {\n\t\tif (!allLoaded && !isLoading) {\n\t\t\tconsole.log(\"loading more\");\n\t\t\tloadMore();\n\t\t}\n\t};\n\n\tuseLayoutEffect(() => {\n\t\tif (isRendering && ref.current) {\n\t\t\tconst swiper = ref.current.swiper();\n\t\t\tswiper.update();\n\t\t}\n\t}, [properties]);\n\n\tuseEffect(() => {\n\t\tif (isRendering) {\n\t\t\tgetInitialProperties();\n\t\t}\n\n\t\treturn () => {\n\t\t\tisRendering = false;\n\t\t};\n\t}, [wake.loading]);\n\n\tuseEffect(() => {\n\t\tisRendering = true;\n\t}, [loc.pathname]);\n\n\treturn (\n\t\t
\n\t\t\t{(!properties || properties.length <= 0) && }\n\n\t\t\t{properties && properties.length > 0 && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{properties.map((property: IProperty) => (\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\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!allLoaded && (\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{!isLoading && Lataa lisää}\n\t\t\t\t\t\t\t\t\t{isLoading && (\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)}\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 DynamicPropertyCarousel;\n","import styled from \"styled-components\";\nimport { Container, Wrapper } from \"@components/Grid\";\nimport { color, textStyles, fontFamily, media, grid } from \"@utils/style-utils\";\n\nexport const CarouselTabsWrapper = styled(Wrapper)`\n\tposition: relative;\n\n\t&::before,\n\t&::after {\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\theight: 100%;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\twidth: ${grid.gutterSmall / 2}px;\n\t\tz-index: 999;\n\n\t\t${media.sm`\n\t\t\twidth: ${grid.gutterSmall / 2}px;\n\t\t`}\n\t}\n\n\t&::before {\n\t\tbackground-image: linear-gradient(to right, rgba(255, 255, 255, 1) 20%, rgba(255, 255, 255, 0) 100%);\n\t\tpointer-events: none;\n\t\tleft: 0;\n\t}\n\n\t&::after {\n\t\tbackground-image: linear-gradient(to left, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);\n\t\tpointer-events: none;\n\t\tright: 0;\n\t\twidth: ${grid.gutterSmall + 5}px;\n\t}\n`;\n\nexport const CarouselTabs = styled(Container)`\n\toverflow-x: auto;\n\t-webkit-overflow-scrolling: touch;\n\tposition: relative;\n`;\n\nexport const CarouselHeader = styled.div`\n\tdisplay: flex;\n\tmargin-bottom: 40px;\n\twhite-space: nowrap;\n\n\t.spacer {\n\t\tborder-bottom: 1px solid ${color(\"grey\", 5)};\n\t\tflex-grow: 1;\n\t\tmargin-bottom: 0;\n\t\ttransform: translateY(-50%);\n\n\t\t@media (max-width: 640px) {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n`;\n\nexport const CarouselTitle = styled.h3`\n\t${textStyles.H3Condensed};\n\tcolor: ${color(\"grey\", 4)};\n\tcursor: pointer;\n\tfont-size: 24px;\n\tmargin: 0 20px 0 0;\n\n\t.is-pointer & {\n\t\t&:hover {\n\t\t\tcolor: ${color(\"grey\", 3)};\n\t\t}\n\t}\n\n\t${media.md`\n\t\t${textStyles.H3};\n\t\tcolor: ${color(\"grey\", 4)};\n\t\tfont-family: ${fontFamily.base};\n\t\tmargin-bottom: 0;\n\t`}\n\t.tab-button--active & {\n\t\tcolor: ${color(\"grey\", 1)};\n\n\t\t&:hover {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t}\n\t}\n`;\n\nexport const CarouselButtons = styled.div`\n\tdisplay: flex;\n\n\t@media (max-width: 640px) {\n\t\tdisplay: none;\n\t}\n\n\tdiv:not(.hidden) {\n\t\talign-items: center;\n\t\tcolor: ${color(\"greenBright\", 1)};\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tmargin: 0 0 0 20px;\n\t}\n\n\tbutton {\n\t\talign-items: center;\n\t\tborder: 0;\n\t\tbackground: rgba(255, 255, 255, 0);\n\t\tcolor: ${color(\"greenBright\", 1)};\n\t\tcursor: pointer;\n\t\tdisplay: inline-flex;\n\t\tfont-size: 20px;\n\t\theight: 30px;\n\t\tmargin: 0 0 0 20px;\n\t\toutline: 0;\n\t\tpadding: 0;\n\t\twidth: 20px;\n\n\t\tsvg {\n\t\t\tmax-width: 20px;\n\t\t\ttransform: scale(1);\n\t\t\ttransition: transform 150ms;\n\t\t}\n\n\t\t+ button {\n\t\t\tmargin-left: 5px;\n\t\t}\n\n\t\t&.next,\n\t\t&.prev {\n\t\t\tjustify-content: flex-end;\n\t\t}\n\n\t\t&.swiper-button-disabled {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&:hover {\n\t\t\tsvg {\n\t\t\t\ttransform: scale(1.2);\n\t\t\t}\n\t\t}\n\t}\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport TabSwitcher, { Tab, TabPanel } from \"@components/TabSwitcher\";\nimport DynamicPropertyCarousel from \"@components/DynamicPropertyCarousel\";\nimport { CarouselTabs, CarouselButtons, CarouselHeader, CarouselTitle, CarouselTabsWrapper } from \"./styles\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\n\nconst AgencyProperties = ({ agency, propertyCount }) => {\n\tlet isRendering = true;\n\tconst tabs = [1, 2, 3];\n\tconst firstRef = useRef(null);\n\tconst secondRef = useRef(null);\n\tconst thirdRef = useRef(null);\n\tconst [currentRef, setCurrentRef] = useState(null);\n\tconst [contentfulTabs, setContentfulTabs] = useState(tabs);\n\tconst [totalPropertiesSecond, setTotalPropertiesSecond] = useState(0);\n\tconst [totalPropertiesThird, setTotalPropertiesThird] = useState(0);\n\tconst [slideChanged, setSlideChanged] = useState(false);\n\n\tconst getSwiper = ref => (ref && ref.current ? ref.current.swiper() : null);\n\n\tconst updateSwiper = ref => {\n\t\ttry {\n\t\t\tif (ref && ref.current) {\n\t\t\t\tconst swiper = getSwiper(ref);\n\t\t\t\tsetCurrentRef(ref);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tswiper.updateSize();\n\t\t\t\t\tswiper.updateSlides();\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t}\n\t};\n\n\tconst hideTab = (index: number) => {\n\t\tsetContentfulTabs(ts => ts.filter(t => t !== index));\n\t};\n\n\tconst isVisible = (index: number) => {\n\t\treturn contentfulTabs.indexOf(index) !== -1;\n\t};\n\n\tconst slideToNext = () => {\n\t\tif (!isRendering || !currentRef || !currentRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tgetSwiper(currentRef).slideNext();\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t}\n\t};\n\n\tconst slideToPrev = () => {\n\t\tif (!isRendering || !currentRef || !currentRef.current) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tgetSwiper(currentRef).slidePrev();\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tisRendering = false;\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (isRendering && !currentRef && firstRef && firstRef.current) {\n\t\t\tsetCurrentRef(firstRef);\n\t\t}\n\t}, [firstRef.current]);\n\n\tconst getSwiperIndex = (ref: any) => {\n\t\tconst swiper = getSwiper(ref);\n\t\tconst index = swiper ? swiper.activeIndex + 1 : 1;\n\t\treturn `${index}-${index + 2}`;\n\t};\n\n\tconst slideChange = () => {\n\t\t// this is used to trigger re-render when slide is changed to get the correct index from sliders\n\t\tsetSlideChanged((currentValue: boolean) => !currentValue);\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\n\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\t{/* */}\n\t\t\t\t\t\t\t{/* \t{getSwiperIndex(firstRef)}/{propertyCount} */}\n\t\t\t\t\t\t\t{/* */}\n\t\t\t\t\t\t\t{/* */}\n\t\t\t\t\t\t\t{/* \t{getSwiperIndex(secondRef)}/{totalPropertiesSecond} */}\n\t\t\t\t\t\t\t{/* */}\n\t\t\t\t\t\t\t{/* */}\n\t\t\t\t\t\t\t{/* \t{getSwiperIndex(thirdRef)}/{totalPropertiesThird} */}\n\t\t\t\t\t\t\t{/* */}\n\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\n\t\t\t\n\t\t\t\t hideTab(1)}\n\t\t\t\t\tonSlideChange={() => slideChange()}\n\t\t\t\t\tref={firstRef}\n\t\t\t\t\tsmall={true}\n\t\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t\t\t hideTab(2)}\n\t\t\t\t\tonSlideChange={() => slideChange()}\n\t\t\t\t\tref={secondRef}\n\t\t\t\t\tsetTotalProperties={setTotalPropertiesSecond}\n\t\t\t\t\tsmall={true}\n\t\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t\t\t hideTab(3)}\n\t\t\t\t\tonSlideChange={() => slideChange()}\n\t\t\t\t\topenHouses={true}\n\t\t\t\t\tref={thirdRef}\n\t\t\t\t\tsetTotalProperties={setTotalPropertiesThird}\n\t\t\t\t\tsmall={true}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nexport default AgencyProperties;\n","import styled from \"styled-components\";\nimport { Container } from \"@components/Grid\";\n\nexport const PropertyBlockContainer = styled(Container)`\n\t.swiper-container {\n\t\tpadding-bottom: 1em;\n\t}\n`;\n","import React from \"react\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport AgencyProperties from \"@components/Agency/AgencyProperties\";\nimport { useSelector } from \"react-redux\";\nimport Text from \"wake-react-components/text\";\nimport { getAssetUrl } from \"@utils\";\nimport { PropertyBlockContainer } from \"@components/Agency/Blocks/Properties/styles\";\n\nconst Properties = ({item}) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\n\tconst id = getID(item);\n\treturn \n\t\t\n\t;\n\n};\n\nProperties.thumb = () => (\n\t
\n\t\t\"Kohdenosto\"\n\t\t

Kohdenosto

\n\t
\n);\n\nProperties.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default Properties;\n","import styled from \"styled-components\";\nimport { Container } from \"@components/Grid\";\nimport { color, media, textStyles } from \"@utils/style-utils\";\n\nexport const OwnerGreetingsContainer = styled(Container)`\n\tbackground: transparent url(/assets/images/brand-identity/graphics/agent-bg-pattern.svg) repeat top left;\n\tmargin: 9em 0;\n\tpadding: 1em;\n\n\t${media.md`\n\t\tpadding: 3em;\n\t`};\n`;\n\nexport const OwnerGreetingsWrapper = styled.div`\n\talign-items: center;\n\tbackground: ${color(\"beige\", 4)};\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\n\t${media.md`\n\t\talign-items: stretch;\n\t\tflex-direction: row;\n\t`};\n`;\n\nexport const OwnerGreetingsText = styled.div`\n\tmargin: 3em;\n\tmax-width: min(895px, 70%);\n\tmin-width: unset;\n\n\t${media.md`\n\t\tmargin: 3em 9em;\n\t\tmin-width: calc(46vw - 18em);\n\t`};\n`;\n\nexport const OwnerName = styled.h4`\n\t${textStyles.MicroTextCaps};\n\tfont-weight: bold;\n\tmargin: 3em 0 15px;\n\n\t&.multiple-names {\n\t\tmargin-bottom: 0;\n\t}\n`;\n\nexport const OwnerBottom = styled.div`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\n\t${media.md`\n\t\tflex-direction: row;\n\t\tgap: 1em;\n\t`};\n`;\n\nexport const OwnerTitle = styled.p`\n\t&.multiple-names {\n\t\tmargin-top: 5px;\n\t}\n`;\n\nexport const OwnerImage = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tposition: relative;\n\n\timg {\n\t\tdisplay: block;\n\t\tmax-height: min(100%, 505px);\n\t\tmax-width: min(100%, 384px);\n\n\t\t${media.md`\n\t\t\tmax-height: 505px;\n\t\t\tmax-width: 384px;\n\t\t`};\n\n\t\t&:not(:first-child) {\n\t\t\tright: 0;\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\t&.crossfade {\n\t\t> * {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\ttop: 0;\n\t\t\ttransition: opacity 1200ms ease-in-out;\n\n\t\t\t&:not(.first) {\n\t\t\t\ttop: 50%;\n\t\t\t\ttransform: translateY(-50%);\n\t\t\t}\n\t\t}\n\n\t\t> *:first-child {\n\t\t\tposition: relative;\n\t\t}\n\n\t\t> *.is-active {\n\t\t\topacity: 1;\n\t\t}\n\t}\n`;\n","import styled from \"styled-components\";\nimport { SomeLinks } from \"@components/SiteFooter/styles\";\n\nexport const AgencySomeLinksWrapper = styled.div`\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\n\t${SomeLinks} {\n\t\talign-items: flex-start;\n\t\tflex-wrap: wrap;\n\t\tgap: 16px;\n\t\tjustify-content: flex-start;\n\n\t\ta {\n\t\t\tmargin-right: 0;\n\t\t}\n\t}\n`;\n","import React from \"react\";\nimport { SomeButton, SomeLinks } from \"@components/SiteFooter/styles\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport { AgencySomeLinksWrapper } from \"./styles\";\n\ninterface IAgencySomeLinksProps {\n\tsocialAccounts: any[];\n}\n\nexport const AgencySomeLinks = (props: IAgencySomeLinksProps) => {\n\n\tconst { socialAccounts = [] } = props;\n\n\tif (!Array.isArray(socialAccounts) || socialAccounts.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn \n\t\t\n\t\t\t{socialAccounts.map((socialAccount: any, index: number) => {\n\t\t\t\tlet someIcon = null;\n\t\t\t\tswitch (socialAccount.type || null) {\n\t\t\t\t\tcase \"facebook\":\n\t\t\t\t\t\tsomeIcon = \"facebook-f\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"instagram\":\n\t\t\t\t\t\tsomeIcon = \"instagram\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"linkedin\":\n\t\t\t\t\t\tsomeIcon = \"linkedin-in\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"twitter\":\n\t\t\t\t\t\tsomeIcon = \"twitter\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!someIcon) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn \n\t\t\t\t\t\n\t\t\t\t;\n\t\t\t})}\n\t\t\n\t;\n\n};\n","import React, { Fragment, useEffect, useState } from \"react\";\nimport { getAssetUrl, hasWindow } from \"@utils\";\nimport Editor from \"wake-react-components/editor\";\nimport Text from \"wake-react-components/text\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport {\n\tOwnerBottom,\n\tOwnerGreetingsContainer,\n\tOwnerGreetingsText,\n\tOwnerGreetingsWrapper,\n\tOwnerImage,\n\tOwnerName,\n\tOwnerTitle,\n} from \"./styles\";\nimport { useSelector } from \"react-redux\";\nimport AgentImage from \"@components/Agent/AgentImage\";\nimport { AgencySomeLinks } from \"@components/Agency/AgencySomeLinks\";\nimport { isAdmin } from \"wake-react-components/utils\";\n\nconst OwnerGreetings = ({item}) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { agencyAgent } = mainDoc;\n\tconst id = getID(item);\n\tconst hasMultipleImages = Array.isArray(agencyAgent) && agencyAgent.length > 1;\n\tconst [activeImageIndex, setActiveImageIndex] = useState(0);\n\n\tuseEffect(() => {\n\t\tif (!hasWindow) {\n\t\t\treturn;\n\t\t}\n\t\tif (!hasMultipleImages) {\n\t\t\tsetActiveImageIndex(0);\n\t\t\treturn;\n\t\t}\n\n\t\tconst intervalId = setInterval(() => {\n\t\t\tsetActiveImageIndex(previousIndex => (previousIndex + 1) % agencyAgent.length);\n\t\t}, 4000);\n\n\t\treturn () => {\n\t\t\tclearInterval(intervalId);\n\t\t};\n\t}, [hasMultipleImages, Array.isArray(agencyAgent) ? agencyAgent.length : 0]);\n\n\tconst defaultGreetings = mainDoc && Array.isArray(mainDoc.news) && mainDoc.news.length > 0 && mainDoc.news[0].description\n\t\t? mainDoc.news[0].description\n\t\t: \"Kutsu meidät maksuttomalle kotikäynnille, kerromme, kuinka teemme asunnon vaihdon Sinulle helpoksi. Kukaan ei välitä niin kuin me.\"\n\t;\n\n\tif (!isAdmin &&\n\t\t(!mainDoc || !Array.isArray(mainDoc.news) || mainDoc.news.length === 0 || !mainDoc.news[0].description) &&\n\t\t!item.greetingsText\n\t) {\n\t\treturn null;\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

\n\t\t\t\t\n\t\t\t\t{!!(agencyAgent && !Array.isArray(agencyAgent)) && \n\t\t\t\t\t{agencyAgent.firstName} {agencyAgent.lastName}\n\t\t\t\t}\n\t\t\t\t{!!(agencyAgent && Array.isArray(agencyAgent)) && <>\n\t\t\t\t\t{agencyAgent.map((agencyAgentItem: any) => {\n\t\t\t\t\t\treturn \n\t\t\t\t\t\t\t{agencyAgentItem.firstName} {agencyAgentItem.lastName}\n\t\t\t\t\t\t\t{agencyAgentItem.title || \"\"}\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{agencyAgent\n\t\t\t\t\t\t? Array.isArray(agencyAgent)\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: agencyAgent.title || \"\"\n\t\t\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\t\t{Array.isArray(agencyAgent)\n\t\t\t\t? <>{agencyAgent.map((agencyAgentItem: any, index: number) => {\n\t\t\t\t\t\treturn \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};\n\nOwnerGreetings.thumb = () => (\n\t
\n\t\t\"Välittäjänosto\"\n\t\t

Yrittäjän terveiset + somenostot

\n\t
\n);\n\nOwnerGreetings.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default OwnerGreetings;\n","import React from \"react\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { Container, Wrapper } from \"@components/Grid\";\nimport ArticleCards from \"@components/ArticleCards\";\nimport { useSelector } from \"react-redux\";\nimport { Articles, ArticlesTitle } from \"./styles\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport { getAssetUrl } from \"@utils\";\nimport Text from \"wake-react-components/text\";\nimport { isAdmin } from \"wake-react-components/utils\";\n\nconst AgencyArticles = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { page = {} } = mainDoc;\n\tconst { agencyArticles } = page; // populated by repeater defined in manifest.xml\n\tconst id = getID(item);\n\n\treturn \n\t\t\n\t\t\t{isEmpty(agencyArticles)\n\t\t\t\t? (isAdmin ?

Ei nostettavia artikkeleita.

: \"\")\n\t\t\t\t:\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t

Ajankohtaista

\n\t\t\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
\n\t
;\n\n};\n\nAgencyArticles.thumb = () => (\n\t
\n\t\t\"Artikkelinosto\"\n\t\t

Artikkelinosto

\n\t
\n);\n\nAgencyArticles.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default AgencyArticles;\n","import styled from \"styled-components\";\nimport { color, fontFamily, grid, media } from \"@utils/style-utils\";\n\nexport const MainFormWrapper = styled.div`\n\tmargin: 60px 0;\n\twidth: 100vw;\n\n\t.contact-form {\n\t\tpadding-top: 30px;\n\n\t\t.form-container {\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\t${media.lg`\n\t\ttransform: translateX(calc(-1 * (100vw - 1404px) / 2)); // (view width - container max-width) / 2 = container left auto margin\n\n\t\t.contact-form {\n\t\t\tpadding-top: 70px;\n\n\t\t\t.form-container {\n\t\t\t\ttop: 30px;\n\t\t\t}\n\t\t}\n\t`};\n`;\n\nexport const FormHeader = styled.div`\n\ttext-align: center;\n\n\th3 {\n\t\tmargin: 0 0 16px;\n\t}\n\n\tp {\n\t\tcolor: ${color(\"grey\", 2)};\n\t\tfont-family: ${fontFamily.condensed};\n\t\tfont-size: 14px;\n\t\tmargin: 0 0 44px;\n\n\t\t${media.md`\n\t\t\tfont-size: 16px;\n\t\t`};\n\n\t\tspan {\n\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t\tfont-size: 20px;\n\t\t\tmargin-right: 10px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 16px;\n\t\t\t}\n\t\t}\n\t}\n`;\n","import React from \"react\";\nimport { MainFormWrapper, FormHeader } from \"./styles\";\nimport { Element as ScrollTarget } from \"react-scroll\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport AContactForm from \"@components/Form/ContactFormAgentOrAgency\";\nimport { useSelector } from \"react-redux\";\nimport Text from \"wake-react-components/text\";\nimport { getAssetUrl } from \"@utils\";\nimport { getID } from \"@components/ContentBlocks/Base\";\n\nconst AgencyContactForm = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { marketingName, name } = mainDoc;\n\tconst id = getID(item);\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

\n\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\t{marketingName ? `Kiinteistömaailma ${marketingName}` : name}\n\t\t\t\t

\n\t\t\t
\n\t\t
\n\t
;\n\n};\n\nAgencyContactForm.thumb = () => (\n\t
\n\t\t\"Yhteydenottolomake\"\n\t\t

Yhteydenottolomake

\n\t
\n);\n\nAgencyContactForm.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default AgencyContactForm;\n","import styled, { keyframes } from \"styled-components\";\nimport { color, media } from \"@utils/style-utils\";\nimport { Container } from \"@components/Grid\";\n\nexport const OtherAgenciesContainer = styled(Container)`\n\tposition: relative;\n\n\t&:before {\n\t\tbackground: ${color(\"blue\", 5)};\n\t\tcontent: \"\";\n\t\tdisplay: block;\n\t\theight: calc(100% - 7em);\n\t\tleft: -25vw;\n\t\tposition: absolute;\n\t\ttop: 7em;\n\t\twidth: 200vw;\n\t}\n`;\n\nexport const OtherAgenciesTitle = styled.h3`\n\tmargin: 3em auto 1em;\n\ttext-align: center;\n`;\n\nexport const OtherAgenciesWrapper = styled.div`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 3em;\n\tjustify-content: center;\n\tmargin-bottom: 6em;\n\tposition: relative;\n`;\n\nexport const AgencyCard = styled.div`\n\twidth: 100%;\n\n\t${media.md`\n\t\twidth: calc((100% - 3em) / 2);\n\t`};\n\n\t${media.lg`\n\t\twidth: calc((100% - 6em) / 3);\n\t`};\n`;\n\nconst flipCard = keyframes`\n\t0% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n`;\nconst flipBack = keyframes`\n\t0% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n`;\n\nexport const ImageOrMap = styled.div`\n\theight: 283px;\n\tposition: relative;\n\n\t.front {\n\t\tanimation: ${flipBack} 222ms linear forwards;\n\t\theight: 100%;\n\t\tleft: 0;\n\t\tposition: relative;\n\t\ttop: 0;\n\t\tz-index: 10;\n\t\twidth: 100%;\n\t}\n\t.back {\n\t\tanimation: ${flipCard} 222ms linear forwards;\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\tz-index: 5;\n\t}\n`;\n\nexport const AgencyMap = styled.div`\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n`;\n\nexport const NameAndAddress = styled.a`\n\talign-items: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: flex-start;\n\tmargin: 1em 0 0;\n\tposition: relative;\n\n\t.agency-name {\n\t\tmargin: 0 0 10px 0;\n\t}\n\t.agency-address {\n\t\tcolor: ${color(\"grey\", 1)};\n\t\tfont-size: 2rem;\n\t}\n\n\t&:hover {\n\t\t.agency-name, .agency-address {\n\t\t\tcolor: ${color(\"greenBright\", 1)};\n\t\t}\n\t}\n`;\n","import React, { useState } from \"react\";\nimport { getAssetUrl } from \"@utils\";\nimport Image from \"@components/Image\";\nimport { AgencyCard, AgencyMap, ImageOrMap, NameAndAddress } from \"./styles\";\nimport GoogleMap from \"@components/GoogleMap\";\n\nexport const OtherAgencyCard = ({ agency }) => {\n\n\tconst {\n\t\taddress,\n\t\tcoordinates,\n\t\timageName,\n\t\timagePath,\n\t\tkey,\n\t\tmarketingName,\n\t\tname,\n\t\turlParts,\n\t} = agency;\n\n\tconst [ hovered, setHovered ] = useState(false);\n\tconst hasMap = coordinates && coordinates.latitude && coordinates.longitude;\n\n\treturn \n\t\t {\n\t\t\t\tif (!e.bubbles) {\n\t\t\t\t\tsetHovered((current: boolean) => !current);\n\t\t\t\t}\n\t\t\t}}\n\t\t\tonMouseLeave={() => setHovered(false)}\n\t\t\tonMouseEnter={() => setHovered(true)}\n\t\t>\n\t\t\t\n\t\t\t{hasMap && \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\t\n\t\t\t
}\n\t\t\n\t\t\n\t\t\t

{marketingName ? `Kiinteistömaailma ${marketingName}` : name}

\n\t\t\t{address}\n\t\t
\n\t
;\n\n};\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { getID } from \"@components/ContentBlocks/Base\";\nimport { OtherAgenciesContainer, OtherAgenciesTitle, OtherAgenciesWrapper } from \"./styles\";\nimport Text from \"wake-react-components/text\";\nimport { OtherAgencyCard } from \"./card\";\nimport { getAssetUrl } from \"@utils\";\n\nconst OtherAgencies = ({ item }) => {\n\n\tconst mainDoc: any = useSelector(state => state && \"document\" in state ? (state as any).document : null);\n\tconst { otherAgencies } = mainDoc;\n\n\tif (isEmpty(otherAgencies)) {\n\t\treturn null;\n\t}\n\tconst id = getID(item);\n\n\treturn \n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t{otherAgencies.map((otherAgency: any, index: number) => {\n\t\t\t\treturn ;\n\t\t\t})}\n\t\t\n\t;\n\n};\n\nOtherAgencies.thumb = () => (\n\t
\n\t\t\"Yrityksen\n\t\t

Yrityksen muut myymälät

\n\t
\n);\n\nOtherAgencies.settings = () => (\n\t
\n\t\tBlockin ID (esim. ankkuriksi) \n\t\t
\n\t
\n);\n\nexport default OtherAgencies;\n","import React from \"react\";\nimport { AgencyName, ContactButton, StickyContainer } from \"@pages/AgencyPage/styles\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport { hasWindow } from \"@utils\";\nimport Phone from \"@components/Info/Phone\";\n\nexport const AgencyContactBar = (props: any) => {\n\n\tconst { agency, inHeader = false, scrollToContact } = props;\n\tconst { marketingName, name, phone, telPhone } = agency;\n\n\treturn \n\t\t\n\t\t\t{marketingName ? `Kiinteistömaailma ${marketingName}` : name}\n\t\t\n\t\t
\n\t\t{(phone && telPhone) && {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tif (hasWindow) {\n\t\t\t\t\tlocation.href = \"tel:\" + telPhone;\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t}\n\t\t {\n\t\t\t\tscrollToContact();\n\t\t\t\tif (hasWindow) {\n\t\t\t\t\tsetTimeout(() => scrollToContact(), 1);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\tOta yhteyttä\n\t\t\n\t;\n\n};\n","import React, { useEffect } from \"react\";\n\nimport { Container, Wrapper } from \"@components/Grid\";\nimport { IApplicationState } from \"@redux\";\nimport { connect } from \"react-redux\";\n\nimport { AgencyHero, AgencyHeroContent } from \"./styles\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport historyTracker from \"@services/history-tracker\";\nimport dataLayerPush from \"@utils/dataLayerPush\";\nimport Blocklist from \"wake-react-components/blocklist\";\nimport TextBoxes from \"@components/ContentBlocks/TextBoxes\";\nimport TextContent from \"@components/ContentBlocks/TextContent\";\nimport TwoTextBoxes from \"@components/ContentBlocks/TwoTextBoxes\";\nimport { getAssetUrl, hasWindow } from \"@utils\";\nimport Background from \"wake-react-components/background\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport Input from \"wake-react-components/input\";\nimport Agents from \"@components/Agency/Blocks/Agents\";\nimport ContactInfoMap from \"@components/Agency/Blocks/ContactInfoMap\";\nimport Stats from \"@components/Agency/Blocks/Stats\";\nimport Video from \"@components/ContentBlocks/Video\";\nimport MediaCarousel from \"@components/ContentBlocks/MediaCarousel\";\nimport Properties from \"@components/Agency/Blocks/Properties\";\nimport OwnerGreetings from \"@components/Agency/Blocks/OwnerGreetings\";\nimport { AgencySomeLinks } from \"@components/Agency/AgencySomeLinks\";\nimport AgencyArticles from \"@components/Agency/Blocks/AgencyArticles\";\nimport AgencyContactForm from \"@components/Agency/Blocks/AgencyContactForm\";\nimport OtherAgencies from \"@components/Agency/Blocks/OtherAgencies\";\nimport StickyContactBar from \"@components/StickyContactBar\";\nimport { AgencyContactBar } from \"@components/Agency/AgencyContactBar\";\n\nconst AgencyPage = (props: any) => {\n\tconst { document: doc } = props;\n\n\tconst supportedBlocks: any = {\n\t\tAgencyArticles,\n\t\tAgencyContactForm,\n\t\tAgents,\n\t\tContactInfoMap,\n\t\tMediaCarousel,\n\t\tOtherAgencies,\n\t\tOwnerGreetings,\n\t\tProperties,\n\t\tStats,\n\t\tTextBoxes,\n\t\tTextContent,\n\t\tTwoTextBoxes,\n\t\tVideo,\n\t};\n\n\tconst {\n\t\tmarketingName,\n\t\tname,\n\t} = doc;\n\n\tuseEffect(() => {\n\t\tif (!isEmpty(doc)) {\n\t\t\thistoryTracker.trackHistory(\"seller-county\", doc.city);\n\t\t\thistoryTracker.trackHistory(\"seller-postcode\", doc.postcode);\n\n\t\t\thistoryTracker.trackHistory(\"visited-agency\" as any, JSON.stringify({...doc, visitedAt: new Date().getTime()}));\n\n\t\t\tdataLayerPush({\n\t\t\t\t\"agency-details\": {\n\t\t\t\t\t\"myymala-id\": doc.key || \"\",\n\t\t\t\t\t\"myymala-laki\": doc.companyName || \"\",\n\t\t\t\t\t\"myymala-markkinointi\": doc.marketingName || \"\",\n\t\t\t\t\t\"sisalto\": \"myymalasivu\",\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}, [ doc.documentID ]);\n\n\tconst hasHeroBackground = !isEmpty(doc.agencyHeroBackground) && !isEmpty(doc.agencyHeroBackground.src);\n\n\tconst scrollToContact = () => {\n\t\tconst formElements = hasWindow ? document.getElementsByClassName(\"contact-form\") : [];\n\t\tif (!formElements) {\n\t\t\treturn;\n\t\t}\n\t\twindow.scrollTo({\n\t\t\tbehavior: \"smooth\",\n\t\t\tleft: 0,\n\t\t\ttop: formElements[0].parentElement.offsetTop - 75,\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\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\tKiinteistömaailma {marketingName ? marketingName : name}\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\n\t\t\t\n\t\t\t{isAdmin && \n\t\t\t\t

Hero-alueen otsikon väri

\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\n\t\t\t\t\n\t\t\t
}\n\n\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\n\t\t
\n\t);\n};\n\nconst mapStateToProps = (state: IApplicationState) => ({\n\tdocument: state.document,\n});\n\nexport default connect(mapStateToProps)(AgencyPage);\n"],"sourceRoot":""}