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