{"version":3,"sources":["components/ContentBlocks/Base/index.tsx","../node_modules/wake-react-components/image.js","utils/anchor-scroll.tsx","../node_modules/wake-react-components/lib/image/index.js","components/ContentBlocks/TwoTextBoxes/styles.js","components/ContentBlocks/TwoTextBoxes/index.tsx","components/ContentBlocks/TextAndVideo/styles.js","components/ContentBlocks/TextAndVideo/index.tsx","components/ContentBlocks/TextBoxes/styles.js","components/ContentBlocks/TextBoxes/index.tsx","components/ContentBlocks/TextAndImage/styles.js","components/ContentBlocks/TextAndImage/index.tsx","pages/DeveloperPage/styles.js","components/Developer/DeveloperHeader/styles.js","components/Developer/DeveloperHeader/index.tsx","components/Developer/DeveloperTabButtons/styles.js","components/Developer/DeveloperTabButtons/index.tsx","components/Developer/DeveloperBlocks/EditableImage/styles.js","components/Developer/DeveloperBlocks/EditableImage/index.tsx","components/Developer/DeveloperBlocks/DeveloperApartmentList/index.tsx","pages/DeveloperPage/index.tsx"],"names":["getID","props","item","anchorID","elementID","Object","defineProperty","exports","value","default","e","_image","__esModule","SmoothScroll","stop","clearTimeout","this","timer","scrollTo","id","callback","scrollSettings","hasWindow","settings","duration","easing","outQuint","x","t","b","c","d","percentage","startTime","node","document","getElementById","console","log","concat","nodeTop","offsetTop","offset","window","pageYOffset","targetY","getBoundingClientRect","height","Date","now","clearInterval","setTimeout","step","yScroll","elapsed","AnchorLink","children","tag","to","restProps","__rest","Tag","smooth","React","createElement","assign","onClick","_react","_interopRequireDefault","_render","_extends","bind","n","arguments","length","r","hasOwnProperty","call","apply","_toConsumableArray","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","Symbol","iterator","from","_iterableToArray","a","toString","slice","constructor","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","FrontComponent","_ref","doc","thumb","_ref$defaultValue","defaultValue","frontProps","src","thumbParams","fill","getThumb","relation","url","alt","ref","complete","onLoad","currentTarget","target","Image","displayName","defaultProps","extensions","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","undefined","Wrapper","Container","map","i","key","Background","tagName","stopPropagation","Text","placeholder","multiline","Editor","className","getAssetUrl","TAVContainer","reverse","TextAndVideo","video","videoSide","YoutubeEmbed","videoID","Input","type","TextBoxesTitle","H2","TextBoxesWrapper","invert","TextBox","_templateObject5","TextBoxIcon","TextBoxTitle","TextBoxContent","PSmall","buttons","textLinkPrimary","calculateTallestTitle","items","tallest","breakpoints","TextBoxes","hasGradientBg","textBoxesTitle","textBoxes","breakpoint","useRef","setTallest","useState","makeSameHeight","elems","innerWidth","onResize","debounce","current","querySelectorAll","useEffect","addEventListener","removeEventListener","grey","Repeater","limit","Fragment","textBoxIcon","style","TAIWrapper","TAIContent","TAIText","_templateObject6","PMedium","TAIImage","_templateObject7","_templateObject8","TextAndImage","imageSide","isLeft","getCta","obj","textAndImageCta","cta","textAndImageCtaHref","ctaHref","hasCta","charAt","substr","href","imageSizeProps","textAndImageImageWidth","textAndImageImageHeight","aspectRatio","ctaibImageSide","left","AdminTabHeader","rgba","DeveloperFormContainer","Header","HeaderContent","HeaderCtaBox","NewConstructionBadge","MicroTextCaps","SizeInfo","Size","span","_templateObject9","fontFamily","condensed","Spacer","_templateObject10","Address","_templateObject11","PriceInfo","MicroText","base","AdminFields","adminData","DeveloperHeader","data","isEmpty","address","city","maxLivingArea","maxRoomAmount","minLivingArea","minPrice","minRoomAmount","postcode","addressString","scrollToForm","scroller","maxHeight","FaIcon","icon","NumberFormat","thousandSeparator","displayType","suffix","CtaButton","DeveloperTabs","MediumText","TabsContainer","TabIndicator","DeveloperTabButtons","tabs","containerRef","indicatorRef","useTabIndicator","_ref2","tabUrl","tabName","Tab","ImageContainer","EditableImage","DeveloperApartmentList","housingCompanyData","properties","ApartmentGrid","connect","state","developerBlocks","DeveloperAgencies","DeveloperBodyText","location","canonicalPath","documentID","contactFormStyle","Blocklist","blocks","TabSwitcher","baseUrl","currentUrl","decodeURIComponent","pathname","emitChanges","renderHidden","TabPanel","whenActive","$$index","as","ScrollTargetElement","display","alignItems","justifyContent","ContactFormSelectable","split","developer"],"mappings":"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","file":"assets/js/pages-DeveloperPage.chunk.js?cb=364014b7d266a2423e74","sourcesContent":["import React from 'react';\n\nexport const getID = props => {\n\tif (props.item) {\n\t\treturn props.item.anchorID || props.item.elementID || null;\n\t} else if (props.anchorID || props.elementID) {\n\t\treturn props.anchorID || props.elementID;\n\t}\n\n\treturn null;\n};\n\n/* just a little helper for easier id check in the component */\nconst withID = Component => {\n\treturn props => {\n\t\tconst {\n\t\t\titem: {\n\t\t\t\tanchorID,\n\t\t\t\telementID,\n\t\t\t\t...rest\n\t\t\t},\n\t\t} = props;\n\n\t\tif (anchorID) {\n\t\t\trest['id'] = anchorID;\n\t\t} else if (elementID) {\n\t\t\trest['id'] = elementID;\n\t\t}\n\n\t\treturn ;\n\t};\n};\n\nexport default withID;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _image = _interopRequireDefault(require(\"./lib/image\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar _default = exports.default = _image.default;","import React from \"react\";\nimport { hasWindow } from \"@utils\";\n\nexport class SmoothScroll {\n\ttimer: number;\n\n\tstop() {\n\t\tclearTimeout(this.timer);\n\t}\n\n\tscrollTo(id: string, callback?: (e?: any) => void, scrollSettings?: any) {\n\t\tif (!hasWindow) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst settings = {\n\t\t\tduration: 1000,\n\t\t\teasing: {\n\t\t\t\toutQuint(x: number, t: number, b: number, c: number, d: number) {\n\t\t\t\t\treturn c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tlet percentage: number;\n\t\tlet startTime: number;\n\t\tconst node = document.getElementById(id);\n\t\tif (!node) {\n\t\t\tconsole.log(`This page does not have an element with provided ID: ${id}`);\n\t\t\treturn;\n\t\t}\n\t\tconst nodeTop = node.offsetTop;\n\t\tconst offset = window.pageYOffset;\n\t\tconst delta = nodeTop - offset - (scrollSettings && scrollSettings.offset ? scrollSettings.offset : 0);\n\t\tconst nav = document.getElementById(\"main-nav\");\n\t\tconst navHeight = nav.getBoundingClientRect().height;\n\n\t\tconst targetY = delta - navHeight;\n\n\t\tstartTime = Date.now();\n\t\tpercentage = 0;\n\n\t\tif (this.timer) {\n\t\t\tclearInterval(this.timer);\n\t\t}\n\n\t\tfunction step() {\n\t\t\tlet yScroll: number;\n\t\t\tconst elapsed = Date.now() - startTime;\n\n\t\t\tif (elapsed > settings.duration) {\n\t\t\t\tclearTimeout(this.timer);\n\t\t\t}\n\n\t\t\tpercentage = elapsed / settings.duration;\n\n\t\t\tif (percentage > 1) {\n\t\t\t\tclearTimeout(this.timer);\n\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tyScroll = settings.easing.outQuint(0, elapsed, offset, targetY, settings.duration);\n\t\t\t\twindow.scrollTo(0, yScroll);\n\t\t\t\tthis.timer = setTimeout(step, 10);\n\t\t\t}\n\t\t}\n\n\t\tthis.timer = window.setTimeout(step, 10);\n\t}\n}\n\ninterface IProps {\n\tchildren: any;\n\ttag?: string;\n\tto: string;\n\t[key: string]: any;\n}\n\nconst AnchorLink = (props: IProps) => {\n\tconst { children, tag, to, ...restProps } = props;\n\tconst Tag: any = tag || \"span\";\n\n\tconst smooth = new SmoothScroll();\n\tconst onClick = () => smooth.scrollTo(to);\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nexport default AnchorLink;\n","\"use strict\";\n\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 _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 _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? \"\" : _ref$defaultValue,\n frontProps = _ref.frontProps;\n var value = doc[name];\n if (!value) {\n return null;\n }\n var src = value.src || defaultValue;\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)));\n } else if (value && value.relation) {\n src = value.relation.url || src;\n }\n return /*#__PURE__*/_react.default.createElement(\"img\", _extends({\n src: src,\n alt: value.alt\n }, frontProps, {\n ref: function ref(node) {\n if (node && node.complete && frontProps.onLoad) {\n frontProps.onLoad({\n complete: true,\n currentTarget: node,\n target: node\n });\n }\n }\n }));\n};\nvar Image = function Image(props) {\n return (0, _render.default)(\"Image\", props, FrontComponent);\n};\nImage.displayName = \"Image\";\nImage.defaultProps = {\n extensions: [\"png\", \"gif\", \"jpg\", \"jpeg\", \"svg\"]\n};\nvar _default = exports.default = Image;","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 { media, color } from \"@utils/style-utils\";\n\nexport const TAVContainer = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 auto 50px;\n\tmax-width: 1130px;\n\n\t> div {\n\t\tdisplay: flex;\n\t\tflex-basis: 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\n\t\th3 {\n\t\t\tmargin: 0 0 35px;\n\t\t}\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\tflex-direction: row;\n\t\tmargin: 0 auto 90px;\n\n\t\t> div {\n\t\t\t&:first-of-type {\n\t\t\t\tflex-basis: 41.5%;\n\t\t\t\tpadding-right: 35px;\n\n\t\t\t\th3 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tmax-width: 311px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&:last-of-type {\n\t\t\t\tflex-basis: 58.5%;\n\t\t\t}\n\t\t}\n\t`};\n\n\t${props =>\n\t\tprops.reverse &&\n\t\tcss`\n\t\t\t${media.md`\n\t\t\t\tflex-direction: row-reverse;\n\n\t\t\t\t> div:first-of-type {\n\t\t\t\t\tpadding-right: 0;\n\t\t\t\t\tpadding-left: 35px;\n\t\t\t\t}\n\t\t\t`}\n\t\t`};\n`;\n","import React from \"react\";\nimport { Wrapper, Container } from \"@components/Grid\";\nimport Text from \"wake-react-components/text\";\nimport Input from \"wake-react-components/input\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport YoutubeEmbed from \"@components/Embeds/Youtube\";\nimport { getAssetUrl } from \"@utils\";\n\nimport { TAVContainer } from \"./styles\";\n\nconst TextAndVideo = (props: any = {}) => {\n\tconst {\n\t\titem: { video, videoSide = \"right\" },\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
\n\t\t\t\t\t\t{isAdmin &&

Lyhyt teksti

}\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{isAdmin &&

Youtube videon ID

}\n\t\t\t\t\t\t{isAdmin && }\n\t\t\t\t\t\t{video && }\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n};\n\nTextAndVideo.thumb = () => (\n\t
\n\t\t\"Videonosto\"\n\t\t

Videonosto

\n\t
\n);\n\nTextAndVideo.settings = () => (\n\t
\n\t\t\n\t\t\tElementin ID (esim ankkuriksi) \n\t\t\n\t\t\n\t\t
\n\t\t\tVideon puoli:\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t
\n);\n\nexport default TextAndVideo;\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 { textStyles, media, grid } from \"@utils/style-utils\";\n\nexport const TAIWrapper = styled.div`\n\tclear: both;\n\tmargin: 80px auto 0;\n\tmax-width: 1466px;\n\tpadding: 0 15px;\n\tposition: relative;\n`;\n\nexport const TAIContent = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 40px;\n\n\t${media.md`\n\t\talign-items: center;\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tmargin-bottom: 80px;\n\n\t\t&.image-left {\n\t\t\tflex-direction: row-reverse;\n\t\t}\n\t`};\n\n\t${media.lg`\n\t\tmargin-bottom: 100px;\n\t`};\n`;\n\nexport const TAIText = styled.div`\n\tmargin-bottom: 40px;\n\n\t${media.md`\n\t\talign-items: center;\n\t\tdisplay: flex;\n\t\tflex-basis: calc((100% - ${grid.gutterSmall}px) / 2);\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmargin-bottom: 0;\n\t\tpadding-left: 15px;\n\t\tpadding-right: 15px;\n\t\twidth: 50%;\n\t`};\n\n\t${media.lg`\n\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t`};\n\n\t.text-and-image-text {\n\t\t${media.md`\n\t\t\tmargin: 0 auto;\n\t\t\tmax-width: 545px;\n\n\t\t\t> :first-child {\n\t\t\t\tmargin-top: 0;\n\t\t\t}\n\t\t`};\n\t}\n\n\tul,\n\tol {\n\t\tpadding-left: 30px;\n\n\t\tli {\n\t\t\tmargin-bottom: 15px;\n\t\t\tpadding-left: 16px;\n\t\t}\n\t}\n\n\tp,\n\tli {\n\t\t${textStyles.PSmall};\n\n\t\t${media.lg`\n\t\t\t${textStyles.PMedium};\n\t\t`};\n\t}\n`;\n\nexport const TAIImage = styled.div`\n\t${media.md`\n\t\tflex-basis: calc((100% - ${grid.gutterSmall}px) / 2);\n\t`};\n\n\t${media.lg`\n\t\tflex-basis: calc((100% - ${grid.gutter}px) / 2);\n\t`};\n\n\timg {\n\t\tdisplay: block;\n\t\tmax-width: 100%;\n\t}\n`;\n","import React from \"react\";\nimport Image from \"wake-react-components/image\";\nimport Editor from \"wake-react-components/editor\";\nimport Input from \"wake-react-components/input\";\nimport Text from \"wake-react-components/text\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport { Wrapper } from \"@components/Grid\";\nimport AnchorLink from \"@utils/anchor-scroll\";\nimport Repeater from \"wake-react-components/repeater\";\nimport { getAssetUrl } from \"@utils\";\n\nimport { TAIContent, TAIImage, TAIText, TAIWrapper } from \"./styles\";\n\nconst TextAndImage = (props: any = {}) => {\n\tconst {\n\t\titem: { elementID = undefined, imageSide = \"right\" },\n\t\t...restProps\n\t} = props;\n\n\tif (elementID) {\n\t\trestProps[\"id\"] = elementID;\n\t}\n\n\tconst isLeft = imageSide === \"left\";\n\n\tconst getCta = (obj: any = {}) => {\n\t\tconst { textAndImageCta: cta, textAndImageCtaHref: ctaHref } = obj;\n\t\tconst hasCta = cta && ctaHref;\n\n\t\tif (!hasCta) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (ctaHref.charAt(0) === \"#\") {\n\t\t\tconst to = ctaHref.substr(1);\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{cta}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t{cta}\n\t\t\t\t\n\t\t\t);\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{({ item }) => {\n\t\t\t\t\t\tconst imageSizeProps: any = {};\n\t\t\t\t\t\tif (item.textAndImageImageWidth && item.textAndImageImageHeight) {\n\t\t\t\t\t\t\timageSizeProps.style = {\n\t\t\t\t\t\t\t\taspectRatio: 'auto ' + item.textAndImageImageWidth + ' / ' + item.textAndImageImageHeight,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{isAdmin && (\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tKuvan puoli  \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tKuvan koko \n\t\t\t\t\t\t\t\t\t\t\t x \n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\tCall to action? Linkin teksti:{\" \"}\n\t\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\tLinkin href tai elementin id:{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tVoit lisätä ankkurilinkin antamalla halutun elementin id:n muodossa:{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t#elementin-id\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{!isAdmin && getCta(item)}\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\nTextAndImage.settings = () => (\n\t
\n\t\t\n\t\t\tElementin ID (esim ankkuriksi) \n\t\t\n\t\t\n\t
\n);\n\nTextAndImage.thumb = () => (\n\t
\n\t\t\"Teksti\n\t\t

Teksti ja kuva

\n\t
\n);\n\nexport default TextAndImage;\n","import styled from \"styled-components\";\nimport { rgba } from \"polished\";\nimport { color, media } from \"@utils/style-utils\";\n\nexport const AdminTabHeader = styled.div`\n\tbackground: ${rgba(color(\"greenBright\", 4), 0.25)};\n\tpadding: 30px;\n`;\n\nexport const DeveloperFormContainer = styled.div`\n\tbackground-color: ${rgba(color(\"greenBright\", 4), 0.25)};\n\tbackground-image: url(\"/assets/images/brand-identity/graphics/form-bg-pattern.png\");\n\tbackground-position: 50% 100%;\n\tbackground-repeat: no-repeat;\n\tbackground-size: 1920px auto;\n\tmargin-bottom: 130px;\n\tmargin-top: 80px;\n\tpadding: 82px 15px 0;\n\tposition: relative;\n\twidth: 100%;\n\n\t.contact-form-selectable {\n\t\tmargin: 0 auto;\n\t\tmax-width: 1130px;\n\t\tpadding-left: 20px;\n\t\tpadding-right: 20px;\n\t\tpadding-bottom: 80px;\n\t\tposition: relative;\n\t\ttop: 30px;\n\t\tz-index: 99;\n\t}\n\n\t.form-container {\n\t\tmax-width: 500px;\n\n\t\t${media.md`\n\t\t\tmax-width: 662px;\n\t\t`};\n\n\t\tp {\n\t\t\tmargin-left: auto;\n\t\t\tmargin-right: auto;\n\n\t\t\t&.new {\n\t\t\t\tmargin-left: 0;\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\th4 {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.form-footer {\n\t\t\tmargin-top: 20px;\n\t\t}\n\t}\n\n\t.form-children {\n\t\tmargin-bottom: 40px;\n\t\ttext-align: center;\n\n\t\th1 {\n\t\t\tmargin-bottom: 40px;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: ${color(\"grey\", 2)};\n\t\t}\n\t}\n`;\n","import styled from \"styled-components\";\nimport { rgba } from \"polished\";\nimport { color, fontFamily, textStyles, media } from \"@utils/style-utils\";\n\nexport const Header = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 40px;\n\tpadding-top: 80px;\n\twidth: 100%;\n\n\t${media.md`\n\t\tpadding-top: 110px;\n\t`}\n\n\t${media.lg`\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tpadding-top: 144px;\n\t`}\n\n\th1 {\n\t\torder: 1;\n\n\t\t${media.lg`\n\t\t\torder: 2;\n\t\t\tmargin-top: 13px;\n\t\t`}\n\t}\n`;\n\nexport const HeaderContent = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t${media.lg`\n\t\tpadding-right: 40px;\n\t`}\n`;\n\nexport const HeaderCtaBox = styled.div`\n\tborder: 1px solid ${color(\"grey\", 5)};\n\tborder-radius: 4px;\n\tdisplay: flex;\n\tmargin-top: 60px;\n\tpadding: 30px 24px 22px;\n\tposition: relative;\n\twidth: 100%;\n\n\t${media.md`\n\t\tpadding: 34px 24px 28px;\n\t`}\n\n\t${media.lg`\n\t\tmargin-top: 0;\n\t\tpadding: 32px 24px;\n\t\twidth: 427px;\n\t`}\n\n\tbutton {\n\t\tflex-grow: 1;\n\t\theight: 100%;\n\t}\n`;\n\nexport const NewConstructionBadge = styled.div`\n\tmargin-left: 38px;\n\tmargin-right: 62px;\n\n\timg {\n\t\tdisplay: block;\n\t\tmargin: 0 auto 5px;\n\t\tmax-width: 88px;\n\t}\n\n\tspan {\n\t\t${textStyles.MicroTextCaps}\n\t\tcolor: ${color(\"greenDark\", 1)};\n\t\tdisplay: block;\n\t}\n\n\t@media (max-width: 991px) {\n\t\talign-items: center;\n\t\tbackground: ${color(\"white\")};\n\t\tdisplay: flex;\n\t\tleft: 50%;\n\t\tpadding: 0 12px;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\ttransform: translate(-50%, -50%);\n\n\t\timg {\n\t\t\tmargin: 0 12px 0 0;\n\t\t\tmax-width: 44px;\n\t\t}\n\t}\n\n`;\n\nexport const SizeInfo = styled.div`\n\tmargin-bottom: 26px;\n\torder: 2;\n\n\t${media.md`\n\t\tdisplay: flex;\n\t`}\n\n\t${media.lg`\n\t\tmargin-bottom: 0;\n\t\torder: 1;\n\t`}\n`;\n\nexport const Size = styled.span`\n\tcolor: ${color(\"greenBright\", 1)};\n\tfont-size: 20px;\n\tfont-weight: 500;\n\n\t${media.md`\n\t\tmargin-right: 24px;\n\t`}\n\n\tspan {\n\t\tcolor: ${color(\"grey\", 3)};\n\t\tfont-family: ${fontFamily.condensed};\n\t\tfont-weight: normal;\n\t\tmargin-left: 16px;\n\t}\n`;\n\nexport const Spacer = styled.span`\n\tbackground: ${color(\"grey\", 5)};\n\theight: 22px;\n\twidth: 1px;\n\n\t${media.md`\n\t\tdisplay: block;\n\t`}\n`;\n\nexport const Address = styled.span`\n\talign-items: center;\n\tcolor: ${color(\"grey\", 3)};\n\tdisplay: flex;\n\tfont-family: ${fontFamily.condensed};\n\tfont-size: 20px;\n\tmargin-top: 5px;\n\n\t${media.md`\n\t\tmargin-left: 24px;\n\t\tmargin-top: 0;\n\t`}\n\n\tspan.icon {\n\t\tcolor: ${color(\"greenBright\", 1)};\n\t\tfont-size: 14px;\n\t\tmargin-right: 8px;\n\n\t\tsvg {\n\t\t\tmax-width: 12px;\n\t\t}\n\t}\n`;\n\nexport const PriceInfo = styled.div`\n\tcolor: ${color(\"greenBright\", 1)};\n\tfont-family: ${fontFamily.condensed};\n\tfont-size: 24px;\n\tfont-weight: 500;\n\torder: 3;\n\n\tsmall {\n\t\t${textStyles.MicroText}\n\t\tcolor: ${color(\"grey\", 3)};\n\t\tdisplay: block;\n\t\tfont-family: ${fontFamily.base};\n\t\tfont-weight: 400;\n\t}\n`;\n\nexport const AdminFields = styled.div`\n\tbackground: ${rgba(color(\"blue\", 4), 0.25)};\n\tpadding: 30px;\n`;\n","import React, { Fragment } from \"react\";\nimport Text from \"wake-react-components/text\";\nimport Image from \"wake-react-components/image\";\n\nimport { isAdmin } from \"wake-react-components/utils\";\nimport { Container } from \"@components/Grid\";\nimport { getAssetUrl } from \"@utils/index\";\nimport {\n\tAdminFields,\n\tHeader,\n\tSizeInfo,\n\tAddress,\n\tSize,\n\tSpacer,\n\tPriceInfo,\n\tHeaderContent,\n\tHeaderCtaBox,\n\tNewConstructionBadge,\n} from \"./styles\";\nimport { FontAwesomeIcon as FaIcon } from \"@fortawesome/react-fontawesome\";\nimport NumberFormat from \"react-number-format\";\nimport CtaButton from \"@components/Buttons/CtaButton\";\nimport { scroller } from \"react-scroll\";\nimport isEmpty from \"lodash-es/isEmpty\";\n\nlet adminData = null;\n\nconst DeveloperHeader = ({ data }) => {\n\t/* storing the initial data for admin because onchange will for some reason discard housingCompanyData from document */\n\tif (!adminData && isAdmin) {\n\t\tadminData = data;\n\t}\n\n\tif (isEmpty(data) && !isAdmin) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst { address, city, maxLivingArea, maxRoomAmount, minLivingArea, minPrice, minRoomAmount, name, postcode } =\n\t\t\tdata || adminData || ({} as any);\n\t\tconst addressString = `${address}, ${city}, ${postcode}`;\n\n\t\tconst scrollToForm = () => {\n\t\t\tscroller.scrollTo(\"contact\", {\n\t\t\t\tsmooth: \"easeInOutCubic\",\n\t\t\t});\n\t\t};\n\n\t\treturn (\n\t\t\t\n\t\t\t\t{isAdmin && (\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\tTaloyhtiön nimi \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tRakennuttajan logo \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\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{minLivingArea}–{maxLivingArea} m²\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{minRoomAmount}h-{maxRoomAmount}h\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
\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\t{addressString}\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{!!name &&

{name}

}\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\tHinnat alkaen\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\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tUudiskohde\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tOta yhteyttä\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} catch (e) {\n\t\tconsole.log(e);\n\t\treturn null;\n\t}\n};\n\nexport default DeveloperHeader;\n","import styled from \"styled-components\";\nimport { textStyles, color, media } from \"@utils/style-utils\";\n\nexport const DeveloperTabs = styled.div`\n\tborder-bottom: 1px solid ${color(\"grey\", 5)};\n\tmargin: 0 auto;\n\tmargin-bottom: 50px;\n\tmax-width: 896px;\n\toverflow-x: auto;\n\t-webkit-overflow-scrolling: touch;\n\tposition: relative;\n\ttext-align: center;\n\twhite-space: nowrap;\n\n\t${media.md`\n\t\tmargin-bottom: 65px;\n\t`}\n\n\t${media.lg`\n\t\tmargin-bottom: 80px;\n\t`}\n\n\t.tab-button {\n\t\t${textStyles.MediumText}\n\t\tcolor: ${color(\"grey\", 2)};\n\t\tcursor: pointer;\n\t\tdisplay: inline-block;\n\t\tmargin: 0 12px;\n\t\tpadding: 18px 0;\n\t\ttransition: color 150ms;\n\n\t\t&:hover {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t}\n\n\t\t&:first-of-type {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t&:last-of-type {\n\t\t\tmargin-right: 0;\n\t\t}\n\n\t\t&--active {\n\t\t\tcolor: ${color(\"grey\", 1)};\n\t\t}\n\t}\n`;\n\nexport const TabsContainer = styled.div`\n\tdisplay: inline-block;\n\tposition: relative;\n`;\n\nexport const TabIndicator = styled.span`\n\tbackground: ${color(\"grey\", 1)};\n\tbottom: 0;\n\theight: 2px;\n\tleft: 0;\n\topacity: 0;\n\tposition: absolute;\n\ttransition: opacity 150ms 150ms, transform 150ms;\n\ttransform-origin: 0% 0%;\n\twidth: 100px;\n`;\n","import React, { useRef } from \"react\";\nimport { DeveloperTabs, TabIndicator, TabsContainer } from \"./styles\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport { Tab } from \"@components/TabSwitcher\";\nimport useTabIndicator from \"@hooks/use-tab-indicator\";\n\nconst DeveloperTabButtons = ({ tabs }) => {\n\tif (isEmpty(tabs)) {\n\t\treturn null;\n\t}\n\tconst containerRef = useRef(null);\n\tconst indicatorRef = useRef(null);\n\n\tuseTabIndicator(containerRef, indicatorRef);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{tabs.map(({ tabUrl, tabName }, i: number) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{tabName}\n\t\t\t\t\t\n\t\t\t\t))}\n\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default DeveloperTabButtons;\n","import styled from \"styled-components\";\nimport { media } from \"@utils/style-utils\";\n\nexport const ImageContainer = styled.div`\n\tmargin: 45px auto;\n\twidth: 100%;\n\n\t${media.md`\n\t\tmargin: 60px auto;\n\t`}\n\n\t${media.lg`\n\t\tmargin: 80px auto;\n\t`}\n\n\timg {\n\t\tdisplay: block;\n\t\tmargin: auto;\n\t\tmax-width: 100%;\n\t}\n`;\n","import React from \"react\";\nimport Image from \"wake-react-components/image\";\nimport { ImageContainer } from \"./styles\";\n\nconst EditableImage = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nEditableImage.thumb = () =>

