{"version":3,"file":"component---src-pages-index-js-0442c7a1d9a281eddf02.js","mappings":"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","sources":["webpack://imf-2024/./node_modules/@chakra-ui/icons/dist/chunk-WZ4T2U2Y.mjs","webpack://imf-2024/./src/components/CardTextArea/CardTextArea.js","webpack://imf-2024/./src/components/FeaturedCard/FeaturedCard.js","webpack://imf-2024/./src/components/ImageCard/ImageCard.js","webpack://imf-2024/./src/components/SectionCard/SectionCard.js","webpack://imf-2024/./node_modules/@chakra-ui/media-query/dist/chunk-KC77MHL3.mjs","webpack://imf-2024/./node_modules/@chakra-ui/media-query/dist/chunk-6KW5I77S.mjs","webpack://imf-2024/./node_modules/@chakra-ui/media-query/dist/chunk-C53CKZDP.mjs","webpack://imf-2024/./node_modules/react-swipeable/es/index.js","webpack://imf-2024/./src/components/SwipableContent/SwipableContent.js","webpack://imf-2024/./src/pages/index.js"],"sourcesContent":["'use client'\n\n// src/View.tsx\nimport { createIcon } from \"@chakra-ui/icon\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar ViewIcon = createIcon({\n  displayName: \"ViewIcon\",\n  path: /* @__PURE__ */ jsxs(\"g\", { fill: \"currentColor\", children: [\n    /* @__PURE__ */ jsx(\"path\", { d: \"M23.432,10.524C20.787,7.614,16.4,4.538,12,4.6,7.6,4.537,3.213,7.615.568,10.524a2.211,2.211,0,0,0,0,2.948C3.182,16.351,7.507,19.4,11.839,19.4h.308c4.347,0,8.671-3.049,11.288-5.929A2.21,2.21,0,0,0,23.432,10.524ZM7.4,12A4.6,4.6,0,1,1,12,16.6,4.6,4.6,0,0,1,7.4,12Z\" }),\n    /* @__PURE__ */ jsx(\"circle\", { cx: \"12\", cy: \"12\", r: \"2\" })\n  ] })\n});\n\nexport {\n  ViewIcon\n};\n//# sourceMappingURL=chunk-WZ4T2U2Y.mjs.map","import React from 'react';\nimport { Flex, Text } from '@chakra-ui/react';\nimport { ViewIcon } from '@chakra-ui/icons';\nimport { SectionTag } from '../SectionTag';\n\nfunction CardTextArea({ data, showSectionTag, hideExcerpt, visited }) {\n  const { title, section, excerpt } = data;\n\n  const VisitedBox = () => (\n    <Flex\n      color='gray.700'\n      textTransform='uppercase'\n      fontSize='11px'\n      fontWeight='600'\n      alignItems='center'\n      gap='5px'\n      background='zinc.100'\n      padding='5px 8px'\n      mt={5}\n    >\n      <ViewIcon /> Viewed\n    </Flex>\n  );\n\n  return (\n    <Flex direction='column' alignItems='start' width='100%'>\n      <Flex direction='column' alignItems='start' justifyContent='center' gap='5px' width='100%'>\n        {showSectionTag && section && <SectionTag title={section} />}\n        <Text width='100%' fontSize='xl' fontWeight='700' color='inherit' lineHeight='1'>\n          {title}\n        </Text>\n        {!hideExcerpt && excerpt && (\n          <Text\n            width='100%'\n            fontSize={{ base: 'sm', lg: 'md' }}\n            fontWeight='normal'\n            color='black'\n            lineHeight='base'\n            sx={{\n              display: '-webkit-box',\n              WebkitBoxOrient: 'vertical',\n              WebkitLineClamp: 3,\n              overflow: 'hidden',\n              textOverflow: 'ellipsis',\n            }}\n          >\n            {excerpt}\n          </Text>\n        )}\n        {visited && <VisitedBox />}\n      </Flex>\n    </Flex>\n  );\n}\n\nexport default CardTextArea;\n","import React from 'react';\nimport { Link as GatsbyLink } from 'gatsby';\nimport { Flex, Link, Text } from '@chakra-ui/react';\nimport { CardMedia } from '../CardMedia';\nimport { RichText } from '../RichText';\n\nfunction FeaturedCard({ data, useWindowMouseEvents }) {\n  const { section, aspectRatio } = data;\n  const { section: sectionArea, slug, title, excerpt, parallaxHero } = section;\n\n  return (\n    <Link\n      to={`/${sectionArea === 'single' ? '' : `${sectionArea}/`}${slug.current}`}\n      as={GatsbyLink}\n      _hover={{\n        textDecoration: 'none',\n        color: 'navy',\n      }}\n      width='100%'\n      height='100%'\n      aria-label={title}\n      role='group'\n    >\n      <Flex\n        direction='column'\n        justifyContent='center'\n        alignItems='center'\n        gap={4}\n        position='relative'\n        height='100%'\n      >\n        <Flex direction='column' alignItems='start' gap={2.5} width='100%'>\n          <Flex\n            direction='column'\n            alignItems='start'\n            justifyContent='center'\n            gap={2.5}\n            width='100%'\n          >\n            {parallaxHero?.richTitle ? (\n              <RichText\n                value={parallaxHero.richTitle}\n                width='100%'\n                fontSize={{ base: '3xl', lg: '5xl' }}\n                color='inherit'\n                lineHeight='1'\n                textAlign='center'\n              />\n            ) : (\n              <Text\n                width='100%'\n                fontSize={{ base: '3xl', lg: '5xl' }}\n                fontWeight='bold'\n                color='inherit'\n                lineHeight='1'\n                textAlign='center'\n              >\n                {title}\n              </Text>\n            )}\n            {excerpt && (\n              <Text\n                width='100%'\n                fontSize={{ base: 'md', lg: 'lg' }}\n                fontWeight='normal'\n                color='black'\n                lineHeight='base'\n                sx={{\n                  display: '-webkit-box',\n                  WebkitBoxOrient: 'vertical',\n                  WebkitLineClamp: 3,\n                  overflow: 'hidden',\n                  textOverflow: 'ellipsis',\n                }}\n                textAlign='center'\n              >\n                {excerpt}\n              </Text>\n            )}\n          </Flex>\n        </Flex>\n        <CardMedia\n          data={section}\n          aspectRatio={aspectRatio}\n          useWindowMouseEvents={useWindowMouseEvents}\n        />\n      </Flex>\n    </Link>\n  );\n}\n\nexport default FeaturedCard;\n","import React, { useMemo } from 'react';\nimport SanityImage from 'gatsby-plugin-sanity-image';\nimport { Link as GatsbyLink } from 'gatsby';\nimport { Flex, Text, Box, Link, usePrefersReducedMotion } from '@chakra-ui/react';\n\nconst MemoizedSanityImage = React.memo(SanityImage);\n\nconst ImageContent = React.memo(({ image, aspectRatio }) => (\n  <MemoizedSanityImage\n    {...image}\n    alt={image?.asset?.altText}\n    width={275}\n    height={Math.round(275 / aspectRatio)}\n    hotspot={image?.hotspot}\n    crop={image?.crop}\n    style={{\n      width: '100%',\n      height: '100%',\n      objectFit: 'cover',\n      objectPosition: 'top',\n    }}\n  />\n));\n\nconst CardText = React.memo(({ title, excerpt, hideExcerpt, prefersReducedMotion }) => (\n  <Flex\n    direction='column'\n    alignItems='start'\n    justifyContent='center'\n    gap='5px'\n    width='100%'\n    px={20}\n    paddingTop={60}\n    paddingBottom={20}\n    transition='transform 0.4s ease-in-out'\n    _groupHover={{\n      transform: !prefersReducedMotion ? 'translateY(-10px)' : 'translateY(0)',\n    }}\n  >\n    <Text width='100%' fontSize='xl' fontWeight='bold' color='inherit' lineHeight='1'>\n      {title}\n    </Text>\n    {excerpt && !hideExcerpt && (\n      <Text\n        width='100%'\n        fontSize='md'\n        fontWeight='normal'\n        color='inherit'\n        lineHeight='base'\n        sx={{\n          display: '-webkit-box',\n          WebkitBoxOrient: 'vertical',\n          WebkitLineClamp: 3,\n          overflow: 'hidden',\n          textOverflow: 'ellipsis',\n        }}\n      >\n        {excerpt}\n      </Text>\n    )}\n  </Flex>\n));\n\nfunction ImageCard({ data, hideExcerpt }) {\n  const { section, aspectRatio } = data;\n  const { section: sectionArea, slug, title, image, excerpt } = section;\n  const prefersReducedMotion = usePrefersReducedMotion();\n\n  const linkProps = useMemo(\n    () => ({\n      to: `/${sectionArea === 'single' ? '' : `${sectionArea}/`}${slug.current}`,\n      as: GatsbyLink,\n      color: 'white',\n      _hover: {\n        textDecoration: 'none',\n        backgroundColor: prefersReducedMotion ? 'lightBlue' : 'zinc.100',\n      },\n      role: 'group',\n      width: '100%',\n      'aria-label': title,\n      padding: 20,\n      backgroundColor: 'zinc.100',\n      flex: '1',\n      minHeight: { base: '250px', lg: 'none' },\n      display: 'block',\n      transition: 'background-color 0.25s ease-in-out',\n    }),\n    [sectionArea, slug.current, title, prefersReducedMotion],\n  );\n\n  const imageContentProps = useMemo(\n    () => ({\n      image,\n      aspectRatio,\n    }),\n    [image, aspectRatio],\n  );\n\n  const cardTextProps = useMemo(\n    () => ({\n      title,\n      excerpt,\n      hideExcerpt,\n      prefersReducedMotion,\n    }),\n    [title, excerpt, hideExcerpt, prefersReducedMotion],\n  );\n\n  return (\n    <Link {...linkProps}>\n      <Flex\n        direction='column'\n        justifyContent='center'\n        alignItems='center'\n        gap={4}\n        position='relative'\n        height='100%'\n        minHeight={{ base: '250px', lg: 'none' }}\n        overflow='hidden'\n      >\n        <Box\n          as='figure'\n          height='100%'\n          width='100%'\n          position='absolute'\n          transition='transform 0.4s ease-in-out'\n          _groupHover={{\n            transform: !prefersReducedMotion ? 'scale(1.1)' : 'scale(1)',\n          }}\n        >\n          {image && <ImageContent {...imageContentProps} />}\n        </Box>\n        <Flex\n          direction='column'\n          justifyContent='flex-end'\n          alignItems='start'\n          gap={2.5}\n          width='100%'\n          height='100%'\n          zIndex={1}\n          marginTop='auto'\n          bgGradient='linear(to-b, transparent, black)'\n        >\n          <CardText {...cardTextProps} />\n        </Flex>\n      </Flex>\n    </Link>\n  );\n}\n\nexport default React.memo(ImageCard);\n","import React, { useEffect, useState, useMemo, useCallback } from 'react';\nimport { Link as GatsbyLink } from 'gatsby';\nimport { Flex, Link } from '@chakra-ui/react';\nimport { CardMedia } from '../CardMedia';\nimport { CardTextArea } from '../CardTextArea';\nimport { FeaturedCard } from '../FeaturedCard';\nimport { ImageCard } from '../ImageCard';\n\n// Helper functions for local storage\nconst isVisited = (url) => {\n  if (typeof window !== 'undefined') {\n    return localStorage.getItem(url) === 'visited';\n  }\n  return false;\n};\n\nconst markVisited = (url) => {\n  if (typeof window !== 'undefined') {\n    localStorage.setItem(url, 'visited');\n  }\n};\n\nfunction SectionCard({ data, useWindowMouseEvents }) {\n  const { section, aspectRatio, layout, largeTitle, largerTitle, showSectionTag, hideExcerpt } =\n    data;\n  const { section: sectionArea, slug, title } = section;\n  const direction = layout === 'horizontal' ? 'row' : 'column';\n\n  const linkUrl = useMemo(\n    () => `/${sectionArea === 'single' ? '' : `${sectionArea}/`}${slug.current}`,\n    [sectionArea, slug],\n  );\n  const [visited, setVisited] = useState(() => isVisited(linkUrl));\n\n  const handleClick = useCallback(() => {\n    markVisited(linkUrl);\n    setVisited(true);\n  }, [linkUrl]);\n\n  useEffect(() => {\n    setVisited(isVisited(linkUrl));\n  }, [linkUrl]);\n\n  const cardContent = useMemo(\n    () => (\n      <Flex\n        direction={{ base: 'column', md: direction }}\n        justifyContent={{ base: 'flex-start', lg: 'center' }}\n        alignItems={{ base: 'flex-start', lg: 'center' }}\n        gap={4}\n        position='relative'\n        height='100%'\n      >\n        <CardMedia data={section} aspectRatio={aspectRatio} />\n        <CardTextArea\n          data={section}\n          largeTitle={largeTitle}\n          largerTitle={largerTitle}\n          showSectionTag={showSectionTag}\n          hideExcerpt={hideExcerpt}\n          visited={visited}\n        />\n      </Flex>\n    ),\n    [\n      direction,\n      section,\n      aspectRatio,\n      largeTitle,\n      largerTitle,\n      showSectionTag,\n      hideExcerpt,\n      visited,\n    ],\n  );\n\n  if (layout === 'featured') {\n    return <FeaturedCard data={data} useWindowMouseEvents={useWindowMouseEvents} />;\n  }\n\n  if (layout === 'imageCard') {\n    return <ImageCard data={data} />;\n  }\n\n  return (\n    <Link\n      to={linkUrl}\n      as={GatsbyLink}\n      onClick={handleClick}\n      _hover={{\n        textDecoration: 'none',\n        color: 'navy',\n      }}\n      width='100%'\n      aria-label={title}\n      role='group'\n    >\n      {cardContent}\n    </Link>\n  );\n}\n\nexport default React.memo(SectionCard);\n","'use client'\nimport {\n  getClosestValue\n} from \"./chunk-C53CKZDP.mjs\";\nimport {\n  useBreakpoint\n} from \"./chunk-6KW5I77S.mjs\";\n\n// src/use-breakpoint-value.ts\nimport { useTheme } from \"@chakra-ui/system\";\nimport { isObject } from \"@chakra-ui/shared-utils\";\nimport { arrayToObjectNotation } from \"@chakra-ui/breakpoint-utils\";\nfunction useBreakpointValue(values, arg) {\n  var _a;\n  const opts = isObject(arg) ? arg : { fallback: arg != null ? arg : \"base\" };\n  const breakpoint = useBreakpoint(opts);\n  const theme = useTheme();\n  if (!breakpoint)\n    return;\n  const breakpoints = Array.from(((_a = theme.__breakpoints) == null ? void 0 : _a.keys) || []);\n  const obj = Array.isArray(values) ? Object.fromEntries(\n    Object.entries(arrayToObjectNotation(values, breakpoints)).map(\n      ([key, value]) => [key, value]\n    )\n  ) : values;\n  return getClosestValue(obj, breakpoint, breakpoints);\n}\n\nexport {\n  useBreakpointValue\n};\n//# sourceMappingURL=chunk-KC77MHL3.mjs.map","'use client'\nimport {\n  useMediaQuery\n} from \"./chunk-57I6FYPZ.mjs\";\n\n// src/use-breakpoint.ts\nimport { useTheme } from \"@chakra-ui/system\";\nimport { isObject } from \"@chakra-ui/shared-utils\";\nfunction useBreakpoint(arg) {\n  var _a, _b;\n  const opts = isObject(arg) ? arg : { fallback: arg != null ? arg : \"base\" };\n  const theme = useTheme();\n  const breakpoints = theme.__breakpoints.details.map(\n    ({ minMaxQuery, breakpoint }) => ({\n      breakpoint,\n      query: minMaxQuery.replace(\"@media screen and \", \"\")\n    })\n  );\n  const fallback = breakpoints.map((bp) => bp.breakpoint === opts.fallback);\n  const values = useMediaQuery(\n    breakpoints.map((bp) => bp.query),\n    { fallback, ssr: opts.ssr }\n  );\n  const index = values.findIndex((value) => value == true);\n  return (_b = (_a = breakpoints[index]) == null ? void 0 : _a.breakpoint) != null ? _b : opts.fallback;\n}\n\nexport {\n  useBreakpoint\n};\n//# sourceMappingURL=chunk-6KW5I77S.mjs.map","'use client'\n\n// src/media-query.utils.ts\nimport { breakpoints as defaultBreakPoints } from \"@chakra-ui/breakpoint-utils\";\nfunction getClosestValue(values, breakpoint, breakpoints = defaultBreakPoints) {\n  let index = Object.keys(values).indexOf(breakpoint);\n  if (index !== -1) {\n    return values[breakpoint];\n  }\n  let stopIndex = breakpoints.indexOf(breakpoint);\n  while (stopIndex >= 0) {\n    const key = breakpoints[stopIndex];\n    if (values.hasOwnProperty(key)) {\n      index = stopIndex;\n      break;\n    }\n    stopIndex -= 1;\n  }\n  if (index !== -1) {\n    const key = breakpoints[index];\n    return values[key];\n  }\n  return void 0;\n}\n\nexport {\n  getClosestValue\n};\n//# sourceMappingURL=chunk-C53CKZDP.mjs.map","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n    delta: 10,\n    preventScrollOnSwipe: false,\n    rotationAngle: 0,\n    trackMouse: false,\n    trackTouch: true,\n    swipeDuration: Infinity,\n    touchEventOptions: { passive: true },\n};\nconst initialState = {\n    first: true,\n    initial: [0, 0],\n    start: 0,\n    swiping: false,\n    xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n    if (absX > absY) {\n        if (deltaX > 0) {\n            return RIGHT;\n        }\n        return LEFT;\n    }\n    else if (deltaY > 0) {\n        return DOWN;\n    }\n    return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n    if (angle === 0)\n        return pos;\n    const angleInRadians = (Math.PI / 180) * angle;\n    const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n    const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n    return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n    const onStart = (event) => {\n        const isTouch = \"touches\" in event;\n        // if more than a single touch don't track, for now...\n        if (isTouch && event.touches.length > 1)\n            return;\n        set((state, props) => {\n            // setup mouse listeners on document to track swipe since swipe can leave container\n            if (props.trackMouse && !isTouch) {\n                document.addEventListener(mouseMove, onMove);\n                document.addEventListener(mouseUp, onUp);\n            }\n            const { clientX, clientY } = isTouch ? event.touches[0] : event;\n            const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n            props.onTouchStartOrOnMouseDown &&\n                props.onTouchStartOrOnMouseDown({ event });\n            return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n        });\n    };\n    const onMove = (event) => {\n        set((state, props) => {\n            const isTouch = \"touches\" in event;\n            // Discount a swipe if additional touches are present after\n            // a swipe has started.\n            if (isTouch && event.touches.length > 1) {\n                return state;\n            }\n            // if swipe has exceeded duration stop tracking\n            if (event.timeStamp - state.start > props.swipeDuration) {\n                return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n            }\n            const { clientX, clientY } = isTouch ? event.touches[0] : event;\n            const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n            const deltaX = x - state.xy[0];\n            const deltaY = y - state.xy[1];\n            const absX = Math.abs(deltaX);\n            const absY = Math.abs(deltaY);\n            const time = (event.timeStamp || 0) - state.start;\n            const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n            const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n            const dir = getDirection(absX, absY, deltaX, deltaY);\n            // if swipe is under delta and we have not started to track a swipe: skip update\n            const delta = typeof props.delta === \"number\"\n                ? props.delta\n                : props.delta[dir.toLowerCase()] ||\n                    defaultProps.delta;\n            if (absX < delta && absY < delta && !state.swiping)\n                return state;\n            const eventData = {\n                absX,\n                absY,\n                deltaX,\n                deltaY,\n                dir,\n                event,\n                first: state.first,\n                initial: state.initial,\n                velocity,\n                vxvy,\n            };\n            // call onSwipeStart if present and is first swipe event\n            eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n            // call onSwiping if present\n            props.onSwiping && props.onSwiping(eventData);\n            // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n            // so we can call preventDefault if needed\n            let cancelablePageSwipe = false;\n            if (props.onSwiping ||\n                props.onSwiped ||\n                props[`onSwiped${dir}`]) {\n                cancelablePageSwipe = true;\n            }\n            if (cancelablePageSwipe &&\n                props.preventScrollOnSwipe &&\n                props.trackTouch &&\n                event.cancelable) {\n                event.preventDefault();\n            }\n            return Object.assign(Object.assign({}, state), { \n                // first is now always false\n                first: false, eventData, swiping: true });\n        });\n    };\n    const onEnd = (event) => {\n        set((state, props) => {\n            let eventData;\n            if (state.swiping && state.eventData) {\n                // if swipe is less than duration fire swiped callbacks\n                if (event.timeStamp - state.start < props.swipeDuration) {\n                    eventData = Object.assign(Object.assign({}, state.eventData), { event });\n                    props.onSwiped && props.onSwiped(eventData);\n                    const onSwipedDir = props[`onSwiped${eventData.dir}`];\n                    onSwipedDir && onSwipedDir(eventData);\n                }\n            }\n            else {\n                props.onTap && props.onTap({ event });\n            }\n            props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n            return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n        });\n    };\n    const cleanUpMouse = () => {\n        // safe to just call removeEventListener\n        document.removeEventListener(mouseMove, onMove);\n        document.removeEventListener(mouseUp, onUp);\n    };\n    const onUp = (e) => {\n        cleanUpMouse();\n        onEnd(e);\n    };\n    /**\n     * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n     * - true => { passive: false }\n     * - false => { passive: true } // Default\n     *\n     * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n     *\n     * props.touchEventOptions can also be set for all touch event listeners,\n     * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n     * supersede and force passive to false.\n     *\n     */\n    const attachTouch = (el, props) => {\n        let cleanup = () => { };\n        if (el && el.addEventListener) {\n            const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n            // attach touch event listeners and handlers\n            const tls = [\n                [touchStart, onStart, baseOptions],\n                // preventScrollOnSwipe option supersedes touchEventOptions.passive\n                [\n                    touchMove,\n                    onMove,\n                    Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n                ],\n                [touchEnd, onEnd, baseOptions],\n            ];\n            tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n            // return properly scoped cleanup method for removing listeners, options not required\n            cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n        }\n        return cleanup;\n    };\n    const onRef = (el) => {\n        // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n        // ignore null here\n        if (el === null)\n            return;\n        set((state, props) => {\n            // if the same DOM el as previous just return state\n            if (state.el === el)\n                return state;\n            const addState = {};\n            // if new DOM el clean up old DOM and reset cleanUpTouch\n            if (state.el && state.el !== el && state.cleanUpTouch) {\n                state.cleanUpTouch();\n                addState.cleanUpTouch = void 0;\n            }\n            // only attach if we want to track touch\n            if (props.trackTouch && el) {\n                addState.cleanUpTouch = attachTouch(el, props);\n            }\n            // store event attached DOM el for comparison, clean up, and re-attachment\n            return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n        });\n    };\n    // set ref callback to attach touch event listeners\n    const output = {\n        ref: onRef,\n    };\n    // if track mouse attach mouse down listener\n    if (handlerProps.trackMouse) {\n        output.onMouseDown = onStart;\n    }\n    return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n    // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n    if (!props.trackTouch || !state.el) {\n        if (state.cleanUpTouch) {\n            state.cleanUpTouch();\n        }\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n    }\n    // trackTouch is on, so if there are no handlers attached, attach them and exit\n    if (!state.cleanUpTouch) {\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n    }\n    // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n    // remove and reattach handlers (this is required to update the passive option when attaching\n    // the handlers)\n    if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n        props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n        state.cleanUpTouch();\n        return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n    }\n    return state;\n}\nfunction useSwipeable(options) {\n    const { trackMouse } = options;\n    const transientState = React.useRef(Object.assign({}, initialState));\n    const transientProps = React.useRef(Object.assign({}, defaultProps));\n    // track previous rendered props\n    const previousProps = React.useRef(Object.assign({}, transientProps.current));\n    previousProps.current = Object.assign({}, transientProps.current);\n    // update current render props & defaults\n    transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n    // Force defaults for config properties\n    let defaultKey;\n    for (defaultKey in defaultProps) {\n        if (transientProps.current[defaultKey] === void 0) {\n            transientProps.current[defaultKey] = defaultProps[defaultKey];\n        }\n    }\n    const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n    transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n    return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","import React, { useState } from 'react';\nimport { Box, Flex, useBreakpointValue } from '@chakra-ui/react';\nimport { useSwipeable } from 'react-swipeable';\nimport { SectionCard } from '../SectionCard';\n\nconst SwipableContent = ({ items }) => {\n  const [offset, setOffset] = useState(0);\n  const itemWidth = useBreakpointValue({ base: 200, md: 250 }); // Adjust based on screen size\n\n  const handlers = useSwipeable({\n    onSwipedLeft: () =>\n      setOffset((prev) => Math.min(prev + itemWidth, (items.length - 1) * itemWidth)),\n    onSwipedRight: () => setOffset((prev) => Math.max(prev - itemWidth, 0)),\n    preventDefaultTouchmoveEvent: true,\n    trackMouse: true,\n  });\n\n  return (\n    <Box overflow='hidden' position='relative' {...handlers} width='100%'>\n      <Flex transform={`translateX(-${offset}px)`} transition='transform 0.3s ease-out'>\n        {items?.map((item, index) => (\n          <Box key={item.id} minWidth={itemWidth} m={10} ml={index === 0 ? 20 : 5}>\n            <SectionCard data={item} />\n          </Box>\n        ))}\n      </Flex>\n    </Box>\n  );\n};\n\nexport default SwipableContent;\n","import React, { useState } from 'react';\nimport { Container, Flex, Box } from '@chakra-ui/react';\nimport { graphql } from 'gatsby';\nimport { Layout } from '../components/Layout';\nimport { SEO } from '../components/SEO';\nimport { SectionCard } from '../components/SectionCard';\nimport { SectionTag } from '../components/SectionTag';\nimport { SwipableContent } from '../components/SwipableContent';\n\nexport default function Index({ data: { sanityHomePage: data } }) {\n  const { desktopLayout, mobileLayout } = data || {};\n  const [isHovered, setIsHovered] = useState(false);\n\n  return (\n    <Layout>\n      <Container maxWidth='container.xl' display={{ base: 'none', lg: 'block' }}>\n        {desktopLayout?.gridRows?.map((row, index) => (\n          <Flex\n            key={`gridRow-${index}`}\n            direction='column'\n            gap={30}\n            py={{ base: 30, lg: 40 }}\n            borderTop={index !== 0 ? '1px solid' : 'none'}\n            borderColor='zinc.200'\n          >\n            {row?.section && (\n              <Flex>\n                <SectionTag title={row.section} />\n              </Flex>\n            )}\n            <Flex direction={{ base: 'column', lg: 'row' }} gap={{ base: 30, lg: 60 }}>\n              {row?.items?.map((column, colIndex) => (\n                <Flex\n                  key={`gridItem-${colIndex}`}\n                  direction='column'\n                  gap={30}\n                  flex={column.columns}\n                  order={{ base: column.title === 'Featured' ? -1 : 0, lg: '1' }}\n                  onMouseEnter={() => (column.title !== 'Featured' ? setIsHovered(true) : null)}\n                  onMouseLeave={() => (column.title !== 'Featured' ? setIsHovered(false) : null)}\n                >\n                  {column?.section && (\n                    <Flex>\n                      <SectionTag title={column.section} />\n                    </Flex>\n                  )}\n                  {column?.items?.map((item, itemIndex) => (\n                    <SectionCard\n                      data={item}\n                      key={`gridSection-${colIndex}-${itemIndex}`}\n                      useWindowMouseEvents={!isHovered}\n                    />\n                  ))}\n                </Flex>\n              ))}\n            </Flex>\n          </Flex>\n        ))}\n      </Container>\n\n      <Box display={{ base: 'block', lg: 'none' }}>\n        {mobileLayout?.map((row, index) => (\n          <Flex\n            direction='column'\n            gap={20}\n            key={`gridRow-${index}`}\n            borderTop={index !== 0 ? '1px solid' : 'none'}\n            borderColor='zinc.200'\n            py={20}\n          >\n            {row?.section && (\n              <Flex px={20}>\n                <SectionTag title={row.section} />\n              </Flex>\n            )}\n            {row.items[0].items.length === 1 ? (\n              <Box px={20}>\n                <SectionCard data={row.items[0].items[0]} />\n              </Box>\n            ) : (\n              <SwipableContent items={row.items[0].items} />\n            )}\n          </Flex>\n        ))}\n      </Box>\n    </Layout>\n  );\n}\n\nexport const query = graphql`\n  query HomePage {\n    sanityHomePage {\n      desktopLayout: _rawDesktopLayout(resolveReferences: { maxDepth: 10 })\n      mobileLayout: _rawMobileLayout(resolveReferences: { maxDepth: 10 })\n    }\n  }\n`;\n\nexport const Head = () => <SEO title='IMF Annual Report 2024' />;\n"],"names":["ViewIcon","displayName","path","jsxs","fill","children","jsx","d","cx","cy","r","_ref","data","showSectionTag","hideExcerpt","visited","title","section","excerpt","VisitedBox","React","Flex","color","textTransform","fontSize","fontWeight","alignItems","gap","background","padding","mt","direction","width","justifyContent","SectionTag","Text","lineHeight","base","lg","sx","display","WebkitBoxOrient","WebkitLineClamp","overflow","textOverflow","useWindowMouseEvents","aspectRatio","sectionArea","slug","parallaxHero","Link","to","current","as","GatsbyLink","_hover","textDecoration","height","role","position","richTitle","RichText","value","textAlign","CardMedia","MemoizedSanityImage","SanityImage","ImageContent","_image$asset","image","Object","assign","alt","asset","altText","Math","round","hotspot","crop","style","objectFit","objectPosition","CardText","_ref2","prefersReducedMotion","px","paddingTop","paddingBottom","transition","_groupHover","transform","ImageCard","_ref3","usePrefersReducedMotion","linkProps","useMemo","backgroundColor","flex","minHeight","imageContentProps","cardTextProps","Box","zIndex","marginTop","bgGradient","isVisited","url","window","localStorage","getItem","SectionCard","layout","largeTitle","largerTitle","linkUrl","setVisited","useState","handleClick","useCallback","setItem","useEffect","cardContent","md","CardTextArea","FeaturedCard","onClick","useBreakpointValue","values","arg","_a","breakpoint","_b","opts","fallback","breakpoints","__breakpoints","details","map","minMaxQuery","query","replace","bp","ssr","findIndex","useBreakpoint","theme","Array","from","keys","index","indexOf","stopIndex","key","hasOwnProperty","getClosestValue","isArray","fromEntries","entries","LEFT","RIGHT","UP","DOWN","defaultProps","delta","preventScrollOnSwipe","rotationAngle","trackMouse","trackTouch","swipeDuration","Infinity","touchEventOptions","passive","initialState","first","initial","start","swiping","xy","mouseMove","mouseUp","touchEnd","touchMove","touchStart","rotateXYByAngle","pos","angle","angleInRadians","PI","cos","sin","getHandlers","set","handlerProps","onStart","event","isTouch","touches","length","state","props","document","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","slice","timeStamp","x","y","deltaX","deltaY","absX","abs","absY","time","velocity","sqrt","vxvy","dir","getDirection","toLowerCase","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","cancelable","preventDefault","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","attachTouch","el","cleanup","baseOptions","tls","forEach","h","o","output","ref","addState","cleanUpTouch","onMouseDown","useSwipeable","options","transientState","transientProps","previousProps","defaultKey","handlers","stateSetter","undefined","updateTransientState","items","offset","setOffset","itemWidth","onSwipedLeft","prev","min","onSwipedRight","max","preventDefaultTouchmoveEvent","item","id","minWidth","m","ml","Index","_desktopLayout$gridRo","sanityHomePage","desktopLayout","mobileLayout","isHovered","setIsHovered","Layout","Container","maxWidth","gridRows","row","_row$items","py","borderTop","borderColor","column","colIndex","_column$items","columns","order","onMouseEnter","onMouseLeave","itemIndex","SwipableContent","Head","SEO"],"sourceRoot":""}