{"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":""}