{"version":3,"sources":["webpack:///./src/components/read-next.js","webpack:///./src/components/hero.js","webpack:///./src/helpers/find-object.js","webpack:///./src/pages/what-we-do/economic-surveillance.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./src/components/sub-navigation.js"],"names":["ReadNext","sectionID","pageID","menu","findObject","menuData","content","children","className","to","href","name","path","featured_image","alt","Hero","bgColor","video","image","title","text","widthLarge","dangerouslySetInnerHTML","__html","src","muted","autoPlay","loop","playsInline","dataSource","dataSourceProperty","valueToMatch","find","object","EconomicSurveillance","useState","actionsFilter","setActionsFilter","processedData","boardActionsFilters","forEach","filter","slug","boardActionsData","action","categories","includes","filteredData","id","current","withPrefix","value","onChange","e","target","aria-labelledby","aria-label","aria-controls","map","index","key","slugify","date","series_number","BoardActionItem","categoriesString","dateString","dateStringArray","textIsTruncated","setTextIsTruncated","truncatedText","summary","split","splice","join","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","toLowerCase","category","i","words","word","capitalizeFirstLetter","replace","link","rel","length","type","onClick","press_release","createHTML","url","this","SubNavigation","location","findIndex","item","activeItem","useRef","handleScroll","height","document","documentElement","scrollHeight","window","innerHeight","scrollY","pageYOffset","progress","Math","round","style","width","useEffect","addEventListener","flex","ref"],"mappings":"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","file":"component---src-pages-what-we-do-economic-surveillance-js-a3237b2f3f9d4cabd1c5.js","sourcesContent":["import React from \"react\"\nimport Image from \"../components/image\"\nimport menuData from \"../data/menu.json\"\nimport findObject from \"../helpers/find-object\"\nimport { Link } from \"gatsby\"\n\nexport default function ReadNext({ sectionID, pageID }) {\n const menu = findObject(menuData, \"id\", sectionID)\n const content =\n menu && pageID ? findObject(menu.children, \"id\", pageID) : menu\n\n return (\n \n
\n \n Read Next\n \n

{content.name}

\n
\n\n \n \n )\n}\n","import React from \"react\"\nimport Image from \"../components/image\"\n\nexport default function Hero({\n bgColor,\n video,\n image,\n title,\n text,\n widthLarge,\n}) {\n return (\n \n {title ? (\n
\n \n

{title}

{\" \"}\n {text ?

: null}\n
\n \n ) : null}\n {video ? (\n
\n \n
\n ) : image ? (\n
\n \n
\n ) : null}\n \n )\n}\n","export default function findObject(\n dataSource,\n dataSourceProperty,\n valueToMatch\n) {\n return dataSource.find(object => object[dataSourceProperty] === valueToMatch)\n}\n","import React, { useState } from \"react\"\nimport { withPrefix } from \"gatsby\"\nimport Layout from \"../../components/layout\"\nimport SubNavigation from \"../../components/sub-navigation\"\nimport Hero from \"../../components/hero\"\nimport ReadNext from \"../../components/read-next\"\nimport boardActionsData from \"../../data/board-actions-data.json\"\nimport boardActionsFilters from \"../../data/board-actions-filters.json\"\nimport { slugify, capitalizeFirstLetter } from \"../../helpers/strings\"\n\nconst PAGESLUG = \"economic-surveillance\"\n\nexport default function EconomicSurveillance() {\n const [actionsFilter, setActionsFilter] = useState(\"all\") // Accepts a filter slug\n\n // Process and store the board actions data *once* into datasets based on the filters\n var processedData = []\n\n boardActionsFilters.forEach(filter => {\n if (filter.slug) {\n if (filter.slug === \"all\") {\n processedData[filter.slug] = boardActionsData\n } else {\n processedData[filter.slug] = boardActionsData.filter(action =>\n action.categories.includes(filter.slug)\n )\n }\n }\n })\n\n // Update the current dataset according to the actionsFilter state\n var filteredData = processedData[actionsFilter]\n\n //\n // Event Handlers\n //\n\n function handleSelectChange(e) {\n setActionsFilter(e.target.value)\n }\n\n return (\n \n \n \n
\n
\n
\n

Introduction

\n

