{ version: 3, file: "component---gatsby-theme-husky-src-templates-recipe-recipe-tsx-08a52046b6c044fad593.js", mappings: "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", sources: [ "webpack://husky-site/../gatsby-theme-husky/src/components/TagEventTracker/TagEventTracker.tsx", "webpack://husky-site/../gatsby-theme-husky/src/templates/Recipe/Recipe.tsx", "webpack://husky-site/../gatsby-theme-husky/src/utils/functions.ts" ], sourcesContent: [ "import React, { FC, useEffect } from 'react'; import { EventDataProps, TagEventTrackerProps } from './models'; const TagEventTracker: FC = ({ children, eventType, data: { value, userId, itemListId, itemListName, currency, ecommerce, pageTemplate }, }) => { useEffect(() => { if (typeof window !== undefined) { switch (eventType) { case 'view_item': window.dataLayer.push({ event: eventType, userId, currency, value, ecommerce, }); break; case 'view_item_list': window.dataLayer.push({ event: eventType, userId, itemListId, itemListName, ecommerce, }); break; case 'page_view': window.dataLayer.push({ pageTemplate, userId, }); break; default: console.error('No dataLayer event found'); break; } } }, [ecommerce, value, eventType, currency, itemListId, itemListName, pageTemplate, userId]); return <>{children}; }; const handleDataLayerClick = ( { retailerName, userId, ecommerce }: EventDataProps, eventType: string, url?: string ) => { window.dataLayer.push({ event: eventType, retailerName, userId, ecommerce, }); if (eventType === 'retailer_link_click') { window.open(url, '_blank'); } }; export { handleDataLayerClick, TagEventTracker }; ", "import React, { FC } from 'react'; import { graphql } from 'gatsby'; import DangerouslySetInnerHtml from 'layout/DangerouslySetInnerHtml'; import Layout from 'layout/Layout'; import Image from 'common/Image'; import PageSchema from 'common/PageSchema'; import Seo from 'common/Seo'; import { TagEventTracker } from 'components/TagEventTracker'; import { nl2br } from '../../utils/functions'; import { RecipeProps } from './models'; import 'styles/main.scss'; import './Recipe.scss'; const Recipe: FC<{ data: RecipeProps }> = ({ data: { recipe: { urls, interlink, seo, title, imageDesktop, imageMobile, ingredients, difficulty, time, portions, nutritional, steps, headband, }, global, }, }) => { const { title: seoTitle, keywords: seoKeywords, description: seoDescription } = seo; return (
{imageDesktop.altText} {imageMobile.altText}

{title}

{global.ingredients}

{global.difficulty}

{global.time}

{global.portions}

{global.nutritional}

{global.steps}

    {steps.map(({ value: step }, index) => (
  • {index + 1} {step}
  • ))}
{global.recipeIcon.altText}
); }; export const query = graphql` query ($url: String) { recipe(url: { eq: $url }) { interlink urls { lang href } headband { cta { url name } imageDesktop { name childImageSharp { gatsbyImageData } } imageMobile { name childImageSharp { gatsbyImageData } } } seo { ...SEOStructureFragment } title imageDesktop { altText fallbackUrl desktop { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 1920) } } mobile { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 1920) } } tablet { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 1920) } } } imageMobile { altText fallbackUrl desktop { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 700) } } mobile { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 700) } } tablet { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 700) } } } ingredients difficulty time portions nutritional steps { value } } global { ingredients difficulty time portions nutritional steps recipeIcon { desktop { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 100) } } mobile { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 100) } } tablet { childImageSharp { gatsbyImageData(placeholder: BLURRED, width: 100) } } } } } `; export default Recipe; ", "export const isEmpty = (obj): boolean => { if (obj === undefined || obj === null) { return true; } if (Array.isArray(obj)) { return !obj.length; } if (typeof obj === 'object') { return !Object.keys(obj).length; } return !obj; }; export const getYoutubeId = (value) => { const SRC_REGEX = /src="(.*?)"/im; const url = SRC_REGEX.test(value) ? value.match(SRC_REGEX)[1] : value; const { searchParams, pathname } = new URL(url); return searchParams.get('v') || pathname.replace('/embed', '').replace('/', ''); }; export const nl2br = (str: string = '', isXhtml: boolean = false): string => { if (typeof str === 'undefined' || str === null) { return ''; } const breakTag = isXhtml || typeof isXhtml === 'undefined' ? '
' : '
'; return `${str}`.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, `$1${breakTag}$2`); }; export const filterByTagId = (items, tid: string, limit: number = 0) => { let filtered; if (tid === '') { filtered = items; } else { filtered = items.filter((item) => item.tags.id === tid); } return limit === 0 ? filtered : filtered.slice(0, limit); }; export default isEmpty; " ], names: [ "TagEventTracker", "children", "eventType", "data", "value", "userId", "itemListId", "itemListName", "currency", "ecommerce", "pageTemplate", "useEffect", "undefined", "window", "dataLayer", "push", "event", "console", "error", "handleDataLayerClick", "url", "retailerName", "open", "recipe", "urls", "interlink", "seo", "title", "imageDesktop", "imageMobile", "ingredients", "difficulty", "time", "portions", "nutritional", "steps", "headband", "global", "seoTitle", "seoKeywords", "keywords", "seoDescription", "description", "headerTransparent", "type", "name", "metaTitle", "metaDescription", "metaKeywords", "className", "imageData", "alt", "altText", "html", "nl2br", "element", "map", "index", "step", "key", "recipeIcon", "getYoutubeId", "SRC_REGEX", "test", "match", "URL", "searchParams", "pathname", "get", "replace", "str", "isXhtml", "filterByTagId", "items", "tid", "limit", "filtered", "filter", "item", "tags", "id", "slice" ], sourceRoot: "" }