{"version":3,"file":"component---src-templates-blog-page-js-837981cfde76843c167c.js","mappings":"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","sources":["webpack://shadepro-gatsby/./src/components/Blog/ArticleBody.js","webpack://shadepro-gatsby/./src/components/Blog/CategoryWidget.js","webpack://shadepro-gatsby/./src/assets/image/spyserp/404.jpeg","webpack://shadepro-gatsby/./src/components/NotFound.js","webpack://shadepro-gatsby/./src/i18n/Helmet.js","webpack://shadepro-gatsby/./src/assets/image/spyserp/ogp-image.jpg","webpack://shadepro-gatsby/./src/components/Seo/MetaTags.js","webpack://shadepro-gatsby/./src/components/Blog/SimilarArticles.js","webpack://shadepro-gatsby/./src/services/JsonScripts.js","webpack://shadepro-gatsby/./node_modules/date-fns/esm/formatISODuration/index.js","webpack://shadepro-gatsby/./src/components/Seo/StructuredBreadcrumbs.js","webpack://shadepro-gatsby/./src/components/Blog/BlogPage.js","webpack://shadepro-gatsby/./src/templates/blog-page.js","webpack://shadepro-gatsby/./src/assets/icons/font-awesome/solid/search.svg","webpack://shadepro-gatsby/./src/assets/icons/font-awesome/solid/times.svg"],"sourcesContent":["import React from 'react';\nimport { Row, Col, Container } from 'react-bootstrap';\nimport { GatsbyImage, getImage } from 'gatsby-plugin-image';\n\nconst ArticleBody = ({ items, pageUrl }) => {\n const faq = items.reduce(\n (acc, item) => {\n if (item.ldJsonQuestion && item.ldJsonAnswer) {\n acc.mainEntity.push({\n '@type': 'Question',\n name: item.ldJsonQuestion,\n acceptedAnswer: {\n '@type': 'Answer',\n text: item.ldJsonAnswer,\n },\n });\n }\n\n return acc;\n },\n {\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: [],\n }\n );\n\n return (\n \n {faq.mainEntity.length > 0 && (\n \n )}\n\n {items.map((item) => {\n const {\n id,\n typeHandle,\n heading = false,\n headingId = null,\n headingClass = null,\n sectionHeading = false,\n pullQuote = false,\n image = false,\n text = false,\n quote = false,\n attribution = false,\n buttonTitle = false,\n buttonType = false,\n buttonUrl = false,\n table = false,\n tablecolumncount = false,\n stepimage = false,\n stepname = false,\n stepnameasheading = false,\n stepnametext = false,\n stepurl = false,\n stepitemhowtodirection = false,\n stepitemhowtotip = false,\n } = item;\n\n if (typeHandle === 'text') {\n return (\n \n \n \n \n \n );\n }\n\n if (typeHandle === 'heading') {\n return (\n \n \n

{heading}

\n \n
\n );\n }\n\n if (typeHandle === 'image') {\n if (!image[0]) {\n console.error(`No image data on ${pageUrl}`);\n return null;\n }\n\n const { localFile, title, url } = image[0];\n const gatsbyImage = getImage(localFile);\n\n return (\n \n \n \n {gatsbyImage && (\n \n )}\n\n {!gatsbyImage && url && (\n \n )}\n \n \n );\n }\n\n if (typeHandle === 'button') {\n return (\n \n \n \n {buttonTitle}\n \n \n \n );\n }\n\n if (typeHandle === 'quote') {\n return (\n \n \n
\n
\n

{quote}

\n {attribution && (\n
\n – {attribution}\n
\n )}\n
\n
\n \n
\n );\n }\n\n if (typeHandle === 'supertable') {\n return (\n \n \n \n \n {table.map((row) => {\n const tds = [];\n Array.from({ length: tablecolumncount }).forEach(\n (_, i) => {\n tds.push(\n \n );\n }\n );\n return {tds};\n })}\n \n
\n \n
\n );\n }\n\n if (typeHandle === 'stepitemhowto') {\n return (\n \n \n {stepitemhowtodirection && (\n \n )}\n {stepitemhowtotip && (\n
\n )}\n \n \n );\n }\n\n if (typeHandle === 'newSection') {\n return (\n \n \n
\n

{sectionHeading}

\n \n
\n );\n }\n\n if (typeHandle === 'pullQuote') {\n return (\n \n \n
\n

{pullQuote}

\n
\n \n
\n );\n }\n\n if (typeHandle === 'pullQuote') {\n return (\n \n \n
\n

{pullQuote}

\n
\n \n
\n );\n }\n\n if (typeHandle === 'stepitem') {\n const tmpStepItemImage = stepimage && stepimage[0];\n const gatsbyImage =\n tmpStepItemImage && getImage(tmpStepItemImage.localFile);\n\n return (\n \n \n {stepname &&\n (stepnameasheading ? (\n

\n {stepname}\n

\n ) : (\n

{stepname}

\n ))}\n\n {stepnametext && (\n
\n )}\n\n {tmpStepItemImage && (\n
\n \n \n \n {gatsbyImage && (\n \n )}\n \n
\n
\n )}\n \n
\n );\n }\n\n if (typeHandle && typeof window === 'undefined') {\n console.error(`Not handled typeHandle \"${typeHandle}\" on ${pageUrl}`);\n }\n\n return null;\n })}\n \n );\n};\nexport default ArticleBody;\n","import React, { useContext, useLayoutEffect, useRef } from 'react';\nimport { navigate } from 'gatsby';\nimport { useTranslation } from 'react-i18next';\nimport GlobalContext from '../../context/GlobalContext';\nimport Link, { getLocalizedPath } from '../../i18n/Link';\nimport './BlogIndex.css';\nimport SearchIcon from '../../assets/icons/font-awesome/solid/search.svg';\nimport TimesIcon from '../../assets/icons/font-awesome/solid/times.svg';\n\nconst CategoryWidget = ({\n categories,\n usedCategories = false,\n disableSearch = false,\n showOnlyUsedCategories = false,\n}) => {\n const gContext = useContext(GlobalContext);\n const { i18n } = useTranslation();\n const { language } = i18n;\n const searchInputRef = useRef(null);\n let categoriesList;\n\n function goToBlogIndex() {\n const link = getLocalizedPath(language, '/blog/');\n return navigate(link);\n }\n\n if (showOnlyUsedCategories) {\n categoriesList = categories.filter((category) =>\n usedCategories.some((usedCategory) => usedCategory.slug === category.slug)\n );\n } else {\n categoriesList = categories;\n }\n\n const clickSearch = () => {\n if (gContext.blogSearchActive) {\n // Make search\n makeSearch(gContext.blogSearchActive);\n } else {\n gContext.setBlogSearchActive(true);\n }\n };\n\n const offSearch = () => {\n gContext.setBlogSearchActive(false);\n gContext.setBlogSearchQuery('');\n goToBlogIndex();\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n makeSearch(e.target.value);\n } else {\n gContext.setBlogSearchQuery(e.target.value);\n goToBlogIndex();\n }\n };\n\n const makeSearch = (value) => {\n gContext.setBlogSearchQuery(value);\n };\n\n useLayoutEffect(() => {\n if (gContext.blogSearchActive && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [gContext.blogSearchActive]);\n\n return (\n
\n {(!gContext.blogSearchActive || disableSearch) && (\n
\n
\n {categoriesList.map(({ id, title, slug }) => {\n let className =\n 'badge p-4 mr-5 mb-5 text-primary gr-text-15 gr-bg-blue-opacity-1 rounded-pill text-uppercase';\n if (usedCategories) {\n usedCategories.forEach(({ slug: usedSlug }) => {\n if (usedSlug === slug) {\n className += ' bg-primary text-white';\n }\n });\n }\n\n return (\n \n {title}\n \n );\n })}\n
\n\n {!disableSearch && (\n \n \n \n \n \n )}\n
\n )}\n\n {gContext.blogSearchActive && !disableSearch && (\n
\n
\n
\n \n
\n
\n\n
\n \n \n \n \n \n
\n
\n )}\n
\n );\n};\n\nexport default CategoryWidget;\n","export default __webpack_public_path__ + \"static/404-29585497a93d3020b458b4328ab4ac62.jpeg\";","import React from 'react';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\nimport Link from '../i18n/Link';\n\nimport img404 from '../assets/image/spyserp/404.jpeg';\n\nconst NotFound = () => {\n const { t } = useTranslation();\n\n return (\n
\n \n \n \n
\n

\n \"\"\n

\n\n

404

\n\n

\n \n {t('NotFound.ctaText')}\n \n

\n
\n \n
\n
\n
\n );\n};\n\nexport default NotFound;\n","import React from 'react';\nimport { Helmet as ReactHelmet } from 'react-helmet-async';\nimport { usePageContext } from './PageContext';\nimport { getLocalizedPath } from './Link';\nimport useSiteMetadata from '../hooks/useSiteMetadata';\nimport { defaultLanguage } from '../../constants';\nimport { getHrefLang } from '../../utils';\n\nfunction Helmet(props) {\n const { children, ...restProps } = props;\n const { i18n, getLocalizedPageUrl, currentPage, category, authorId } =\n usePageContext();\n const { language, localized } = i18n;\n const { url } = useSiteMetadata();\n const htmlLang = getHrefLang(language);\n\n let canonicalPath;\n if (\n ['/terms-of-service/', '/privacy-policy/'].includes(i18n.originalPath) &&\n language !== defaultLanguage\n ) {\n canonicalPath = i18n.originalPath;\n } else if (currentPage && i18n.originalPath.startsWith('/blog/p')) {\n canonicalPath = getLocalizedPath(language, '/blog/');\n } else if (currentPage && category) {\n canonicalPath = getLocalizedPath(language, `/${category}/`);\n } else if (currentPage && authorId) {\n canonicalPath = getLocalizedPath(language, `/author/${authorId}/`);\n } else {\n canonicalPath = getLocalizedPath(language, i18n.originalPath);\n }\n const canonicalUrl = `${url}${canonicalPath}`;\n\n return (\n \n \n \n\n {localized.length > 0 &&\n localized.map((item) => (\n \n ))}\n\n {localized.length > 0 && (\n \n )}\n\n {localized.length > 0 && (\n \n )}\n\n {children}\n \n );\n}\n\nexport default Helmet;\n","export default __webpack_public_path__ + \"static/ogp-image-a66d3c5fc41ce617f7d54c791d8064b5.jpg\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Helmet from '../../i18n/Helmet';\nimport { usePageContext } from '../../i18n/PageContext';\nimport ogpImage from '../../assets/image/spyserp/ogp-image.jpg';\n\nfunction MetaTags(props) {\n const { title, description, keywords, image, pageTitle, article } = props;\n const { getPageUrl } = usePageContext();\n const url = getPageUrl();\n\n return (\n \n {title}\n {description && (\n \n )}\n\n {keywords && (\n \n )}\n\n \n\n {article && }\n {!article && }\n\n {pageTitle && }\n {!pageTitle && }\n\n {description && }\n\n {image && }\n {image && }\n\n {!image && }\n {!image && }\n \n );\n}\n\nexport default MetaTags;\n\nMetaTags.propTypes = {\n title: PropTypes.string.isRequired,\n pageTitle: PropTypes.string,\n description: PropTypes.string,\n keywords: PropTypes.string,\n image: PropTypes.string,\n article: PropTypes.bool,\n};\n\nMetaTags.defaultProps = {\n title: null,\n pageTitle: null,\n description: null,\n keywords: null,\n image: null,\n article: false,\n};\n","import React from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport PostItem from './PostItem';\nimport { useTranslation } from 'react-i18next';\n\nconst SimilarArticles = ({ similarArticles }) => {\n const { t } = useTranslation();\n\n return (\n
\n \n \n
\n
\n