\n The Board discusses all aspects of the Fund’s work, from the IMF\n staff’s annual health checks of member countries’ economies to\n policy issues relevant to the global economy. The Board carries\n out its work largely on the basis of papers prepared by IMF\n management and staff. In FY 2020, the IMF conducted 129 Article IV\n consultations (see{\" \"}\n \n Web Table 2.1\n \n ) and published externally 59 Policy Papers.\n

\n

\n The IMF also issues biannual reports and updates on the latest\n global economic developments—the World Economic Outlook,\n the Global Financial Stability Report, the{\" \"}\n Fiscal Monitor, and the External Sector Report—that\n provide important economic forecasting and policy guidance.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n

Policy Papers

\n
\n \n Filter By\n
\n \n {boardActionsFilters.map((filter, index) => {\n return (\n \n {filter.title}\n \n )\n })}\n \n
\n \n
\n {filteredData.map((action, index) => {\n // Action id must be totally unique or the list will not render/filter correctly\n let id = `board-actions-item-${slugify(\n action.title\n )}-${slugify(action.date)}-${\n action.series_number && slugify(action.series_number)\n }-${index}`\n\n return \n })}\n
\n
\n
\n \n
\n \n
\n )\n}\n\n//\n// Subcomponents\n//\n\nfunction BoardActionItem({ id, action }) {\n const [textIsTruncated, setTextIsTruncated] = useState(true)\n\n var truncatedText = action.summary && truncateText(action.summary)\n\n function truncateText(str) {\n return str.split(\" \").splice(0, 25).join(\" \")\n }\n\n function formatDate(dateString) {\n const months = {\n jan: \"January\",\n feb: \"February\",\n mar: \"March\",\n apr: \"April\",\n may: \"May\",\n jun: \"June\",\n jul: \"July\",\n aug: \"August\",\n sep: \"September\",\n oct: \"October\",\n nov: \"November\",\n dec: \"December\",\n }\n\n let dateStringArray = dateString.split(\"-\")\n\n return `${months[dateStringArray[1].toLowerCase()]} ${\n dateStringArray[0]\n }, 20${dateStringArray[2]}`\n }\n\n function formatCategories(categoriesString) {\n let categories = categoriesString.split(\", \")\n\n categories.forEach((category, i) => {\n let words = category.split(\"-\")\n\n words.forEach((word, i) => {\n words[i] = capitalizeFirstLetter(word)\n })\n\n categories[i] = words.join(\" \").replace(\"Covid 19\", \"COVID-19\")\n })\n\n return categories.join(\", \")\n }\n\n function handleReadMoreButtonClick() {\n setTextIsTruncated(false)\n }\n\n return (\n
\n
\n

\n {formatDate(action.date)}\n

\n
\n
\n
\n
\n

\n {formatCategories(action.categories)}\n

\n

\n {action.link ? (\n \n {action.title}\n \n ) : (\n action.title\n )}\n

\n
\n\n {action.summary?.length &&\n (truncatedText?.length &&\n action.summary?.length > truncatedText?.length ? (\n <>\n

\n {truncatedText}…{\" \"}\n \n Read More\n \n

\n

\n {action.summary}\n

\n {action.press_release && (\n

\n For more information, read the{\" \"}\n \n press release\n \n .\n

\n )}\n \n ) : (\n <>\n

{action.summary}

\n {action.press_release && (\n

\n For more information, read the{\" \"}\n \n press release\n \n .\n

\n )}\n \n ))}\n
\n
\n )\n}\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","import React, { useEffect, useRef } from \"react\"\nimport menuData from \"../data/menu.json\"\nimport findObject from \"../helpers/find-object\"\nimport { Link } from \"gatsby\"\n\nexport default function SubNavigation({ current, id }) {\n const menu = findObject(menuData, \"name\", id).children\n const location = menu.findIndex(item => item.id.includes(current))\n const activeItem = useRef()\n\n const handleScroll = () => {\n var height = document.documentElement.scrollHeight - window.innerHeight\n var scrollY = window.pageYOffset\n var progress = Math.round((scrollY / height) * 100)\n if (activeItem.current) {\n activeItem.current.style.width = progress + \"%\"\n }\n }\n\n const setActive = name => {\n if (current === name) {\n return \"sub-navigation--active\"\n } else if (!current) {\n return \"sub-navigation--active\"\n } else {\n return null\n }\n }\n\n useEffect(() => {\n window.addEventListener(\"scroll\", handleScroll)\n })\n\n return (\n \n )\n}\n"],"sourceRoot":""}