Kuva

;\n\nexport default EditableImage;\n","import React from \"react\";\nimport ApartmentGrid from \"@components/ApartmentGrid\";\nimport { IDocument } from \"@redux/document\";\nimport { IApplicationState } from \"@redux\";\nimport { connect } from \"react-redux\";\nimport isEmpty from \"lodash-es/isEmpty\";\n\ninterface IProps {\n\tdoc: IDocument;\n}\n\nconst DeveloperApartmentList = ({ doc }: IProps) => {\n\ttry {\n\t\tconst { housingCompanyData } = doc || { housingCompanyData: {} };\n\t\tconst { properties } = housingCompanyData;\n\n\t\tif (isEmpty(properties)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ;\n\t} catch (e) {\n\t\treturn null;\n\t}\n};\n\nDeveloperApartmentList.thumb = () =>

Kohdelistaus (rakennuttaja)

;\n\nconst mapStateToProps = (state: IApplicationState) => ({\n\tdoc: state.document,\n});\n\nexport default connect(mapStateToProps)(DeveloperApartmentList);\n","import React, { Fragment } from \"react\";\nimport { connect } from \"react-redux\";\nimport { IApplicationState } from \"@redux\";\nimport { AdminTabHeader, DeveloperFormContainer } from \"./styles\";\nimport { Container } from \"@components/Grid\";\nimport { isAdmin } from \"wake-react-components/utils\";\nimport TabSwitcher, { TabPanel } from \"@components/TabSwitcher\";\nimport Blocklist from \"wake-react-components/blocklist\";\nimport Repeater from \"wake-react-components/repeater\";\nimport Text from \"wake-react-components/text\";\nimport isEmpty from \"lodash-es/isEmpty\";\nimport DeveloperHeader from \"@components/Developer/DeveloperHeader\";\nimport DeveloperTabButtons from \"@components/Developer/DeveloperTabButtons\";\nimport EditableImage from \"@components/Developer/DeveloperBlocks/EditableImage\";\nimport DeveloperAgencies from \"@components/Area/AreaBlocks/DeveloperAgencies\";\nimport DeveloperApartmentList from \"@components/Developer/DeveloperBlocks/DeveloperApartmentList\";\nimport DeveloperBodyText from \"@components/Developer/DeveloperBlocks/DeveloperBodyText\";\nimport ContactFormSelectable from \"@components/Form/ContactFormSelectable\";\nimport { Element as ScrollTargetElement } from \"react-scroll\";\nimport TextAndImage from \"@components/ContentBlocks/TextAndImage\";\nimport TextAndVideo from \"@components/ContentBlocks/TextAndVideo\";\nimport TextBoxes from \"@components/ContentBlocks/TextBoxes\";\nimport TwoTextBoxes from \"@components/ContentBlocks/TwoTextBoxes\";\nimport Input from \"wake-react-components/input\";\n\nconst developerBlocks = {\n\tDeveloperAgencies,\n\tDeveloperApartmentList,\n\tDeveloperBodyText,\n\tEditableImage,\n\tTextAndImage,\n\tTextAndVideo,\n\tTextBoxes,\n\tTwoTextBoxes,\n};\n\nconst DeveloperPage = ({ doc, location }) => {\n\tconst { tabs, canonicalPath, housingCompanyData, documentID, contactFormStyle = \"old\" } = doc;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{isAdmin && (\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\tTabin nimi:  \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\tTabin urlPart:  \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

Tabin sisältö

\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t\t{!isAdmin && !isEmpty(tabs) && (\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\t{({ item }) => {\n\t\t\t\t\t\t\t\treturn (\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\n\t\t\t\n\t\t\t\t{isAdmin &&
\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
}\n\t\t\t\t\n\t\t\t\t\t

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