{"version":3,"file":"component---src-templates-city-page-tsx-b06fc7250d87b963cdfd.js","mappings":"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","sources":["webpack://batmaid-www/./src/components/UTMCatcher.tsx","webpack://batmaid-www/./src/templates/Homepage/Offer.tsx","webpack://batmaid-www/./src/templates/Homepage/OurServices.tsx","webpack://batmaid-www/./src/templates/Homepage/CitiesServices.tsx","webpack://batmaid-www/./src/templates/CityPage.tsx","webpack://batmaid-www/./src/templates/Homepage/QuoteSection.tsx","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/array-includes.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/classof-raw.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/enum-bug-keys.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/indexed-object.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/length-of-array-like.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/math-trunc.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/object-keys-internal.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/to-absolute-index.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/to-indexed-object.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/to-integer-or-infinity.js","webpack://batmaid-www/../node_modules/gatsby/node_modules/core-js/internals/to-length.js"],"sourcesContent":["import React from \"react\";\n\nimport { IS_BROWSER } from \"@config/consts\";\nimport { UTM_ENDPOINT } from \"@config/endpoints\";\n\nimport { getQueryValue } from \"@services/QueryParamsParser/QueryParamsParser\";\nimport { ASYNC_ACTION_TYPES } from \"@services/FetchFacade\";\n\nimport { asyncActionCreator } from \"../services/AsyncActionCreator\";\n\ninterface UTMData {\n utm_medium?: string;\n utm_source?: string;\n utm_campaign?: string;\n utm_content?: string;\n utm_term?: string;\n}\n\nconst getUTMEndpointUrlWithQuery = (utmData: UTMData): string => {\n const queryValues = Object.entries(utmData).map(\n entry => `${entry[0]}=${entry[1]}`,\n );\n const query = queryValues.join(\"&\");\n\n return `${UTM_ENDPOINT}?${query}`;\n};\n\nconst UTMCatcher = (): null => {\n const putUTMTags = async (utmData: UTMData) => {\n const UTMEndpointUrlWithQuery = getUTMEndpointUrlWithQuery(utmData);\n\n await asyncActionCreator({\n url: UTMEndpointUrlWithQuery,\n action: \"\",\n method: ASYNC_ACTION_TYPES.PUT,\n });\n };\n\n React.useEffect(() => {\n if (!IS_BROWSER) {\n return;\n }\n\n const utmMedium = getQueryValue(window.location.href, \"utm_medium\");\n const utmSource = getQueryValue(window.location.href, \"utm_source\");\n const utmCampaign = getQueryValue(window.location.href, \"utm_campaign\");\n const utmContent = getQueryValue(window.location.href, \"utm_content\");\n const utmTerm = getQueryValue(window.location.href, \"utm_term\");\n\n const utm: UTMData = {\n ...(utmMedium && { utm_medium: utmMedium }),\n ...(utmSource && { utm_source: utmSource }),\n ...(utmCampaign && { utm_campaign: utmCampaign }),\n ...(utmContent && { utm_content: utmContent }),\n ...(utmTerm && { utm_term: utmTerm }),\n };\n\n if (Object.keys(utm).length) {\n putUTMTags(utm);\n }\n }, []);\n\n return null;\n};\n\nexport default UTMCatcher;\n","import React from \"react\";\nimport { IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport { BoxesProps, BoxesSection, DefaultCard } from \"./BoxesSection\";\n\ninterface WhatDoWeOfferCard {\n what_do_we_offer_card_image: {\n gatsbyImageData: IGatsbyImageData;\n };\n what_do_we_offer_card_image_mobile: {\n gatsbyImageData: IGatsbyImageData;\n };\n what_do_we_offer_card_title: { text: string };\n what_do_we_offer_card_list_element__1: { text: string };\n what_do_we_offer_card_list_element__2: { text: string };\n what_do_we_offer_card_list_element__3: { text: string };\n what_do_we_offer_card_list_element__4: { text: string };\n what_do_we_offer_card_list_element__5: { text: string };\n}\n\nexport interface OfferProps {\n what_do_we_offer_title: { text: string };\n what_do_we_offer_cards: WhatDoWeOfferCard[];\n what_do_we_offer_button_label?: {\n text: string;\n };\n what_do_we_offer_button_link?: {\n url: string | null;\n slug: string | null;\n relative: string | null;\n };\n}\n\ninterface ComponentOfferProps extends OfferProps {\n language?: string;\n}\n\nconst getTrimmedListOfBenefits = (card: WhatDoWeOfferCard): string[] =>\n [\n card.what_do_we_offer_card_list_element__1.text,\n card.what_do_we_offer_card_list_element__2.text,\n card.what_do_we_offer_card_list_element__3.text,\n card.what_do_we_offer_card_list_element__4.text,\n card.what_do_we_offer_card_list_element__5.text,\n ].filter(benefit => benefit);\n\nconst Offer = (props: ComponentOfferProps): React.ReactElement => {\n const isSectionLinkEnabled =\n !!(\n props.what_do_we_offer_button_link?.slug ||\n props.what_do_we_offer_button_link?.url ||\n props.what_do_we_offer_button_link?.relative\n ) && props.what_do_we_offer_button_label?.text;\n\n //@TODO: refactor prismic custom type to be the same\n const boxesData: BoxesProps = {\n language: props.language,\n section_title: props.what_do_we_offer_title,\n items: props.what_do_we_offer_cards.map(card => ({\n box_image: card.what_do_we_offer_card_image.gatsbyImageData,\n box_image_mobile: card.what_do_we_offer_card_image_mobile.gatsbyImageData,\n box_image_text: card.what_do_we_offer_card_title,\n list: getTrimmedListOfBenefits(card),\n })),\n ...(isSectionLinkEnabled && {\n section_link: {\n url: props.what_do_we_offer_button_link!.url,\n slug: props.what_do_we_offer_button_link!.slug,\n relative: props.what_do_we_offer_button_link!.relative,\n label: props.what_do_we_offer_button_label!.text,\n },\n }),\n };\n\n return ;\n};\n\nexport { Offer };\n","import { IGatsbyImageData } from \"gatsby-plugin-image\";\nimport React from \"react\";\n\nimport { ANCHOR_IDS } from \"@typings/anchorIds\";\n\nimport { BoxesProps, BoxesSection, DefaultCard } from \"./BoxesSection\";\n\ninterface Service {\n service_title: { text: string };\n service_image: { gatsbyImageData: IGatsbyImageData };\n service_link?: {\n slug?: string;\n url?: string;\n };\n}\n\nexport interface OurServicesProps {\n our_services_title: { text: string };\n our_services: Service[];\n isSectionWhite?: boolean;\n language: string;\n hideTilesWithoutLink?: boolean;\n}\n\nconst OurServices = (props: OurServicesProps): React.ReactElement => {\n //@TODO: refactor prismic custom type to be the same\n const boxesData: BoxesProps = {\n section_title: props.our_services_title,\n items: props.our_services.map(card => ({\n box_image: card.service_image.gatsbyImageData,\n box_image_text: card.service_title,\n service_link: card.service_link,\n })),\n language: props.language,\n };\n\n return (\n \n );\n};\n\nexport { OurServices };\n","import React from \"react\";\nimport { IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport { BoxesProps, BoxesSection, DefaultCard } from \"./BoxesSection\";\n\ninterface Location {\n image_caption: { text: string };\n city_image: {\n alt: string;\n gatsbyImageData: IGatsbyImageData;\n };\n service_link?: { slug: string };\n}\n\nexport interface CitiesServicesProps {\n enjoy_service_title: { text: string };\n enjoy_service_cities: Location[];\n language: string;\n}\n\nconst CitiesServices = (\n props: CitiesServicesProps,\n): React.ReactElement | null => {\n //@TODO: refactor prismic custom type to be the same\n const boxesData: BoxesProps = {\n section_title: props.enjoy_service_title,\n items: props.enjoy_service_cities.map(card => ({\n box_image: card.city_image.gatsbyImageData,\n box_image_text: card.image_caption,\n service_link: card.service_link,\n })),\n language: props.language,\n };\n\n if (boxesData.items.length) {\n return ;\n }\n\n return null;\n};\n\nexport { CitiesServices };\n","import * as React from \"react\";\nimport { graphql, PageProps } from \"gatsby\";\nimport { withPrismicPreview } from \"gatsby-plugin-prismic-previews\";\n\nimport { DEFAULT_LANGUAGE } from \"@config/consts\";\n\nimport { AVAILABLE_COUNTRIES, ORIGIN, SERVICE_TYPE } from \"@typings/globals\";\n\nimport theme from \"@ui/themes/default\";\n\nimport { langFromTag } from \"@services/LangFromTag/LangFromTag\";\n\nimport { useBreakpoint } from \"@hooks/useBreakpoint\";\n\nimport UTMCatcher from \"../components/UTMCatcher\";\nimport Layout from \"../components/Layout\";\nimport SEO, { SeoProps } from \"../components/SEO\";\n\nimport {\n HeroSection,\n HeroProps,\n SliceHeroProps,\n CitiesServices,\n CitiesServicesProps,\n Offer,\n OfferProps,\n CleaningTipsProps,\n QuoteSection,\n QuoteSectionProps,\n BecomeBatmaidSection,\n BecomeBatmaidProps,\n VideoSection,\n VideoProps,\n HowItWorks,\n HowItWorksProps,\n Partners,\n PartnersProps,\n OurServicesProps,\n OurServices,\n TextSection,\n TextSectionProps,\n} from \"./Homepage/\";\n\n// workaround for masive text replacement\n// https://batmaid.myjetbrains.com/youtrack/issue/OFF-1780/Replace-the-outdated-USPs-on-the-city-pages\nconst blacklistedTexts: Record = {\n \"Non-binding contract\": \"Same cleaning agent every time\",\n \"Unverbindlicher Vertrag\": \"Immer dieselbe Reinigungskraft\",\n \"Contrat sans engagement\": \"Toujours le même agent de ménage\",\n \"Contratto non vincolante\": \"Sempre lo stesso addetto alle pulizie\",\n \"Free cancellation up to 48h before your cleaning\":\n \"Mobile App and user-friendly online platform\",\n \"Kostenlose Stornierung bis zu 48h vor Ihrer Reinigung\":\n \"Mobile App und benutzerfreundliche Online-Plattform\",\n \"Annulation gratuite jusqu'à 48h avant votre ménage\":\n \"Application mobile et plateforme en ligne facile d'utilisation\",\n \"Cancellazione gratuita fino a 48 ore prima della pulizia\":\n \"App mobile e piattaforma online facile da usare\",\n};\n\ninterface PageData\n extends Omit,\n CitiesServicesProps,\n QuoteSectionProps,\n VideoProps,\n BecomeBatmaidProps,\n HowItWorksProps,\n CleaningTipsProps,\n SeoProps,\n PartnersProps,\n TextSectionProps,\n OfferProps,\n OurServicesProps,\n SeoProps {\n title: {\n text: string;\n };\n slug: {\n text: string;\n };\n body: SliceHeroProps[];\n}\n\ntype Props = PageProps<\n { prismicCityPage: { data: PageData } },\n {\n lang: string;\n origin: ORIGIN;\n country: AVAILABLE_COUNTRIES;\n }\n>;\n\nconst CityPage = (props: Props): React.ReactElement => {\n const [serviceType, setServiceType] = React.useState(\n SERVICE_TYPE.HOME_CLEANING,\n );\n\n const { data, pageContext } = props;\n const { prismicCityPage } = data;\n\n const { desktop, desktopLarge } = useBreakpoint(\"v1\");\n\n const language = langFromTag(pageContext.lang) || DEFAULT_LANGUAGE;\n\n const heroesList: typeof prismicCityPage.data.body = (() => {\n if (props.pageContext.country !== AVAILABLE_COUNTRIES.CH) {\n return prismicCityPage.data.body;\n }\n\n const result = [];\n\n for (let list of prismicCityPage.data.body) {\n const { primary } = list;\n const items = list.items.map(item => {\n const trimmedText = item.list_item.text.trim();\n\n if (Object.keys(blacklistedTexts).includes(trimmedText)) {\n item.list_item.text = blacklistedTexts[trimmedText];\n }\n\n return item;\n });\n\n result.push({\n primary,\n items,\n });\n }\n\n return result;\n })();\n\n const offerCards: typeof prismicCityPage.data.what_do_we_offer_cards =\n (() => {\n if (props.pageContext.country !== AVAILABLE_COUNTRIES.CH) {\n return prismicCityPage.data.what_do_we_offer_cards;\n }\n\n const result = [];\n\n for (let card of prismicCityPage.data.what_do_we_offer_cards) {\n const {\n what_do_we_offer_card_image,\n what_do_we_offer_card_image_mobile,\n what_do_we_offer_card_title,\n ...elements\n } = card;\n\n Object.keys(elements).map((key: keyof typeof elements) => {\n if (\n Object.keys(blacklistedTexts).includes(elements[key].text?.trim())\n ) {\n elements[key].text = blacklistedTexts[elements[key].text];\n }\n });\n\n result.push({\n what_do_we_offer_card_image,\n what_do_we_offer_card_image_mobile,\n what_do_we_offer_card_title,\n ...elements,\n });\n }\n\n return result;\n })();\n\n const heroData: HeroProps = {\n language,\n hero_image_mobile: prismicCityPage.data.hero_image_mobile,\n booking_form_submit: prismicCityPage.data.booking_form_submit,\n booking_form_placeholder: prismicCityPage.data.booking_form_placeholder,\n email_submit: prismicCityPage.data.email_submit,\n email_placeholder: prismicCityPage.data.email_placeholder,\n heroesList,\n landingUrl: `/${language}`,\n hero_breadcrumb_text: prismicCityPage.data.hero_breadcrumb_text,\n };\n\n const enjoyServiceData: CitiesServicesProps = {\n enjoy_service_title: prismicCityPage.data.enjoy_service_title,\n enjoy_service_cities: prismicCityPage.data.enjoy_service_cities,\n language,\n };\n\n const howItWorksData: HowItWorksProps = {\n how_it_works_title: prismicCityPage.data.how_it_works_title,\n how_it_works_title_mobile: prismicCityPage.data.how_it_works_title_mobile,\n how_it_works_step_one: prismicCityPage.data.how_it_works_step_one,\n how_it_works_step_one_icon: prismicCityPage.data.how_it_works_step_one_icon,\n how_it_works_step_two: prismicCityPage.data.how_it_works_step_two,\n how_it_works_step_two_icon: prismicCityPage.data.how_it_works_step_two_icon,\n how_it_works_step_three: prismicCityPage.data.how_it_works_step_three,\n how_it_works_step_three_icon:\n prismicCityPage.data.how_it_works_step_three_icon,\n iconsSecondaryColor: theme.palette.blue100,\n };\n\n const ourServicesData: OurServicesProps = {\n our_services_title: prismicCityPage.data.our_services_title,\n our_services: prismicCityPage.data.our_services,\n language,\n };\n\n const whyQuoteData: QuoteSectionProps = {\n quote_title: prismicCityPage.data.quote_title,\n quote_quote: prismicCityPage.data.quote_quote,\n quote_author: prismicCityPage.data.quote_author,\n };\n\n const videoData: VideoProps = {\n video_title: prismicCityPage.data.video_title,\n video_title_bottom: prismicCityPage.data.video_title_bottom,\n video_url: prismicCityPage.data.video_url,\n };\n\n const becomeBatmaidData: BecomeBatmaidProps = {\n become_cleaner_title: prismicCityPage.data.become_cleaner_title,\n become_cleaner_quote: prismicCityPage.data.become_cleaner_quote,\n become_cleaner_quote_author:\n prismicCityPage.data.become_cleaner_quote_author,\n become_cleaner_button_text: prismicCityPage.data.become_cleaner_button_text,\n become_cleaner_button_link: prismicCityPage.data.become_cleaner_button_link,\n lang: pageContext.lang,\n become_cleaner_image: prismicCityPage.data.become_cleaner_image,\n };\n\n // const cleaningTipsData: CleaningTipsProps = {\n // cleaning_tips_title: prismicCityPage.data.cleaning_tips_title,\n // blog_cards: prismicCityPage.data.blog_cards,\n // };\n\n const offerData: OfferProps = {\n what_do_we_offer_title: prismicCityPage.data.what_do_we_offer_title,\n what_do_we_offer_cards: offerCards,\n };\n\n const seoData: SeoProps = {\n seo_title: prismicCityPage.data.seo_title,\n seo_description: prismicCityPage.data.seo_description,\n seo_image: prismicCityPage.data.seo_image,\n };\n\n const partnersData: PartnersProps = {\n partners_logos: prismicCityPage.data.partners_logos,\n partners_title: prismicCityPage.data.partners_title,\n };\n\n const textSectionData: TextSectionProps = {\n text_section_title: prismicCityPage.data.text_section_title,\n text_section_text: prismicCityPage.data.text_section_text,\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n );\n};\n\nexport default withPrismicPreview(CityPage);\n\nexport const query = graphql`\n query CityPageQuery($id: String) {\n prismicCityPage(id: { eq: $id }) {\n _previewable\n lang\n data {\n slug {\n text\n }\n title {\n text\n }\n # ==== HERO SECTIONS ====\n hero_breadcrumb_text {\n text\n }\n hero_image_mobile {\n gatsbyImageData\n }\n\n body {\n ... on PrismicCityPageDataBodyLandingHero {\n primary {\n hero_type\n hero_section_title {\n text\n }\n hero_navigation_text {\n text\n }\n hero_section_description {\n text\n }\n hero_background_img {\n gatsbyImageData(width: 1920, imgixParams: { q: 90 })\n }\n button_text {\n text\n }\n button_link {\n text\n }\n }\n\n items {\n hero_description_image {\n gatsbyImageData\n }\n list_item {\n text\n }\n }\n }\n }\n\n # ==== SEO ====\n seo_title {\n text\n }\n seo_description {\n text\n }\n seo_image {\n gatsbyImageData(width: 1200)\n }\n # ==== EMAIL TEXTS (DEPRECATED) ====\n email_submit {\n text\n }\n email_placeholder {\n text\n }\n\n # ==== BOOKING FORM TEXTS ====\n booking_form_submit {\n text\n }\n booking_form_placeholder {\n text\n }\n\n # ==== CITIES SECTION ====\n enjoy_service_title {\n text\n }\n enjoy_service_cities {\n image_caption {\n text\n }\n city_image {\n alt\n gatsbyImageData(\n layout: CONSTRAINED\n width: 334\n imgixParams: { q: 95, fit: \"crop\", crop: \"faces\" }\n placeholderImgixParams: { q: 95, fit: \"crop\", crop: \"faces\" }\n sizes: \"(max-width: 360px) 135px, (max-width: 768px) 335px, (max-width: 991px) 148px, 168px\"\n placeholder: BLURRED\n )\n }\n service_link {\n slug\n }\n }\n # ==== HOW IT WORKS SECTION ====\n how_it_works_title {\n text\n }\n how_it_works_title_mobile {\n text\n }\n how_it_works_step_one {\n text\n }\n how_it_works_step_one_icon\n how_it_works_step_two {\n text\n }\n how_it_works_step_two_icon\n how_it_works_step_three {\n text\n }\n how_it_works_step_three_icon\n # ==== OURS SERVICES SECTION ====\n our_services_title {\n text\n }\n our_services {\n service_image {\n gatsbyImageData(\n layout: CONSTRAINED\n width: 334\n imgixParams: { q: 95, fit: \"crop\", crop: \"faces\" }\n sizes: \"(max-width: 360px) 132px, (max-width: 767px) 336px, (max-width: 991px) 140px, 184px\"\n placeholder: BLURRED\n )\n }\n service_title {\n text\n }\n service_link {\n slug\n }\n }\n # ==== QUOTE SECTION ====\n quote_title {\n text\n }\n quote_quote {\n text\n }\n quote_author {\n text\n }\n # ==== VIDEO SECTION ====\n video_title {\n text\n }\n video_url {\n url\n }\n video_title_bottom {\n text\n }\n # ==== BOOK CLEANING SECTION ====\n ready_to_book_title {\n text\n }\n ready_to_book_list {\n list_item {\n text\n }\n }\n ready_to_book_list_mobile {\n list_item {\n text\n }\n }\n ready_to_book_image {\n gatsbyImageData(\n layout: CONSTRAINED\n imgixParams: { q: 95 }\n width: 688\n )\n }\n # ==== BECOME BATMAID SECTION ====\n become_cleaner_title {\n text\n }\n become_cleaner_quote {\n text\n }\n become_cleaner_quote_author {\n text\n }\n become_cleaner_button_text {\n text\n }\n become_cleaner_button_link {\n text\n }\n become_cleaner_image {\n gatsbyImageData(\n layout: CONSTRAINED\n imgixParams: { q: 95 }\n placeholder: BLURRED\n )\n }\n # ==== TEXT SECTION ====\n text_section_text {\n text\n }\n text_section_title {\n text\n }\n # ==== CLEANING TIPS SECTION ====\n cleaning_tips_title {\n text\n }\n blog_cards {\n blog_card_title {\n text\n }\n blog_card_background_photo {\n gatsbyImageData\n }\n blog_card_hashtags {\n text\n }\n blog_card_link {\n text\n }\n }\n # ==== PARTNERS SECTION ====\n partners_title {\n text\n }\n partners_logos {\n partner_logo {\n alt\n gatsbyImageData(\n layout: CONSTRAINED\n imgixParams: { q: 100 }\n sizes: \"(max-width: 360px) 85px, 144px\"\n placeholder: BLURRED\n )\n }\n partner_link {\n url\n target\n }\n }\n # ==== WHAT DO WE OFFER SECTION ====\n what_do_we_offer_title {\n text\n }\n what_do_we_offer_cards {\n what_do_we_offer_card_image {\n gatsbyImageData(\n layout: CONSTRAINED\n width: 334\n imgixParams: { q: 95, fit: \"crop\", crop: \"faces\" }\n sizes: \"(max-width: 360px) 280px, (max-width: 767px) 687px, (max-width: 991px) 312px, 232px\"\n placeholder: BLURRED\n )\n }\n what_do_we_offer_card_image_mobile {\n gatsbyImageData(\n layout: CONSTRAINED\n imgixParams: { q: 95, minH: 191, fit: \"crop\", crop: \"faces\" }\n sizes: \"(max-width: 360px) 280px, (max-width: 767px) 687px, (max-width: 991px) 312px, 232px\"\n placeholder: BLURRED\n )\n }\n what_do_we_offer_card_title {\n text\n }\n what_do_we_offer_card_list_element__1 {\n text\n }\n what_do_we_offer_card_list_element__2 {\n text\n }\n what_do_we_offer_card_list_element__3 {\n text\n }\n what_do_we_offer_card_list_element__4 {\n text\n }\n what_do_we_offer_card_list_element__5 {\n text\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nimport { Container, Heading, Margins, Paragraph } from \"@ui/Atoms\";\nimport { rem } from \"@ui/helpers\";\n\nimport { useBreakpoint } from \"@hooks/useBreakpoint\";\nimport { useBrowserRerender } from \"@hooks/useBrowserRerender\";\n\nimport { StyledSection } from \"./shared\";\n\nexport interface QuoteSectionProps {\n quote_title: { text: string };\n quote_quote: { text: string };\n quote_author: { text: string };\n}\n\nconst QuoteSection = (props: QuoteSectionProps): React.ReactElement => {\n const isBrowser = useBrowserRerender();\n const { mobile, tablet } = useBreakpoint(\"v1\");\n const isMobile = mobile || tablet;\n\n return (\n
\n \n \n \n {props.quote_title.text}\n \n \n\n
\n \n {isMobile ? `„${props.quote_quote.text}”` : props.quote_quote.text}\n \n
\n \n {isMobile\n ? props.quote_author.text\n : `— ${props.quote_author.text} —`}\n \n
\n
\n );\n};\n\nexport { QuoteSection };\n\nconst Section = styled(StyledSection)`\n background: ${props => props.theme.palette.grey800};\n color: ${props => props.theme.palette.white};\n`;\n\nconst Quote = styled(Paragraph)`\n position: relative;\n margin: 0 auto;\n font-size: ${props => props.theme.fonts.sizes.h6};\n line-height: ${props => props.theme.fonts.lineHeights.h5};\n color: ${props => props.theme.palette.white};\n white-space: pre-line;\n text-align: left;\n font-size: ${props => props.theme.fonts.sizes.body};\n font-style: italic;\n\n ${props => props.theme.breakpoints.desktop} {\n font-size: ${props => props.theme.fonts.sizes.h5};\n text-align: center;\n\n &:before {\n content: \"''\";\n position: absolute;\n left: -${rem(20)};\n top: -${rem(20)};\n }\n\n &:after {\n content: \",,\";\n position: absolute;\n right: -${rem(20)};\n bottom: -${rem(20)};\n }\n }\n`;\n\nconst Author = styled.div`\n color: ${props => props.theme.palette.grey400};\n margin-top: ${props => props.theme.margins.base_x4};\n\n ${props => props.theme.breakpoints.desktop} {\n margin-top: ${props => props.theme.margins.base_x4};\n text-align: center;\n }\n`;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n"],"names":["UTMCatcher","putUTMTags","async","UTMEndpointUrlWithQuery","utmData","query","Object","entries","map","entry","join","UTM_ENDPOINT","getUTMEndpointUrlWithQuery","asyncActionCreator","url","action","method","ASYNC_ACTION_TYPES","PUT","React","IS_BROWSER","utmMedium","getQueryValue","window","location","href","utmSource","utmCampaign","utmContent","utmTerm","utm","utm_medium","utm_source","utm_campaign","utm_content","utm_term","keys","length","getTrimmedListOfBenefits","card","what_do_we_offer_card_list_element__1","text","what_do_we_offer_card_list_element__2","what_do_we_offer_card_list_element__3","what_do_we_offer_card_list_element__4","what_do_we_offer_card_list_element__5","filter","benefit","Offer","props","_props$what_do_we_off","_props$what_do_we_off2","_props$what_do_we_off3","_props$what_do_we_off4","isSectionLinkEnabled","what_do_we_offer_button_link","slug","relative","what_do_we_offer_button_label","boxesData","language","section_title","what_do_we_offer_title","items","what_do_we_offer_cards","box_image","what_do_we_offer_card_image","gatsbyImageData","box_image_mobile","what_do_we_offer_card_image_mobile","box_image_text","what_do_we_offer_card_title","list","section_link","label","BoxesSection","assign","isWhite","OurServices","our_services_title","our_services","service_image","service_title","service_link","id","ANCHOR_IDS","OUR_SERVICES","hideTilesWithoutLink","CitiesServices","enjoy_service_title","enjoy_service_cities","city_image","image_caption","blacklistedTexts","withPrismicPreview","_seoData$seo_title","serviceType","setServiceType","SERVICE_TYPE","HOME_CLEANING","data","pageContext","prismicCityPage","desktop","desktopLarge","useBreakpoint","langFromTag","lang","DEFAULT_LANGUAGE","heroesList","country","AVAILABLE_COUNTRIES","CH","body","result","primary","item","trimmedText","list_item","trim","includes","push","offerCards","elements","key","_elements$key$text","heroData","hero_image_mobile","booking_form_submit","booking_form_placeholder","email_submit","email_placeholder","landingUrl","hero_breadcrumb_text","enjoyServiceData","howItWorksData","how_it_works_title","how_it_works_title_mobile","how_it_works_step_one","how_it_works_step_one_icon","how_it_works_step_two","how_it_works_step_two_icon","how_it_works_step_three","how_it_works_step_three_icon","iconsSecondaryColor","theme","palette","blue100","ourServicesData","whyQuoteData","quote_title","quote_quote","quote_author","videoData","video_title","video_title_bottom","video_url","becomeBatmaidData","become_cleaner_title","become_cleaner_quote","become_cleaner_quote_author","become_cleaner_button_text","become_cleaner_button_link","become_cleaner_image","offerData","seoData","seo_title","seo_description","seo_image","partnersData","partners_logos","partners_title","textSectionData","text_section_title","text_section_text","Layout","origin","ORIGIN","BATMAID","isFullWidth","SEO","path","pathname","title","breadcrumbs","HeroSection","isCityPage","Partners","noPaddingBottom","HowItWorks","iconsSize","QuoteSection","VideoSection","BecomeBatmaidSection","withoutImage","TextSection","isBrowser","useBrowserRerender","mobile","tablet","isMobile","Section","Container","Margins","xs","lg","Heading","type","styleAs","color","textAlignXs","textAlignMd","textAlignLg","Quote","Author","styled","StyledSection","withConfig","displayName","componentId","grey800","white","Paragraph","fonts","sizes","h6","lineHeights","h5","breakpoints","rem","div","grey400","margins","base_x4","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","value","O","index","module","exports","indexOf","uncurryThis","toString","stringSlice","slice","it","fails","classof","$Object","split","propertyIsEnumerable","toLength","obj","ceil","Math","floor","trunc","x","n","hasOwn","hiddenKeys","object","names","i","toIntegerOrInfinity","max","min","integer","IndexedObject","requireObjectCoercible","argument","number"],"sourceRoot":""}