{"version":3,"file":"component---src-templates-download-js-10b46718d1c2d1b2f1d4.js","mappings":"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","sources":["webpack://imf-2024/./node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","webpack://imf-2024/./node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs","webpack://imf-2024/./src/components/ParallaxHero/ParallaxHero.js","webpack://imf-2024/./src/components/Hero/Hero.js","webpack://imf-2024/./src/components/ContinueReading/ContinueReading.js","webpack://imf-2024/./src/templates/download.js"],"sourcesContent":["import { invariant } from '../../utils/errors.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n    visualElement.values.forEach((value) => value.stop());\n}\nfunction setVariants(visualElement, variantLabels) {\n    const reversedLabels = [...variantLabels].reverse();\n    reversedLabels.forEach((key) => {\n        const variant = visualElement.getVariant(key);\n        variant && setTarget(visualElement, variant);\n        if (visualElement.variantChildren) {\n            visualElement.variantChildren.forEach((child) => {\n                setVariants(child, variantLabels);\n            });\n        }\n    });\n}\nfunction setValues(visualElement, definition) {\n    if (Array.isArray(definition)) {\n        return setVariants(visualElement, definition);\n    }\n    else if (typeof definition === \"string\") {\n        return setVariants(visualElement, [definition]);\n    }\n    else {\n        setTarget(visualElement, definition);\n    }\n}\n/**\n * @public\n */\nfunction animationControls() {\n    /**\n     * Track whether the host component has mounted.\n     */\n    let hasMounted = false;\n    /**\n     * A collection of linked component animation controls.\n     */\n    const subscribers = new Set();\n    const controls = {\n        subscribe(visualElement) {\n            subscribers.add(visualElement);\n            return () => void subscribers.delete(visualElement);\n        },\n        start(definition, transitionOverride) {\n            invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n            const animations = [];\n            subscribers.forEach((visualElement) => {\n                animations.push(animateVisualElement(visualElement, definition, {\n                    transitionOverride,\n                }));\n            });\n            return Promise.all(animations);\n        },\n        set(definition) {\n            invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n            return subscribers.forEach((visualElement) => {\n                setValues(visualElement, definition);\n            });\n        },\n        stop() {\n            subscribers.forEach((visualElement) => {\n                stopAnimation(visualElement);\n            });\n        },\n        mount() {\n            hasMounted = true;\n            return () => {\n                hasMounted = false;\n                controls.stop();\n            };\n        },\n    };\n    return controls;\n}\n\nexport { animationControls, setValues };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n *    const controls = useAnimation()\n *\n *    controls.start({\n *        x: 100,\n *        transition: { duration: 0.5 },\n *    })\n *\n *    return <motion.div animate={controls} />\n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n    const controls = useConstant(animationControls);\n    useIsomorphicLayoutEffect(controls.mount, []);\n    return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Box, chakra, shouldForwardProp, usePrefersReducedMotion } from '@chakra-ui/react';\nimport { motion, useAnimation, isValidMotionProp } from 'framer-motion';\nimport SanityImage from 'gatsby-plugin-sanity-image';\n\nconst MotionBox = chakra(motion.div, {\n  shouldForwardProp: (prop) => isValidMotionProp(prop) || shouldForwardProp(prop),\n});\n\nconst HeroImage = ({ image }) => {\n  const [scrollY, setScrollY] = useState(0);\n  const controls = useAnimation();\n  const containerRef = useRef(null);\n  const imageRef = useRef(null);\n\n  // Use Chakra UI's hook to check for reduced motion preference\n  const prefersReducedMotion = usePrefersReducedMotion();\n\n  const handleScroll = () => {\n    if (!prefersReducedMotion) {\n      setScrollY(window.scrollY);\n    }\n  };\n\n  useEffect(() => {\n    if (!prefersReducedMotion) {\n      window.addEventListener('scroll', handleScroll);\n      return () => window.removeEventListener('scroll', handleScroll);\n    }\n  }, [prefersReducedMotion]);\n\n  useEffect(() => {\n    if (!prefersReducedMotion) {\n      const updateAnimation = () => {\n        const containerHeight = containerRef.current.clientHeight;\n        const imageHeight = imageRef.current.clientHeight;\n        const maxOffset = imageHeight - containerHeight;\n        const yOffset = Math.min(scrollY * 0.2, maxOffset); // Ensure yOffset does not exceed maxOffset\n\n        controls.start({\n          y: -yOffset,\n          transition: { type: 'spring', stiffness: 50, damping: 20 },\n        });\n      };\n\n      updateAnimation(); // Update animation initially\n      window.addEventListener('scroll', updateAnimation); // Update on scroll\n\n      return () => window.removeEventListener('scroll', updateAnimation);\n    }\n  }, [scrollY, controls, prefersReducedMotion]);\n\n  return (\n    <Box\n      ref={containerRef}\n      position='relative'\n      width='100%'\n      height={{ base: '300px', md: '600px' }}\n      overflow='hidden'\n      backgroundColor='gray.100'\n      as='figure'\n    >\n      <MotionBox\n        position='absolute'\n        width='100%'\n        height={{ base: '500px', md: '800px' }}\n        // Only apply animate prop when reduced motion is not preferred\n        animate={prefersReducedMotion ? undefined : controls}\n        ref={imageRef}\n        display='flex'\n      >\n        <SanityImage\n          {...image}\n          alt={image?.asset?.altText}\n          width={900}\n          hotspot={image?.hotspot}\n          crop={image?.crop}\n          style={{\n            width: '100%',\n            height: '100%',\n            objectFit: 'cover',\n          }}\n        />\n      </MotionBox>\n      {image?.asset?.title && (\n        <Box\n          position='absolute'\n          bottom={20}\n          right={20}\n          maxWidth='90%'\n          fontWeight={600}\n          color='white'\n          as='figcaption'\n          textShadow='2px 2px 12px rgba(0, 0, 0, 0.9), 0 0 5px rgba(0, 0, 0, 0.7)'\n          backgroundColor='rgba(0, 0, 0, 0.7)'\n          padding='8px 12px'\n          borderRadius='8px'\n        >\n          {image.asset.title}\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default HeroImage;\n","import React from 'react';\nimport { Box, Text } from '@chakra-ui/react';\nimport { SectionTag } from '../SectionTag';\nimport { ParallaxCard } from '../ParallaxCard';\nimport { ParallaxHero } from '../ParallaxHero';\nimport { RichText } from '../RichText';\n\nfunction Hero({ data, children, alignItems = 'flex-start', textAlign = 'left' }) {\n  const { image, title, section, parallaxHero, imageLocation } = data || {};\n\n  return (\n    <Box as='section' py={{ base: 30, md: 40 }}>\n      <Box px={{ base: 30, lg: 0 }}>\n        {section && section !== 'single' && (\n          <Box display='flex' alignItems='center' mb={{ base: 10, md: 20 }}>\n            <Box\n              flex='auto'\n              display={{ base: 'none', md: 'flex' }}\n              alignItems='center'\n              mr={5}\n              ml='-10px'\n            >\n              <Box flex='auto' borderBottom='2px' borderStyle='dotted' />\n              <svg\n                width='9'\n                height='15'\n                viewBox='0 0 9 15'\n                fill='none'\n                xmlns='http://www.w3.org/2000/svg'\n              >\n                <path\n                  d='M2 13.5829L8 7.5L2 1.41707'\n                  stroke='black'\n                  strokeWidth='2'\n                  strokeLinecap='square'\n                  strokeLinejoin='round'\n                />\n              </svg>\n            </Box>\n            <Box flex='0 0 container.md' width='container.md' maxWidth='container.md' mx='auto'>\n              <SectionTag title={section} />\n            </Box>\n            <Box flex='1' display={{ base: 'none', md: 'flex' }} />\n          </Box>\n        )}\n        <Box maxWidth='container.md' mx='auto'>\n          <Box\n            mb={{ base: 20, md: 40 }}\n            display='flex'\n            flexDirection='column'\n            alignItems={alignItems}\n          >\n            {parallaxHero?.richTitle ? (\n              <RichText\n                value={parallaxHero.richTitle}\n                as='h1'\n                textStyle='h1'\n                mb={children ? 30 : 0}\n                width='100%'\n                textAlign='center'\n                fontWeight={400}\n              />\n            ) : (\n              <Text\n                as='h1'\n                textStyle='h1'\n                fontWeight={400}\n                mb={children ? 30 : 0}\n                width='100%'\n                textAlign={textAlign}\n              >\n                {title}\n              </Text>\n            )}\n            {children}\n          </Box>\n        </Box>\n      </Box>\n      <Box display='flex' bg='zinc.100' maxHeight='700px'>\n        {image && !parallaxHero && <ParallaxHero image={image} imageLocation={imageLocation} />}\n        {parallaxHero && (\n          <ParallaxCard images={parallaxHero.images} aspectRatio={parallaxHero.aspectRatio} />\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nexport default Hero;\n","import React from 'react';\nimport { Box, Text, Container, Flex, AspectRatio } from '@chakra-ui/react';\nimport { CardMedia } from '../CardMedia';\n\nconst ContinueReadingEntry = ({ data }) => {\n  const { title, subTitle, link } = data;\n\n  return (\n    <Box flexBasis={{ base: '50%', md: '25%' }} flexGrow={0} flexShrink={0} p={2}>\n      <AspectRatio ratio={1}>\n        <CardMedia data={link} />\n      </AspectRatio>\n\n      <Text fontSize='lg' fontWeight='bold' mt={5}>\n        {title}\n      </Text>\n      <Text fontSize='sm'>{subTitle}</Text>\n    </Box>\n  );\n};\n\nfunction ContinueReading({ data, children, rightToLeft }) {\n  const { title, subTitle, entries } = data;\n  return (\n    <Container maxWidth='container.lg' paddingY={10} mb={30} as='section'>\n      <Box borderTop='2px' borderStyle='dotted' py={20}>\n        <Flex\n          direction={{ base: 'column', md: rightToLeft ? 'row-reverse' : 'row' }}\n          justifyContent='space-between'\n          alignItems='center'\n          mb={20}\n          gap={10}\n        >\n          <Box textAlign={rightToLeft ? 'right' : 'left'}>\n            <Text as='h3' textStyle='h3'>\n              {title}\n            </Text>\n            <Text>{subTitle}</Text>\n          </Box>\n          {children}\n        </Flex>\n        <Flex flexWrap='wrap' margin={-2} textAlign={rightToLeft ? 'right' : 'left'}>\n          {entries.map((entry) => (\n            <ContinueReadingEntry key={entry._key} data={entry} />\n          ))}\n        </Flex>\n      </Box>\n    </Container>\n  );\n}\n\nexport default ContinueReading;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Container, Grid, GridItem, Flex, Link, Text, Box } from '@chakra-ui/react';\nimport { PortableText, toPlainText } from '@portabletext/react';\nimport { useStaticQuery, graphql, withPrefix } from 'gatsby';\nimport { Layout } from '../components/Layout';\nimport { SEO } from '../components/SEO';\nimport { Hero } from '../components/Hero';\nimport { components } from '../components/RichText/components';\nimport { ParallaxCard } from '../components/ParallaxCard';\nimport { ContinueReading } from '../components/ContinueReading';\n\nconst FadedPortableText = ({ value, components }) => (\n  <Box position='relative' maxHeight='50rem' overflow='hidden' className='chakra-text'>\n    <PortableText value={value} components={components} />\n    <Box\n      position='absolute'\n      bottom='0'\n      left='0'\n      right='0'\n      height='12.5rem'\n      background='linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1))'\n    />\n  </Box>\n);\n\nconst ReadMore = ({ data, rightToLeft }) => {\n  const { sectionTitle, pageTitle, pageDescription, link } = data || {};\n\n  return (\n    <Box as='section' background='zinc.100'>\n      <Container maxWidth='container.lg' paddingY={{ base: 30, md: 60 }}>\n        <Text as='h2' textStyle='h3' textAlign={rightToLeft ? 'right' : 'left'}>\n          {sectionTitle}\n        </Text>\n        <Link\n          href={link}\n          variant='ghost'\n          mt={20}\n          display='block'\n          _hover={{\n            textDecoration: 'none',\n            color: 'navy',\n          }}\n        >\n          <Flex direction={{ base: 'column', md: 'row' }} gap={30} alignItems='center'>\n            <Box flexBasis={{ base: '100%', md: '50%' }} flexGrow={0} flexShrink={0}>\n              <img\n                src={`${withPrefix('/')}readmore.jpg`}\n                alt='A blue flag with the IMF logo'\n                style={{\n                  width: '100%',\n                  height: 'auto',\n                  objectFit: 'cover',\n                }}\n              />\n            </Box>\n            <Box\n              flexBasis={{ base: '100%', md: '50%' }}\n              flexGrow={0}\n              flexShrink={0}\n              textAlign={rightToLeft ? 'right' : 'left'}\n            >\n              <Text fontSize='lg' fontWeight='bold' mt={10}>\n                {pageTitle}\n              </Text>\n\n              <Text fontSize={16}>{pageDescription}</Text>\n            </Box>\n          </Flex>\n        </Link>\n      </Container>\n    </Box>\n  );\n};\n\nexport default function Download({ pageContext }) {\n  const { body, download, rightToLeft, title, mdQuote, readMore, continueReading, richTitle } =\n    pageContext || {};\n\n  const rightColumnRef = useRef(null);\n  const [isRightSticky, setIsRightSticky] = useState(false);\n  const heroes = useStaticQuery(HeroQuery);\n  const { mdHero, introHero } = heroes || {};\n  const { parallaxHero } = introHero || {};\n\n  if (richTitle) {\n    parallaxHero.richTitle = richTitle;\n  }\n\n  const DownloadButton = ({ isPrimary }) =>\n    download?.pdfDownloadLink ? (\n      <Link\n        variant={isPrimary ? 'buttonPrimary' : 'buttonSecondary'}\n        href={`${download.pdfDownloadLink.asset.url}/${download.pdfDownloadLink.asset.originalFilename}`}\n        download\n        textAlign='center'\n        display='inline-block'\n        alignSelf='center'\n        fontWeight={600}\n      >\n        {download.cta}\n      </Link>\n    ) : null;\n\n  useEffect(() => {\n    const checkSticky = () => {\n      const windowHeight = window.innerHeight - 100;\n      const windowWidth = window.innerWidth;\n      const rightColumnHeight = rightColumnRef?.current?.clientHeight;\n\n      if (windowWidth >= 1280) {\n        setIsRightSticky(rightColumnHeight < windowHeight);\n      } else {\n        setIsRightSticky(false);\n      }\n    };\n\n    checkSticky();\n\n    window.addEventListener('resize', checkSticky);\n    return () => {\n      window.removeEventListener('resize', checkSticky);\n    };\n  }, []);\n\n  return (\n    <Layout>\n      <Hero data={{ title, parallaxHero }} alignItems='center' textAlign='center'>\n        <DownloadButton isPrimary />\n      </Hero>\n      <Box position='relative' zIndex='1' width='100%' background='white'>\n        <Container\n          display='flex'\n          flexDirection='column'\n          maxWidth='container.xl'\n          gap={18}\n          pb={{ base: 30, md: 60 }}\n          px={{ base: 0 }}\n          sx={{\n            direction: rightToLeft ? 'rtl' : 'ltr',\n          }}\n        >\n          <Grid\n            gridTemplateColumns={{\n              base: '1fr',\n              xl: 'minmax(0, 3fr) minmax(0, 7fr) minmax(0, 3fr)',\n            }}\n            gap={30}\n            alignItems='center'\n            mx='auto'\n          >\n            <GridItem />\n\n            <GridItem px={{ base: 30, xl: 0 }} className='section'>\n              <FadedPortableText value={body} components={components} />\n            </GridItem>\n\n            <GridItem\n              display='flex'\n              flexDirection='column'\n              gap={30}\n              position={isRightSticky ? 'sticky' : 'static'}\n              top='7.1875rem'\n              px={30}\n              className='rightColumn'\n              ref={rightColumnRef}\n            >\n              {mdQuote && (\n                <Flex direction='column' gap={10} textAlign={rightToLeft ? 'right' : 'left'}>\n                  <ParallaxCard images={mdHero.data.images} aspectRatio={mdHero.data.aspectRatio} />\n                  <Text fontSize={16} fontWeight={400} mt={5}>\n                    {mdQuote.quote}\n                  </Text>\n                  <Flex direction='column'>\n                    <Text textTransform='uppercase' fontWeight={700} fontSize={16}>\n                      {mdQuote?.name || 'Kristalina Georgieva'}\n                    </Text>\n                    <Text fontSize={16}>{mdQuote.position}</Text>\n                  </Flex>\n                  <Box display={{ base: 'none', xl: 'block' }}>\n                    <DownloadButton />\n                  </Box>\n                </Flex>\n              )}\n            </GridItem>\n          </Grid>\n        </Container>\n      </Box>\n\n      {continueReading && (\n        <ContinueReading data={continueReading} rightToLeft={rightToLeft}>\n          <DownloadButton />\n        </ContinueReading>\n      )}\n\n      {readMore && <ReadMore data={readMore} rightToLeft={rightToLeft} />}\n    </Layout>\n  );\n}\n\nconst languageAttribute = (slug) => {\n  switch (slug) {\n    case 'arabic':\n      return 'ar';\n    case 'chinese':\n      return 'cn';\n    case 'french':\n      return 'fr';\n    case 'russian':\n      return 'ru';\n    case 'spanish':\n      return 'es';\n    case 'portuguese':\n      return 'pt';\n    case 'dutch':\n      return 'nl';\n    case 'german':\n      return 'de';\n    case 'japanese':\n      return 'ja';\n    default:\n      return 'en';\n  }\n};\n\nexport const Head = ({ pageContext }) => {\n  const { slug, richTitle } = pageContext || {};\n  const seoTitle = toPlainText(richTitle);\n\n  return <SEO title={seoTitle} language={languageAttribute(slug?.current)} />;\n};\n\nconst HeroQuery = graphql`\n  query HeroQuery {\n    mdHero: sanityPage(title: { eq: \"Message from the Managing Director\" }) {\n      data: _rawParallaxHero\n    }\n    introHero: sanityPage(title: { eq: \"Resilience in the Face of Change\" }) {\n      parallaxHero {\n        images {\n          ...ImageWithPreview\n          asset {\n            description\n          }\n        }\n        aspectRatio\n      }\n    }\n  }\n`;\n"],"names":["setVariants","visualElement","variantLabels","reverse","forEach","key","variant","getVariant","variantChildren","child","animationControls","hasMounted","subscribers","Set","controls","subscribe","add","delete","start","definition","transitionOverride","animations","push","Promise","all","set","Array","isArray","setValues","stop","values","value","stopAnimation","mount","useAnimation","MotionBox","chakra","motion","div","shouldForwardProp","prop","isValidMotionProp","_ref","_image$asset","_image$asset2","image","scrollY","setScrollY","useState","containerRef","useRef","imageRef","prefersReducedMotion","usePrefersReducedMotion","handleScroll","window","useEffect","addEventListener","removeEventListener","updateAnimation","containerHeight","current","clientHeight","maxOffset","yOffset","Math","min","y","transition","type","stiffness","damping","React","Box","ref","position","width","height","base","md","overflow","backgroundColor","as","animate","undefined","display","SanityImage","Object","assign","alt","asset","altText","hotspot","crop","style","objectFit","title","bottom","right","maxWidth","fontWeight","color","textShadow","padding","borderRadius","data","children","alignItems","textAlign","section","parallaxHero","imageLocation","py","px","lg","mb","flex","mr","ml","borderBottom","borderStyle","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","mx","SectionTag","flexDirection","richTitle","RichText","textStyle","Text","bg","maxHeight","ParallaxHero","ParallaxCard","images","aspectRatio","ContinueReadingEntry","subTitle","link","flexBasis","flexGrow","flexShrink","p","AspectRatio","ratio","CardMedia","fontSize","mt","_ref2","rightToLeft","entries","Container","paddingY","borderTop","Flex","direction","justifyContent","gap","flexWrap","margin","map","entry","_key","FadedPortableText","components","className","PortableText","left","background","ReadMore","sectionTitle","pageTitle","pageDescription","Link","href","_hover","textDecoration","src","withPrefix","Download","_ref3","pageContext","body","download","mdQuote","readMore","continueReading","rightColumnRef","isRightSticky","setIsRightSticky","heroes","useStaticQuery","HeroQuery","mdHero","introHero","DownloadButton","_ref4","isPrimary","pdfDownloadLink","url","originalFilename","alignSelf","cta","checkSticky","_rightColumnRef$curre","windowHeight","innerHeight","windowWidth","innerWidth","rightColumnHeight","Layout","Hero","zIndex","pb","sx","Grid","gridTemplateColumns","xl","GridItem","top","quote","textTransform","name","ContinueReading","languageAttribute","slug","Head","_ref5","seoTitle","toPlainText","SEO","language"],"sourceRoot":""}