{t('Similar Articles')}

\n
\n
\n
\n\n \n {similarArticles.map((item) => {\n const image =\n item.featuredImageRetina?.[0] || item.featuredImage?.[0];\n return (\n \n \n \n );\n })}\n \n
\n
\n );\n};\n\nexport default SimilarArticles;\n","import { formatISODuration } from 'date-fns';\n\nexport const prepareJsonHowTo = (entry, langPrefix, siteUrl) => {\n const blogHowtoTotalTime = entry.blogHowtoTotaltime\n ? entry.blogHowtoTotaltime\n : 10;\n const totalTime = formatISODuration({ minutes: blogHowtoTotalTime });\n const featuredImage = entry.featuredImage ? entry.featuredImage[0] : false;\n const output = {\n '@context': 'https://schema.org',\n '@type': 'HowTo',\n name: entry.title,\n description: entry.shortDescription\n ? entry.shortDescription.replace(/<\\/?[^>]+>/gi, '')\n : '',\n supply: {\n '@type': 'HowToSupply',\n name: 'None',\n },\n totalTime,\n };\n\n if (featuredImage) {\n output.image = {\n '@type': 'ImageObject',\n url: `${siteUrl}${featuredImage.localFile.publicURL}`,\n height: featuredImage.height,\n width: featuredImage.width,\n };\n }\n\n const tmpData = {\n tools: [],\n steps: [],\n };\n let currStep = {};\n const typeKey = '@type';\n\n entry.articleBody.forEach(\n ({\n typeHandle,\n stepimage = false,\n stepname = false,\n stepnametext = false,\n stepurl = false,\n stepitemhowtodirection = false,\n stepitemhowtotip = false,\n steptool = false,\n }) => {\n if (typeHandle === 'stepitemtool') {\n tmpData.tools.push({\n '@type': 'HowToTool',\n name: steptool ? steptool.replace(/<\\/?[^>]+>/gi, '') : '',\n });\n } else if (typeHandle === 'stepitem') {\n if (Object.keys(currStep).length && currStep.name) {\n tmpData.steps.push(currStep);\n currStep = {};\n }\n\n currStep[typeKey] = 'HowToStep';\n currStep.name = stepname ? stepname.replace(/<\\/?[^>]+>/gi, '') : '';\n currStep.text = stepnametext\n ? stepnametext.replace(/<\\/?[^>]+>/gi, '')\n : '';\n currStep.url = `${siteUrl}${langPrefix}blog/${entry.slug}/#${stepurl}`;\n currStep.itemListElement = [];\n\n if (stepimage.length) {\n const currStepImage = stepimage[0];\n currStep.image = {\n '@type': 'ImageObject',\n url: `${siteUrl}${currStepImage.localFile.publicURL}`,\n height: currStepImage.height,\n width: currStepImage.width,\n };\n }\n } else if (typeHandle === 'stepitemhowto') {\n if (stepitemhowtodirection) {\n if (!currStep.itemListElement) {\n currStep.itemListElement = [];\n }\n\n currStep.itemListElement.push({\n '@type': 'HowToDirection',\n text: stepitemhowtodirection\n ? stepitemhowtodirection.replace(/<\\/?[^>]+>/gi, '')\n : '',\n });\n }\n\n if (stepitemhowtotip) {\n if (!currStep.itemListElement) {\n currStep.itemListElement = [];\n }\n\n currStep.itemListElement.push({\n '@type': 'HowToTip',\n text: stepitemhowtotip\n ? stepitemhowtotip.replace(/<\\/?[^>]+>/gi, '')\n : '',\n });\n }\n } else if (Object.keys(currStep).length) {\n tmpData.steps.push(currStep);\n currStep = {};\n }\n }\n );\n\n if (Object.keys(currStep).length) {\n tmpData.steps.push(currStep);\n }\n\n if (tmpData.tools.length) {\n output.tool = tmpData.tools;\n }\n\n if (tmpData.steps.length) {\n output.step = tmpData.steps;\n }\n\n return output;\n};\n","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * const result = formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\n\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (typeof duration !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet-async';\nimport { useTranslation } from 'react-i18next';\nimport { getLocalizedPath } from '../../i18n/Link';\nimport useSiteMetadata from '../../hooks/useSiteMetadata';\n\nfunction StructuredBreadcrumbs(props) {\n const { items = [] } = props;\n const { url } = useSiteMetadata();\n const { i18n } = useTranslation();\n const { language } = i18n;\n\n const data = {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: [\n {\n '@type': 'ListItem',\n position: 1,\n name: 'SpySERP',\n item: `${url}${getLocalizedPath(language, '/')}`,\n },\n ],\n };\n\n items.forEach((item, index) => {\n const { name, url } = item;\n if (name && url) {\n data.itemListElement.push({\n '@type': 'ListItem',\n position: index + 2,\n name,\n item: url,\n });\n }\n });\n\n return (\n \n \n \n );\n}\n\nStructuredBreadcrumbs.propTypes = {\n items: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default StructuredBreadcrumbs;\n","import React from 'react';\nimport { GatsbyImage, getImage, StaticImage } from 'gatsby-plugin-image';\nimport { Row, Col, Container } from 'react-bootstrap';\nimport NotFound from '../NotFound';\nimport CategoryWidget from './CategoryWidget';\nimport MetaTags from '../Seo/MetaTags';\nimport SimilarArticles from './SimilarArticles';\nimport { Helmet } from 'react-helmet-async';\nimport ArticleBody from './ArticleBody';\nimport { prepareJsonHowTo } from '../../services/JsonScripts';\nimport Link, { getLocalizedPath } from '../../i18n/Link';\n\nimport useDateFormat from '../../hooks/useDateFormat';\nimport useSiteMetadata from '../../hooks/useSiteMetadata';\nimport { usePageContext } from '../../i18n/PageContext';\nimport { useTranslation } from 'react-i18next';\nimport StructuredBreadcrumbs from '../Seo/StructuredBreadcrumbs';\nimport { defaultLanguage } from '../../../constants';\nimport { stripHtmlTags } from '../../../utils';\n\nconst BlogPage = ({\n propsData: {\n data: { craftBlogBlogEntry, similarBlogEntries },\n pageContext,\n },\n}) => {\n const format = useDateFormat();\n const { t } = useTranslation('Blog');\n const { url } = useSiteMetadata();\n const { getPageUrl, i18n } = usePageContext();\n const { language } = i18n;\n\n const pageUrl = getPageUrl();\n const authorPath = getLocalizedPath(\n language,\n `/author/${craftBlogBlogEntry.author.remoteId}/`\n );\n\n if (!craftBlogBlogEntry) {\n return ;\n }\n\n const { categories, previous, next } = pageContext;\n const featuredImage =\n craftBlogBlogEntry.featuredImageRetina[0] ||\n craftBlogBlogEntry.featuredImageSocial[0] ||\n craftBlogBlogEntry.featuredImage[0];\n const gatsbyImage = featuredImage && getImage(featuredImage.localFile);\n const authorImage =\n craftBlogBlogEntry.author.photo &&\n getImage(craftBlogBlogEntry.author.photo.localFile);\n const langPrefix = language === defaultLanguage ? '/' : `/${language}/`;\n\n const logoUrl = `${url}/blog-posting-logo.png`;\n const postDate = format(new Date(craftBlogBlogEntry.postDate), 'yyyy-dd-MM');\n const dateUpdated = format(\n new Date(craftBlogBlogEntry.dateUpdated),\n 'yyyy-dd-MM'\n );\n\n const jsonHowTo = prepareJsonHowTo(craftBlogBlogEntry, langPrefix, url);\n\n const blogPath = getLocalizedPath(language, '/blog/');\n const breadcrumbs = [\n { name: t('index.seo.title'), url: `${url}${blogPath}` },\n ];\n\n if (craftBlogBlogEntry.category.length) {\n const categoryPath = getLocalizedPath(\n language,\n `/${craftBlogBlogEntry.category[0].slug}/`\n );\n\n breadcrumbs.push({\n name: craftBlogBlogEntry.category[0].title,\n url: `${url}${categoryPath}`,\n });\n }\n\n breadcrumbs.push({ name: craftBlogBlogEntry.title, url: pageUrl });\n\n return (\n <>\n \n\n \n\n \n {previous && (\n \n )}\n {next && }\n\n {craftBlogBlogEntry.typeswitch === 'howTo' && (\n \n )}\n \n\n
\n \n \n \n\n \n\n \n \n \n
\n\n \n \n \n \n \n \n \n \n
\n \n\n \n {gatsbyImage && (\n \n \n \n \n \n )}\n\n \n\n \n \n
\n \n {craftBlogBlogEntry.title}\n \n\n \n
\n {authorImage && (\n \n )}\n\n {!authorImage && (\n \n )}\n
\n\n
\n
\n

\n \n {craftBlogBlogEntry.author.name}\n \n   |  \n

\n\n \n {format(\n new Date(craftBlogBlogEntry.postDate),\n 'dd MMM, yyyy'\n )}\n \n
\n
\n
\n\n {craftBlogBlogEntry.shortDescInArticleBody && (\n \n )}\n\n {craftBlogBlogEntry.heading && (\n

\n {craftBlogBlogEntry.heading}\n

\n )}\n\n {craftBlogBlogEntry.subheading && (\n

\n {craftBlogBlogEntry.subheading}\n

\n )}\n \n \n
\n
\n\n \n \n \n \n\n {similarBlogEntries && (\n \n )}\n \n );\n};\nexport default BlogPage;\n","import React from 'react';\nimport BlogPage from '../components/Blog/BlogPage';\nimport { graphql } from 'gatsby';\n\nconst BlogEntryPage = (props) => {\n return ;\n};\n\nexport default BlogEntryPage;\n\nexport const blogPageQuery = graphql`\n query blogPageQuery(\n $slug: String!\n $siteId: Int!\n $similarArticlesIds: [String]\n ) {\n similarBlogEntries: allCraftBlogBlogEntry(\n filter: { id: { in: $similarArticlesIds } }\n ) {\n nodes {\n id\n title\n slug\n author {\n name\n remoteId\n }\n postDate\n featuredImage {\n title\n ... on Craft_imagesEn_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 350\n aspectRatio: 3.68\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 350\n aspectRatio: 3.68\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n }\n featuredImageRetina {\n title\n ... on Craft_imagesEn_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 350\n aspectRatio: 3.68\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 350\n aspectRatio: 3.68\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n }\n category {\n title\n id\n slug\n }\n }\n }\n\n craftBlogBlogEntry(slug: { eq: $slug }, siteId: { eq: $siteId }) {\n title\n articleBody {\n ... on Craft_articleBody_newSection_BlockType {\n id\n typeHandle\n sectionHeading\n isLocked\n }\n ... on Craft_articleBody_heading_BlockType {\n id\n typeHandle\n isLocked\n heading\n headingId\n headingClass\n }\n ... on Craft_articleBody_text_BlockType {\n id\n position\n text\n typeHandle\n isLocked\n }\n ... on Craft_articleBody_pullQuote_BlockType {\n id\n isLocked\n pullQuote\n position\n typeHandle\n }\n ... on Craft_articleBody_image_BlockType {\n id\n caption\n image {\n url\n title\n ... on Craft_imagesEn_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(layout: CONSTRAINED, breakpoints: [330, 730])\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(layout: CONSTRAINED, breakpoints: [330, 730])\n }\n }\n }\n }\n isLocked\n position\n typeHandle\n }\n ... on Craft_articleBody_quote_BlockType {\n id\n isLocked\n typeHandle\n quote\n position\n }\n ... on Craft_articleBody_button_BlockType {\n id\n isLocked\n title\n buttonTitle\n buttonType\n buttonUrl\n align\n typeHandle\n }\n ... on Craft_articleBody_textCenteredHighlighted_BlockType {\n id\n isLocked\n typeHandle\n text\n }\n ... on Craft_articleBody_supertable_BlockType {\n id\n table {\n ... on Craft_table_BlockType {\n column1\n column2\n column3\n id\n }\n }\n tablecolumncount\n typeHandle\n isLocked\n }\n ... on Craft_articleBody_domaininput_BlockType {\n id\n domaininputtitle\n typeHandle\n }\n ... on Craft_articleBody_stepitem_BlockType {\n id\n stepimage {\n id\n height\n width\n title\n ... on Craft_imagesEn_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(layout: CONSTRAINED, breakpoints: [330, 730])\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(layout: CONSTRAINED, breakpoints: [330, 730])\n }\n }\n }\n }\n stepname\n stepnameasheading\n stepnametext\n stepurl\n typeHandle\n }\n ... on Craft_articleBody_stepitemhowto_BlockType {\n id\n stepitemhowtodirection\n stepitemhowtotip\n typeHandle\n }\n ... on Craft_articleBody_stepitemtool_BlockType {\n id\n typeHandle\n steptool\n }\n ... on Craft_articleBody_ldjsonquestionanswer_BlockType {\n ldJsonQuestion\n ldJsonAnswer\n }\n }\n author {\n name\n remoteId\n photo {\n url\n title\n ... on Craft_imagesEn_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(width: 72)\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(width: 72)\n }\n }\n }\n }\n }\n category {\n title\n slug\n }\n postDate\n dateUpdated\n metaDescription\n metaKeywords\n metaNoindex\n metaTitle\n slug\n typeswitch\n blogHowtoTotaltime\n blogIsLocked\n featuredImage {\n title\n url\n height\n width\n ... on Craft_imagesEn_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(\n width: 1110\n outputPixelDensities: [0.25, 0.5, 1, 1.7, 2]\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(\n width: 1110\n outputPixelDensities: [0.25, 0.5, 1, 1.7, 2]\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n }\n featuredImageRetina {\n title\n url\n height\n width\n ... on Craft_imagesEn_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(\n width: 1110\n outputPixelDensities: [0.25, 0.5, 1, 1.7, 2]\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n publicURL\n childImageSharp {\n gatsbyImageData(\n width: 1110\n outputPixelDensities: [0.25, 0.5, 1, 1.7, 2]\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n }\n featuredImageSocial {\n title\n url\n height\n width\n ... on Craft_imagesEn_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 1110\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n ... on Craft_imagesRu_Asset {\n localFile {\n childImageSharp {\n gatsbyImageData(\n width: 1110\n placeholder: BLURRED\n transformOptions: { cropFocus: CENTER }\n )\n }\n }\n }\n }\n shortDescription\n shortDescInArticleBody\n subheading\n heading\n }\n }\n`;\n","var React = require('react');\n\nfunction Search (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M31.563 27.669a1.508 1.508 0 0 1-.006 2.125l-1.769 1.769a1.493 1.493 0 0 1-2.119 0l-6.231-6.231A1.5 1.5 0 0 1 21 24.269V23.25A12.935 12.935 0 0 1 13 26C5.819 26 0 20.181 0 13S5.819 0 13 0s13 5.819 13 13c0 3.019-1.025 5.794-2.75 8h1.019c.4 0 .781.156 1.063.438zM13 21c4.425 0 8-3.581 8-8 0-4.425-3.581-8-8-8-4.425 0-8 3.581-8 8 0 4.425 3.581 8 8 8z\"}));\n}\n\nSearch.defaultProps = {\"viewBox\":\"0 0 32 32\"};\n\nmodule.exports = Search;\n\nSearch.default = Search;\n","var React = require('react');\n\nfunction Times (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"m15.17 16 6.254 6.254a1.965 1.965 0 0 1 0 2.78l-1.39 1.39a1.965 1.965 0 0 1-2.78 0L11 20.17l-6.254 6.254a1.965 1.965 0 0 1-2.78 0l-1.39-1.39a1.965 1.965 0 0 1 0-2.78L6.83 16 .576 9.746a1.965 1.965 0 0 1 0-2.78l1.39-1.39a1.965 1.965 0 0 1 2.78 0L11 11.83l6.254-6.254a1.965 1.965 0 0 1 2.78 0l1.39 1.39a1.965 1.965 0 0 1 0 2.78z\"}));\n}\n\nTimes.defaultProps = {\"viewBox\":\"0 0 22 32\"};\n\nmodule.exports = Times;\n\nTimes.default = Times;\n"],"names":["items","pageUrl","faq","reduce","acc","item","ldJsonQuestion","ldJsonAnswer","mainEntity","push","name","acceptedAnswer","text","className","length","dangerouslySetInnerHTML","__html","JSON","stringify","type","map","id","typeHandle","heading","headingId","headingClass","sectionHeading","pullQuote","image","quote","attribution","buttonTitle","buttonType","buttonUrl","table","tablecolumncount","stepimage","stepname","stepnameasheading","stepnametext","stepurl","stepitemhowtodirection","stepitemhowtotip","key","console","error","localFile","title","url","gatsbyImage","getImage","itemScope","itemType","itemProp","content","G","alt","src","width","href","row","tds","Array","from","forEach","_","i","tmpStepItemImage","publicURL","window","categoriesList","categories","usedCategories","disableSearch","showOnlyUsedCategories","gContext","useContext","GlobalContext","language","useTranslation","i18n","searchInputRef","useRef","goToBlogIndex","link","getLocalizedPath","navigate","filter","category","some","usedCategory","slug","handleKeyDown","e","preventDefault","makeSearch","target","value","setBlogSearchQuery","useLayoutEffect","blogSearchActive","current","focus","to","onClick","setBlogSearchActive","action","ref","onKeyDown","onChange","placeholder","blogSearchQuery","t","Container","Row","Col","lg","xl","img404","Link","role","props","children","restProps","usePageContext","getLocalizedPageUrl","currentPage","authorId","localized","useSiteMetadata","htmlLang","getHrefLang","canonicalUrl","includes","originalPath","defaultLanguage","startsWith","lang","rel","hrefLang","MetaTags","description","keywords","pageTitle","article","getPageUrl","itemprop","property","ogpImage","defaultProps","similarArticles","featuredImageRetina","featuredImage","md","PostItem","prepareJsonHowTo","entry","langPrefix","siteUrl","totalTime","duration","requiredArgs","arguments","Error","_duration$years","years","_duration$months","months","_duration$days","days","_duration$hours","hours","_duration$minutes","minutes","_duration$seconds","seconds","concat","formatISODuration","blogHowtoTotaltime","output","shortDescription","replace","supply","height","tmpData","tools","steps","currStep","articleBody","steptool","Object","keys","itemListElement","currStepImage","tool","step","data","position","index","Helmet","propsData","craftBlogBlogEntry","similarBlogEntries","pageContext","format","useDateFormat","authorPath","author","remoteId","NotFound","previous","next","featuredImageSocial","authorImage","photo","logoUrl","postDate","Date","dateUpdated","jsonHowTo","blogPath","breadcrumbs","categoryPath","metaTitle","metaDescription","stripHtmlTags","metaKeywords","images","fallback","typeswitch","itemID","loading","CategoryWidget","imgClassName","S","shortDescInArticleBody","subheading","ArticleBody","nodes","React","Search","createElement","module","exports","default","Times"],"sourceRoot":""}