\n\nconst PhoneLink = (props: PhoneLinkProps) => {\n const { phone, labelPrefix, ...rest } = props\n if (!phone) {\n return null\n }\n const label = labelPrefix ? `${labelPrefix} ${phone}` : phone\n return (\n \n {label}\n \n )\n}\n\nexport default PhoneLink\n","import React from \"react\"\n//import * as styles from \"./Address.module.scss\"\n\ntype PostalAddressProps = {\n postOfficeBoxNumber?: string | null\n streetAddress?: string | null\n postalCode?: string | null\n addressLocality?: string | null\n addressRegion?: string | null\n addressCountry?: string | null\n labelPrefixPo?: string\n}\n\nconst PostalAddress = (props: PostalAddressProps) => {\n // console.log(\"Rendering Address\", data)\n\n return (\n \n {[\n props.postOfficeBoxNumber && props.labelPrefixPo\n ? `${props.labelPrefixPo} ${props.postOfficeBoxNumber}`\n : props.postOfficeBoxNumber,\n props.streetAddress,\n [props.postalCode, props.addressLocality].filter(i => i).join(\" \"),\n [props.addressRegion, props.addressCountry?.toUpperCase()].filter(i => i).join(\", \"),\n ]\n .filter(i => i)\n .join(\"\\n\")}\n
\n )\n}\n\nexport default PostalAddress\n","import loadable from \"@loadable/component\"\nimport React from \"react\"\nimport DatoHighlightToExternalUrl from \"./blocks/DatoHighlightToExternalUrl\"\nimport type { DatoImageGalleryProps } from \"./blocks/DatoImageGallery\"\nimport DatoKlaviyoFormEmbed from \"./blocks/DatoKlaviyoFormEmbed\"\nimport type { DatoProductFilterProps } from \"./blocks/DatoProductFilter\"\n\nconst DatoApplicationDownload = loadable(() => import(\"./blocks/DatoApplicationDownload\"))\nconst DatoArticleFinder = loadable(() => import(\"./blocks/DatoArticleFinder\"))\nconst DatoBrochureList = loadable(() => import(\"./blocks/DatoBrochureList\"))\nconst DatoContactCollectionRef = loadable(() => import(\"./blocks/DatoContactCollectionRef\"))\nconst DatoContactLocationBlock = loadable(() => import(\"./blocks/DatoContactLocationBlock\"))\nconst DatoContactPersons = loadable(() => import(\"./blocks/DatoContactPersons\"))\nconst DatoCtaRef = loadable(() => import(\"./blocks/DatoCtaRef\"))\nconst DatoCtaToArticle = loadable(() => import(\"./blocks/DatoCtaToArticle\"))\nconst DatoCtaToExternalUrl = loadable(() => import(\"./blocks/DatoCtaToExternalUrl\"))\nconst DatoCtaToPage = loadable(() => import(\"./blocks/DatoCtaToPage\"))\nconst DatoCtaToProduct = loadable(() => import(\"./blocks/DatoCtaToProduct\"))\nconst DatoCtaToProductFinder = loadable(() => import(\"./blocks/DatoCtaToProductFinder\"))\nconst DatoDealerFinder = loadable(() => import(\"./blocks/DatoDealerFinder\"))\nconst DatoExternalVideo = loadable(() => import(\"./blocks/DatoExternalVideo\"))\nconst DatoFAQ = loadable(() => import(\"./blocks/DatoFaq\"))\nconst DatoForm = loadable(() => import(\"./blocks/DatoForm\"))\nconst DatoHighlightToArticle = loadable(() => import(\"./blocks/DatoHighlightToArticle\"))\nconst DatoHighlightToPage = loadable(() => import(\"./blocks/DatoHighlightToPage\"))\nconst DatoHighlightToProduct = loadable(() => import(\"./blocks/DatoHighlightToProduct\"))\nconst DatoHighlightToProductFinder = loadable(() => import(\"./blocks/DatoHighlightToProductFinder\"))\nconst DatoIframeBlock = loadable(() => import(\"./blocks/DatoIframeBlock\"))\nconst DatoImageGallery = loadable(() => import(\"./blocks/DatoImageGallery\"))\nconst DatoLatestArticles = loadable(() => import(\"./blocks/DatoLatestArticles\"))\nconst DatoMediaBlock = loadable(() => import(\"./blocks/DatoMediaBlock\"))\nconst DatoMediaWithText = loadable(() => import(\"./blocks/DatoMediaWithText\"))\nconst DatoModularContentRef = loadable(() => import(\"./blocks/DatoModularContentRef\"))\nconst DatoNumberFacts = loadable(() => import(\"./blocks/DatoNumberFacts\"))\nconst DatoPickedArticles = loadable(() => import(\"./blocks/DatoPickedArticles\"))\nconst DatoProductFilter = loadable(() => import(\"./blocks/DatoProductFilter\"))\nconst DatoProductFinderLinkBar = loadable(() => import(\"./blocks/DatoProductFinderLinkBar\"))\nconst DatoProductFinderTabs = loadable(() => import(\"./blocks/DatoProductFinderTabs\"))\nconst DatoSaunaCalculatorBlock = loadable(() => import(\"./blocks/DatoSaunaCalculatorBlock\"))\nconst DatoSaunaPlannerBlock = loadable(() => import(\"./blocks/DatoSaunaPlannerBlock\"))\nconst DatoTabularContent = loadable(() => import(\"./blocks/DatoTabularContent\"))\nconst DatoTextBlock = loadable(() => import(\"./blocks/DatoTextBlock\"))\nconst DatoTileGrid = loadable(() => import(\"./blocks/DatoTileGrid\"))\nconst DatoVideoWithText = loadable(() => import(\"./blocks/DatoVideoWithText\"))\nconst DatoTypeform = loadable(() => import(\"./blocks/DatoTypeform\"))\nconst DatoProductFilesList = loadable(() => import(\"./blocks/DatoProductFilesList\"))\nconst DatoLeadooDynamicEmbedding = loadable(() => import(\"./blocks/DatoLeadooDynamicEmbedding\"))\n\nexport type DatoBlockProps =\n | ({ __typename: \"DatoCmsApplicationDownload\" } & Queries.DatoApplicationDownloadFragment)\n | ({ __typename: \"DatoCmsArticleFinder\" } & Queries.DatoArticleFinderFragment)\n | ({ __typename: \"DatoCmsBrochureList\" } & Queries.DatoBrochureListBlockFragment)\n | ({ __typename: \"DatoCmsContactCollectionRef\" } & Queries.DatoContactCollectionRefFragment)\n | ({ __typename: \"DatoCmsContactLocationBlock\" } & Queries.DatoContactLocationBlockFragment)\n | ({ __typename: \"DatoCmsContactPersonSet\" } & Queries.DatoContactPersonsFragment)\n | ({ __typename: \"DatoCmsCtaToArticle\" } & Queries.DatoCtaToArticleFragment)\n | ({ __typename: \"DatoCmsCtaToExternalUrl\" } & Queries.DatoCtaToExternalUrlFragment)\n | ({ __typename: \"DatoCmsCtaToPage\" } & Queries.DatoCtaToPageFragment)\n | ({ __typename: \"DatoCmsCtaRef\" } & Queries.DatoCtaRefFragment)\n | ({ __typename: \"DatoCmsCtaToProduct\" } & Queries.DatoCtaToProductFragment)\n | ({ __typename: \"DatoCmsCtaToProductFinder\" } & Queries.DatoCtaToProductFinderFragment)\n | ({ __typename: \"DatoCmsDealerFinder\" } & Queries.DatoDealerFinderFragment)\n | ({ __typename: \"DatoCmsExternalVideo\" } & Queries.DatoExternalVideoFragment)\n | ({ __typename: \"DatoCmsHighlightToPage\" } & Queries.DatoHighlightToPageFragment)\n | ({ __typename: \"DatoCmsIframeBlock\" } & Queries.DatoIframeBlockFragment)\n | ({ __typename: \"DatoCmsImageGallery\" } & DatoImageGalleryProps)\n | ({ __typename: \"DatoCmsLatestArticleSet\" } & Queries.DatoLatestArticlesFragment)\n | ({ __typename: \"DatoCmsHighlightToArticle\" } & Queries.DatoHighlightToArticleFragment)\n | ({ __typename: \"DatoCmsHighlightToProduct\" } & Queries.DatoHighlightToProductFragment)\n | ({ __typename: \"DatoCmsHighlightToProductFinder\" } & Queries.DatoHighlightToProductFinderFragment)\n | ({ __typename: \"DatoCmsHighlightToExternalUrl\" } & Queries.DatoHighlightToExternalUrlFragment)\n | ({ __typename: \"DatoCmsMediaBlock\" } & Queries.DatoMediaBlockFragment)\n | ({ __typename: \"DatoCmsMediaWithText\" } & Queries.DatoMediaWithTextFragment)\n | ({ __typename: \"DatoCmsModularContentRef\" } & Queries.DatoModularContentRefFragment)\n | ({ __typename: \"DatoCmsNumberFactSet\" } & Queries.DatoNumberFactsFragment)\n | ({ __typename: \"DatoCmsPickedArticleSet\" } & Queries.DatoPickedArticlesFragment)\n | ({ __typename: \"DatoCmsProductFilter\" } & DatoProductFilterProps)\n | ({ __typename: \"DatoCmsProductFinderTabSet\" } & Queries.DatoProductFinderTabsFragment)\n | ({ __typename: \"DatoCmsProductFinderLinkBar\" } & Queries.DatoProductFinderLinkBarFragment)\n | ({ __typename: \"DatoCmsSaunaCalculatorBlock\" } & Queries.DatoSaunaCalculatorBlockFragment)\n | ({ __typename: \"DatoCmsSaunaPlannerBlock\" } & Queries.DatoSaunaPlannerBlockFragment)\n | ({ __typename: \"DatoCmsTabularContent\" } & Queries.DatoTabularContentFragment)\n | ({ __typename: \"DatoCmsTextBlock\" } & Queries.DatoTextBlockFragment)\n | ({ __typename: \"DatoCmsTileGrid\" } & Queries.DatoTileGridFragment)\n | ({ __typename: \"DatoCmsVideoWithText\" } & Queries.DatoVideoWithTextFragment)\n | ({ __typename: \"DatoCmsForm\" } & Queries.DatoFormFragment)\n | ({ __typename: \"DatoCmsFaq\" } & Queries.DatoFAQFragment)\n | ({ __typename: \"DatoCmsTypeform\" } & Queries.DatoTypeformFragment)\n | ({ __typename: \"DatoCmsProductFilesList\" } & Queries.DatoProductFilesListFragment)\n | ({ __typename: \"DatoCmsKlaviyoFormEmbed\" } & Queries.DatoKlaviyoFormEmbedFragment)\n | ({ __typename: \"DatoCmsLeadooDynamicEmbedding\" } & Queries.DatoLeadooDynamicEmbeddingFragment)\n\n/**\n * Mappaa Datosta block-tyyppiset sisällöt React komponetteihin.\n */\nconst DatoBlock = (props: DatoBlockProps) => {\n // console.debug(\"Rendering DatoBlock\", props)\n switch (props.__typename) {\n case \"DatoCmsApplicationDownload\":\n return \n case \"DatoCmsArticleFinder\":\n return \n case \"DatoCmsBrochureList\":\n return \n case \"DatoCmsContactCollectionRef\":\n return \n case \"DatoCmsContactLocationBlock\":\n return \n case \"DatoCmsContactPersonSet\":\n return \n case \"DatoCmsCtaToArticle\":\n return \n case \"DatoCmsCtaToExternalUrl\":\n return \n case \"DatoCmsCtaToPage\":\n return \n case \"DatoCmsCtaRef\":\n return \n case \"DatoCmsCtaToProduct\":\n return \n case \"DatoCmsCtaToProductFinder\":\n return \n case \"DatoCmsDealerFinder\":\n return \n case \"DatoCmsExternalVideo\":\n return \n case \"DatoCmsHighlightToPage\":\n return \n case \"DatoCmsIframeBlock\":\n return \n case \"DatoCmsImageGallery\":\n return \n case \"DatoCmsLatestArticleSet\":\n return \n case \"DatoCmsHighlightToArticle\":\n return \n case \"DatoCmsHighlightToProduct\":\n return \n case \"DatoCmsHighlightToProductFinder\":\n return \n case \"DatoCmsHighlightToExternalUrl\":\n return \n case \"DatoCmsMediaBlock\":\n return \n case \"DatoCmsMediaWithText\":\n return \n case \"DatoCmsModularContentRef\":\n return \n case \"DatoCmsNumberFactSet\":\n return \n case \"DatoCmsPickedArticleSet\":\n return \n case \"DatoCmsProductFilter\":\n return \n case \"DatoCmsProductFinderTabSet\":\n return \n case \"DatoCmsProductFinderLinkBar\":\n return \n case \"DatoCmsSaunaCalculatorBlock\":\n return \n case \"DatoCmsSaunaPlannerBlock\":\n return \n case \"DatoCmsTabularContent\":\n return \n case \"DatoCmsTextBlock\":\n return \n case \"DatoCmsTileGrid\":\n return \n case \"DatoCmsVideoWithText\":\n return \n case \"DatoCmsForm\":\n return \n case \"DatoCmsFaq\":\n return \n case \"DatoCmsTypeform\":\n return \n case \"DatoCmsProductFilesList\":\n return \n case \"DatoCmsKlaviyoFormEmbed\":\n return \n case \"DatoCmsLeadooDynamicEmbedding\":\n return \n default:\n console.warn(\"Unmapped module:\", (props as any).__typename)\n return null\n }\n}\n\nexport default DatoBlock\n","import { graphql } from \"gatsby\"\nimport React from \"react\"\nimport DatoBlock, { DatoBlockProps } from \"./DatoBlock\"\n\n//import * as styles from \"./DatoPageModules.module.scss\"\n\nexport type DatoModularContent = DatoBlockProps\n\ntype DatoContentModulesProps =\n | Queries.DatoSharedModularContentModulesFragment\n | Queries.DatoPageModulesFragment\n | Queries.DatoProductLandingPageModulesFragment\n | Queries.DatoArticleModulesFragment\n | { modules: Queries.DatoFooterFragment[\"content\"] }\n\nconst DatoContentModules = (props: DatoContentModulesProps) => {\n // console.debug(\"Rendering DatoContentModules\", props)\n\n if (!props.modules) {\n return null\n }\n\n return props.modules.map(module => {\n return module ? : null\n })\n}\n\nexport default DatoContentModules\n\n/**\n * Eri sivujen mahdolliset modular contentit + shared modular content\n * Yritetään pitää listat aakkosjärjestyksessä\n */\nexport const query = graphql`\n fragment DatoSharedModularContentModules on DatoCmsSharedModularContent {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoExternalVideo\n ...DatoFAQ\n ...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n #...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n #...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n #...DatoTypeform # not enabled for lack of content => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n fragment DatoPageModules on DatoCmsPage {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoArticleFinder\n ...DatoBrochureListBlock\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoDealerFinder\n ...DatoExternalVideo\n ...DatoFAQ\n ...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n ...DatoSaunaPlannerBlock\n ...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n ...DatoProductFilesList\n ...DatoTypeform # not enabled for lack of content or not in model validation rules => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n\n fragment DatoProductLandingPageModules on DatoCmsProductLandingPage {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoDealerFinder\n ...DatoExternalVideo\n ...DatoFAQ\n #...DatoForm\n ...DatoHighlightToArticle\n ...DatoHighlightToExternalUrl\n ...DatoHighlightToPage\n ...DatoHighlightToProduct\n ...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n ...DatoProductFinderTabs\n ...DatoSaunaCalculatorBlock\n ...DatoSaunaPlannerBlock\n ...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n ...DatoTypeform\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n fragment DatoArticleModules on DatoCmsArticle {\n modules {\n ... on Node {\n key: id\n __typename\n }\n ...DatoApplicationDownload\n ...DatoContactCollectionRef\n ...DatoContactLocationBlock\n ...DatoContactPersons\n ...DatoCtaToArticle\n ...DatoCtaToExternalUrl\n #...DatoCtaToExternalUrlRef\n ...DatoCtaToPage\n ...DatoCtaRef\n ...DatoCtaToProduct\n ...DatoCtaToProductFinder\n ...DatoExternalVideo\n ...DatoFAQ\n #...DatoForm\n #...DatoHighlightToArticle\n #...DatoHighlightToPage\n #...DatoHighlightToProduct\n #...DatoHighlightToProductFinder\n ...DatoIframeBlock\n ...DatoImageGallery\n ...DatoLatestArticles\n ...DatoMediaBlock\n ...DatoMediaWithText\n ...DatoModularContentRef\n ...DatoNumberFacts\n ...DatoPickedArticles\n ...DatoProductFilter\n ...DatoProductFinderLinkBar\n #...DatoProductFinderTabs\n #...DatoTabularContent\n ...DatoTextBlock\n ...DatoTileGrid\n ...DatoVideoWithText\n #...DatoTypeform # not enabled for lack of content => GraphQL error\n ...DatoKlaviyoFormEmbed\n ...DatoLeadooDynamicEmbedding\n }\n }\n`\n","import { graphql } from \"gatsby\"\nimport { GatsbyImage, GatsbyImageProps, IGatsbyImageData } from \"gatsby-plugin-image\"\nimport React from \"react\"\n//import * as styles from \"./DatoImage.module.scss\"\n\n/**\n * Focal point \"boost\" calculator. Converts focalpoint values (0-1) to CSS objectPosition values (0-100) with a boost.\n * Boost is used as a multiplier to move focalpoint further away from center which suits most \"normal\" images better(?)\n * @param num\n * @param boost\n * @returns\n */\nfunction focalpointToCssPos(num: number, boost = 1.5) {\n return Math.min(Math.max((num - 0.5) * boost + 0.5, 0), 1) * 100\n}\n\n/**\n * Välikerros kuvan käsittelyyn, jotta helpompi päivittää uuteen plugariin aikanaan.\n */\nexport type DatoImageProps = Omit & {\n focalPoint?: { x: number; y: number } | null\n image?: IGatsbyImageData | Record | null\n}\n\nconst DatoImage = (props: DatoImageProps) => {\n // console.debug(\"Rendering DatoImage\", props)\n\n const { focalPoint, alt = \"\", ...rest } = props\n\n if (!props.image) {\n // console.error(\"Tried to render DatoImage without image prop\")\n return null\n }\n\n // boostataan focalpointin sijaintia kauemmas keskustasta, jolloin \"normaalin\" muotoiset kuvat rajautuu lähemmäs tavoitetta\n // TODO miksi käytetään CSS objectPosition? Miksi ylipäätään tarpeellinen?\n const imgStyle = focalPoint\n ? {\n ...props.imgStyle,\n objectPosition: `${focalpointToCssPos(focalPoint.x)}% ${focalpointToCssPos(focalPoint.y)}%`,\n }\n : props.imgStyle\n\n const image: IGatsbyImageData = {\n ...(props.image as IGatsbyImageData),\n images: {\n ...(props.image as IGatsbyImageData).images,\n },\n }\n /**\n * Korjaus GatsbyImagen / Dato source pluginin bugiin:\n * Jos kuvan tyyppi on (Datossa) image/tif, kuva ei tule näkyviin sivulle, vaikka source oikeasti tulee datocsm.asset.com CDN:stä jpg/webp/avif muodossa.\n * Epäselvää miksi tämä tehdää juuri näin.\n */\n if (image.images && !image.images.fallback && image.images.sources?.[0]) {\n // deep clone to avoid mutating props by reference\n image.images.fallback = {\n sizes: \"100vw\",\n src: image.images?.sources[0].srcSet.split(\" \")[0],\n srcSet: image.images.sources[0].srcSet,\n }\n }\n\n return \n}\n\nexport default DatoImage\n\nexport const query = graphql`\n fragment DatoImageDefault on DatoCmsFileField {\n alt\n image: gatsbyImageData(width: 1000, placeholder: BLURRED, layout: FULL_WIDTH)\n focalPoint {\n x\n y\n }\n }\n`\n","import React from \"react\"\nimport { slugify } from \"../../../utils\"\nimport BackgroundMedia, { BackgroundMediaProps } from \"../BackgroundMedia\"\nimport HighlightBlock, { HighlightBlockLayout } from \"./HighlightBlock\"\n//import * as styles from \"./HighlightToExternalUrlBlock.module.scss\"\n\ntype HighlightToExternalUrlBlockProps = {\n text?: string | null\n title?: string | null\n media?: Queries.DatoMediaFragment | null // TODO pass a ReactElement instead\n url?: string | null\n layout?: string | null\n}\n\nconst HighlightToExternalUrlBlock = (props: HighlightToExternalUrlBlockProps) => {\n //console.log('Rendering HighlightToExternalUrlBlock', props)\n\n return (\n }\n title={props.title}\n titleAs=\"h2\"\n content={props.text && {props.text}
}\n />\n )\n}\n\nexport default HighlightToExternalUrlBlock\n","import { graphql } from \"gatsby\"\nimport React from \"react\"\nimport HighlightToExternalUrlBlock from \"../../molecules/tileable-blocks/HighlightToExternalUrlBlock\"\n//import * as styles from \"./DatoHighlightToExternalUrl.module.scss\"\n\nconst DatoHighlightToExternalUrl = (props: Queries.DatoHighlightToExternalUrlFragment) => {\n // console.debug('Rendering DatoHighlightToExternalUrl', props)\n return \n}\n\nexport default DatoHighlightToExternalUrl\n\nexport const query = graphql`\n fragment DatoHighlightToExternalUrl on DatoCmsHighlightToExternalUrl {\n id: originalId # Korjaus daton bugiin, jos käytetään structured textissä\n text\n title\n media {\n ...DatoMedia\n }\n url\n layout\n }\n`\n","import { Script, ScriptStrategy, graphql } from \"gatsby\"\nimport React from \"react\"\n// import * as styles from \"./DatoKlaviyoFormEmbed.module.scss\"\n\ntype DatoKlaviyoFormEmbedProps = Queries.DatoKlaviyoFormEmbedFragment\n\nconst DatoKlaviyoFormEmbed = (props: DatoKlaviyoFormEmbedProps) => {\n // console.log('Rendering DatoKlaviyoFormEmbed', props)\n return (\n \n