{"version":3,"file":"component---src-pages-what-we-do-economic-surveillance-js-a73b69c9381067fde3b5.js","mappings":"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","sources":["webpack://imf-2022/./src/components/hero.js","webpack://imf-2022/./src/components/read-next.js","webpack://imf-2022/./src/helpers/utils.js","webpack://imf-2022/./src/components/policy-papers.js","webpack://imf-2022/./src/pages/what-we-do/economic-surveillance.js","webpack://imf-2022/./src/images/what-we-do/economic-surveillance/eyeglass-clipboard.inline.svg"],"sourcesContent":["import React, { useState } from \"react\"\nimport Image from \"../components/image\"\nimport VisibilitySensor from \"react-visibility-sensor\"\nimport HeroMask from \"../components/svg/hero-mask\"\n\n/* Notes: \nVideos should placed in the `public > video` folder and referenced like '/video/covid-19/example.mp4'\n*/\n\nexport default function Hero({\n video,\n image,\n alt,\n title,\n text,\n basic,\n classes,\n}) {\n const [loaded, setLoaded] = useState(false)\n const prefersReducedMotion =\n typeof window !== \"undefined\"\n ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches\n : false\n\n // Only play the animation once based on the 'loaded' state\n const onChange = isVisible => {\n isVisible ? setLoaded(true) : setLoaded(false)\n }\n return (\n <section\n className={`\n hero\n ${video ? \"hero--video\" : \"\"}\n ${basic ? \"hero--basic\" : \"\"}\n ${!image ? \"hero--no-image\" : \"\"}\n ${classes ? classes : \"\"}\n `}\n >\n <div className=\"container\">\n {title ? (\n <header>\n <h1 className=\"hero__title\">{title}</h1>{\" \"}\n {text ? <p className=\"hero__subtitle\">{text}</p> : null}\n </header>\n ) : null}\n {video || image ? (\n <VisibilitySensor\n onChange={onChange}\n active={!loaded}\n partialVisibility={true}\n offset={{ bottom: 200 }}\n >\n <div\n className={`hero__media ${\n loaded ? \"hero__media--show\" : \"hero__media--hidden\"\n }`}\n >\n <HeroMask />\n {video && prefersReducedMotion && <Image path={image} />}\n {video && !prefersReducedMotion ? (\n <>\n <video\n src={video}\n muted\n autoPlay\n loop\n playsInline\n controls\n className=\"util__desktop-only\"\n controlsList=\"nofullscreen nodownload\"\n ></video>\n <Image className=\"util__mobile-only\" path={image} />\n </>\n ) : image ? (\n <Image path={image} alt={alt} />\n ) : null}\n </div>\n </VisibilitySensor>\n ) : null}\n </div>\n </section>\n )\n}\n\nexport const HeroCaption = ({ children }) => {\n return (\n <div className=\"hero__caption\">\n <div className=\"hero__caption__inner\">{children}</div>\n </div>\n )\n}\n","import React, { useState } from \"react\"\nimport Image from \"../components/image\"\nimport menuData from \"../data/menu.json\"\nimport findObject from \"../helpers/find-object\"\nimport { Link } from \"gatsby\"\nimport Arrow from \"../images/arrow.inline.svg\"\nimport VisibilitySensor from \"react-visibility-sensor\"\n\nexport default function ReadNext({ sectionID, pageID }) {\n const [loaded, setLoaded] = useState(false)\n const onChange = isVisible => {\n isVisible ? setLoaded(true) : setLoaded(false)\n }\n\n const menu = findObject(menuData, \"id\", sectionID)\n const content =\n menu && pageID ? findObject(menu.children, \"id\", pageID) : menu\n\n const { href, thumbnail, name, deck } = content\n\n return (\n <VisibilitySensor\n onChange={onChange}\n partialVisibility={true}\n offset={{ bottom: 75 }}\n >\n <Link\n className={`read-next ${\n loaded ? \"read-next--show\" : \"read-next--hidden\"\n }`}\n to={href}\n >\n {thumbnail && (\n <Image\n path={thumbnail}\n alt={`Read next: ${name}`}\n className=\"read-next__image\"\n />\n )}\n <div className=\"read-next__content\">\n <div className=\"read-next__content__inner\">\n <header>\n <h2 className=\"title title--s title--bold title--uppercase\">\n Read Next\n </h2>\n <h3 className=\"title title--m\">{name}</h3>\n </header>\n {deck && <p>{deck}</p>}\n </div>\n <div className=\"read-next__content__arrow\">\n <Arrow />\n </div>\n </div>\n </Link>\n </VisibilitySensor>\n )\n}\n","import React from \"react\"\n\nexport const buildStackedBarChartData = obj => {\n const { datasets, labels } = obj.data\n\n const data = labels.map((label, index) => {\n let object = {}\n object[\"0\"] = label\n datasets.forEach(item => {\n object[item.label] = item.data[index]\n })\n\n return object\n })\n return data\n}\n\nexport const buildBarChartData = obj => {\n const { datasets, labels } = obj.data\n let object = {}\n\n labels.forEach((label, index) => {\n // The labels are sometimes formatted in chart.js as arrays so need to turn them into strings\n let formmatedlabel = typeof label === \"string\" ? label : label.join(\" \")\n object[formmatedlabel] = datasets[0].data[index]\n })\n\n return [object]\n}\n\nexport function computedPxToNumber(element, style) {\n const string = window.getComputedStyle(element)[style]\n\n if (string.endsWith(\"px\")) {\n return parseFloat(string.slice(0, -2))\n }\n}\n\nexport const formatSource = text => {\n const toHTML = text\n .replace(/\\/n/g, \"<br/>\") // line breaks\n .replace(/\\*\\*(.+?)\\*\\*/gm, '<b>$1</b>')// bold text\n .replace( /\\*(.+?)\\*/gm, '<i>$1</i>') // italic text\n return <span dangerouslySetInnerHTML={{ __html: toHTML.trim() }} /> // using trim method to remove whitespace\n}\n","import React, { useState, useEffect, useRef } from \"react\"\nimport policyPapersData from \"../data/policy-papers-data.json\"\nimport policyPapersFilters from \"../data/policy-papers-filters.json\"\nimport { slugify } from \"../helpers/strings\"\nimport { computedPxToNumber } from \"../helpers/utils\"\nimport VisibilitySensor from \"react-visibility-sensor\"\n\nexport default function PolicyPapers() {\n const [actionsFilter, setActionsFilter] = useState(\"all\") // Accepts a filter slug\n const [actionsCollapsed, setActionsCollapsed] = useState(true)\n const [scrollTopVisible, setScrollTopVisible] = useState(false)\n\n // Process and store the board actions data *once* into datasets based on the filters\n var processedData = []\n\n policyPapersFilters.forEach(filter => {\n if (filter.slug) {\n if (filter.slug === \"all\") {\n processedData[filter.slug] = policyPapersData\n } else {\n processedData[filter.slug] = policyPapersData.filter(action =>\n action.categories.includes(filter.title)\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 // Hide the load more button if less than 7 items\n useEffect(() => {\n if (filteredData.length <= 6) {\n setActionsCollapsed(false)\n } else {\n setActionsCollapsed(true)\n }\n }, [filteredData.length])\n\n const onChange = isVisible => {\n setScrollTopVisible(isVisible)\n }\n\n return (\n <>\n <span className=\"anchor\" id=\"policy-papers-anchor\" tabIndex=\"-1\" />\n <section\n id=\"policy-papers\"\n className={\n actionsCollapsed\n ? `policy-papers policy-papers--truncated`\n : \"policy-papers\"\n }\n >\n <button\n className={`policy-papers__top ${(scrollTopVisible && !actionsCollapsed) && \"policy-papers__top--visible\"}`}\n onClick={() => document.querySelector(`#policy-papers-anchor`).scrollIntoView({ behavior: 'smooth' })}\n >\n Scroll up to policy papers\n </button>\n <div className=\"policy-papers__main\">\n <header>\n <h2 className=\"title--xl\">Policy Papers</h2>\n <div className=\"policy-papers__filter-wrapper\">\n <header\n id=\"policy-papers__filter__header\"\n className=\"title--micro title--light title--uppercase\"\n >\n Filter By\n </header>\n \n <select\n name=\"filters\"\n id=\"filters-select\"\n className=\"policy-papers__filter\"\n value={actionsFilter}\n onChange={handleSelectChange}\n aria-labelledby=\"policy-papers__filter__header\"\n aria-label=\"Filter the board actions\"\n aria-controls=\"policy-papers\"\n >\n {policyPapersFilters.map((filter, index) => {\n return (\n <option\n key={\"filter-select-\" + filter.slug + index}\n value={filter.slug}\n >\n {filter.title}\n </option>\n )\n })}\n </select>\n </div>\n </header>\n <VisibilitySensor\n onChange={onChange}\n partialVisibility={true}\n offset={{ top: 600 }}\n >\n <ul className=\"policy-papers__items\">\n {filteredData.map((action, index) => {\n // Action id must be totally unique or the list will not render/filter correctly\n let id = `policy-papers-item-${slugify(action.title)}-${slugify(\n action.date\n )}-index${index}`\n\n return (\n <PolicyPapersItem\n key={id}\n id={id}\n action={action}\n actionsCollapsed={actionsCollapsed}\n />\n )\n })}\n </ul>\n </VisibilitySensor>\n {actionsCollapsed && (\n <button\n className=\"cta cta--primary\"\n onClick={() => setActionsCollapsed(false)}\n >\n Load More\n </button>\n )}\n </div>\n </section>\n </>\n )\n}\n\nfunction PolicyPapersItem({ id, action, actionsCollapsed }) {\n const contentRef = useRef(null)\n const contentPreviewClass = \"policy-papers__items__item__content--preview\"\n const [showContentPreview, setShowContentPreview] = useState(false)\n const [clampContent, setClampContent] = useState(false)\n const { date, categories, link, title, summary, press_release } = action\n\n // Initialize clamped state if content is too long\n useEffect(() => {\n const content = contentRef.current.querySelector(\".text-block > p\")\n const contentHeight = computedPxToNumber(content, \"height\")\n const contentLineHeight = computedPxToNumber(content, \"lineHeight\")\n\n if (!clampContent && !showContentPreview) {\n if (contentHeight > contentLineHeight * 3) {\n contentRef.current.classList.add(contentPreviewClass)\n setClampContent(true) // Only set once by design to prevent state reversion\n setShowContentPreview(true)\n }\n }\n }, [actionsCollapsed, clampContent, showContentPreview])\n\n // Listen to showContentPreview (i.e. button clicks) and show content if it has been clamped\n useEffect(() => {\n if (clampContent && !showContentPreview) {\n contentRef.current.classList.remove(contentPreviewClass)\n }\n }, [clampContent, showContentPreview])\n\n return (\n <li id={id} className=\"policy-papers__items__item\">\n <div className=\"policy-papers__items__item__date\">\n <p className=\"title--xs\">{date}</p>\n <div className=\"policy-papers__items__item__date__line\"></div>\n </div>\n <div ref={contentRef} className=\"policy-papers__items__item__content\">\n <header>\n <p className=\"policy-papers__items__item__content__category title--xs\">\n {categories}\n </p>\n <h3 className=\"title--r md:title--m\">\n {link ? (\n <a href={link} target=\"_blank\" rel=\"noreferrer\">\n {title}\n </a>\n ) : (\n title\n )}\n </h3>\n </header>\n\n {summary && (\n <div className=\"text-block\">\n <p>{summary}</p>\n {press_release && (\n <p>\n For more information, read the{\" \"}\n <a href={press_release} target=\"_blank\" rel=\"noreferrer\">\n press release\n </a>\n .\n </p>\n )}\n <button\n type=\"button\"\n onClick={() => setShowContentPreview(false)}\n aria-controls={id}\n >\n View More\n </button>\n </div>\n )}\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport Layout from \"../../components/layout\"\nimport Page from \"../../components/page\"\nimport Hero from \"../../components/hero\"\nimport { PageColumns, Column } from \"../../components/page-column\"\nimport PolicyPapers from \"../../components/policy-papers\"\nimport ReadNext from \"../../components/read-next\"\nimport { StatContainer } from \"../../components/stat\"\nimport IconEyeglassClipboard from \"../../images/what-we-do/economic-surveillance/eyeglass-clipboard.inline.svg\"\n\nexport default function EconomicSurveillance() {\n return (\n <Layout>\n <Hero\n title=\"Economic Surveillance\"\n image=\"what-we-do/economic-surveillance/hero.jpg\"\n basic\n />\n <Page>\n <PageColumns>\n <Column location=\"left\">\n <StatContainer classes=\"stat-container--hero\">\n <header>\n <h2>\n 126\n </h2>\n <p className=\"stat__subhead\">\n country health checks\n </p>\n <div className=\"stat__icon\">\n <IconEyeglassClipboard />\n </div>\n </header>\n <p>\n The IMF monitors the international monetary system as well as\n the economic and financial policies of its member countries. As\n part of this monitoring, known as{\" \"}\n <a href=\"https://www.imf.org/en/About/Factsheets/IMF-Surveillance\">\n surveillance\n </a>\n , which takes place both at the global level and in individual\n countries, the IMF highlights possible risks to stability and\n advises on policy adjustments to address these risks. Country\n surveillance culminates in regular (usually annual)\n consultations with individual member countries, known as Article\n IV consultations. For members with systemically important\n financial sectors, the IMF also conducts regular in-depth\n analysis of the countries’ financial sectors under the FSAP.\n </p>\n </StatContainer>\n </Column>\n\n <Column classes=\"text-block\">\n <p className=\"dropcap\">\n Through “surveillance,†the IMF monitors the international\n monetary system and global economic developments and engages in\n annual health checks of the economic and financial policies of its\n 190 member countries. In addition, the IMF highlights possible\n stability risks to its member countries and advises their\n governments on potential policy adjustments, enabling the\n international monetary system to achieve its goal of facilitating\n the exchange of goods, services, and capital among countries,\n thereby sustaining sound economic growth. The IMF gives\n country-specific advice through “bilateral surveillance†and\n provides analysis of the international monetary system and global\n and regional economic developments through “multilateral\n surveillance.†In practice, these two aspects of surveillance\n inform each other, ensuring a more comprehensive, consistent\n analysis of “spilloversâ€: how one country’s policies affect other\n countries.\n </p>\n <p>\n In this era of unprecedented economic uncertainty, timely and\n tailored surveillance remains vital to share lessons and provide\n members with well-calibrated policy advice.\n </p>\n <h2>Bilateral surveillance</h2>\n <p>\n Article IV consultations consist of a two-way policy dialogue\n between the IMF and country authorities and cover a range of\n important issues: fiscal, financial, foreign exchange, monetary,\n and structural. In FY 2022, the IMF conducted 126 Article IV\n consultations and 11 financial system stability assessments under\n the FSAP.\n </p>\n <p>\n Following the recent{\" \"}\n <a href=\"https://www.imf.org/en/Topics/Comprehensive-Surveillance-Review\">\n Comprehensive Surveillance Review\n </a>{\" \"}\n and the{\" \"}\n <a href=\"https://www.imf.org/en/Publications/Policy-Papers/Issues/2021/06/01/2021-Financial-Sector-Assessment-Program-Review-Background-Paper-On-Scope-460585\">\n review of the FSAP\n </a>\n , the IMF is continuing to refine its bilateral surveillance\n activities, including by strengthening systemic risk analysis,\n better anchoring macroprudential policy advice, improving the\n Fund’s forecasting and monitoring frameworks, and furthering the\n work on data provision and standards. Guidance on medium-term\n fiscal frameworks is also being strengthened.\n </p>\n <h2>Multilateral surveillance</h2>\n <p>\n As part of its multilateral surveillance, the IMF issues biannual\n reports and updates on the latest global economic developments:\n the{\" \"}\n <i>\n <a href=\"https://www.imf.org/en/Publications/WEO\">\n World Economic Outlook\n </a>\n </i>\n , the{\" \"}\n <i>\n <a href=\"https://www.imf.org/en/Publications/GFSR\">\n Global Financial Stability Report\n </a>\n </i>\n , and the{\" \"}\n <i>\n <a href=\"https://www.imf.org/en/Publications/FM\">\n Fiscal Monitor\n </a>\n </i>\n . In-depth analyses of selected and highly topical issues are\n included in these publications as thematic chapters. Interim\n updates on global economic conditions are issued when warranted.\n In addition, as part of an ongoing effort to provide a rigorous\n and candid assessment of global excess imbalances and their\n causes, the{\" \"}\n <i>\n <a href=\"https://www.imf.org/en/Publications/SPROLLs/External-Sector-Reports\">\n External Sector Report\n </a>\n </i>{\" \"}\n is published annually.\n </p>\n <p>\n Reports on the outlooks for regions are also published. These\n cover regional policy developments and challenges and provide\n country-specific data and analysis.\n </p>\n <p>\n Article IV consultations and financial system stability\n assessments under the FSAP also discuss issues related to\n multilateral surveillance, where relevant.\n </p>\n <h2>Institutional view on capital flows</h2>\n <p>\n The Institutional View on the Liberalization and Management of{\" \"}\n <a href=\"https://www.imf.org/en/Topics/Capital-Flows\">\n Capital Flows\n </a>{\" \"}\n was updated in FY 2022 to consider appropriate preemptive use of\n capital flow management measures and macroprudential measures,\n even when there is no surge in capital inflows, to address certain\n financial stability risks. This change builds on the{\" \"}\n <a href=\"https://www.imf.org/en/Topics/IPF-Integrated-Policy-Framework\">\n Integrated Policy Framework\n </a>\n , an IMF research effort to build a systematic framework to\n analyze policy options and trade-offs in response to shocks, given\n country-specific characteristics.\n </p>\n <p>\n Another relevant update gives special treatment to some categories\n of capital flow management measures. These include certain\n macroprudential measures imposed in line with the Basel Framework,\n tax measures based on certain international cooperation standards\n to prevent or diminish the avoidance or evasion of taxes, measures\n implemented in line with the international standard to combat\n money laundering and financing of terrorism, and measures\n introduced for national or international security reasons.\n </p>\n <p>\n Like other IMF policies, the Institutional View will continue to\n be informed by advances in research and experiences with its\n implementation, as well as by developments in the global economy.\n </p>\n <h2>Policy advice</h2>\n <p>\n The IMF Executive Board discusses all aspects of the IMF’s work,\n from Article IV consultations to policy issues relevant to the\n global economy. The Board carries out its work largely on the\n basis of policy papers prepared by the IMF staff. In FY 2022, the\n IMF published 72 of these policy papers externally. Below is a\n comprehensive list of IMF policy papers issued in FY 2022.\n </p>\n </Column>\n </PageColumns>\n </Page>\n\n <PolicyPapers />\n\n <ReadNext sectionID=\"what-we-do\" pageID=\"lending\" />\n </Layout>\n )\n}\n","var React = require('react');\n\nfunction EyeglassClipboardInline (props) {\n return React.createElement(\"svg\",props,React.createElement(\"path\",{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M15.882.938c0-.518.42-.938.938-.938h4.376c.518 0 .938.42.938.938v1.438h1.439c.462 0 .855.336.927.792l.25 1.584h11.828c.518 0 .938.42.938.938v36.69l1.601 1.6a.938.938 0 1 1-1.326 1.327l-1.867-1.867a.743.743 0 0 1-.018-.018l-6.826-6.825-.833.85a.94.94 0 0 1-.29.294l-.878.896 10.804 10.862.014.016c.239.263.695.31 1.037.012l.04-.04 2.121-2.183a.938.938 0 1 1 1.346 1.307l-2.136 2.198-.079.079-.016.015c-1.027.933-2.676.983-3.685-.11l-11.43-11.49a.938.938 0 0 1 .022-1.345l.996-1.015-.818-.818a10.28 10.28 0 0 1-6.537 2.329c-3.63 0-6.815-1.864-8.654-4.69H4.69a.938.938 0 0 1-.938-.938v-13.13a.938.938 0 0 1 1.876 0v12.192h3.513a10.319 10.319 0 0 1-.7-3.751A10.304 10.304 0 0 1 18.758 17.82a10.305 10.305 0 0 1 10.317 10.316c0 1.324-.248 2.59-.7 3.752h3.513V19.696a.938.938 0 0 1 1.876 0v13.13c0 .518-.42.938-.938.938h-5.414c-.238.365-.498.715-.78 1.046l.794.794 1.642-1.673 6.572 6.572V6.628H25.046l.204 1.292a.938.938 0 0 1-.927 1.084H13.881a.938.938 0 0 1-.927-1.084l.204-1.292H1.876v35.918l.008.133c.009.12.026.299.062.515.073.437.217 1.005.495 1.562.277.553.677 1.078 1.26 1.466.576.384 1.387.673 2.552.673h19.07a.938.938 0 1 1 0 1.876H6.253c-1.493 0-2.675-.376-3.593-.988-.912-.608-1.509-1.412-1.897-2.188a7.468 7.468 0 0 1-.667-2.092 7.457 7.457 0 0 1-.094-.894L0 5.69c0-.518.42-.938.938-.938h12.516l.243-1.54a.938.938 0 0 1 .933-.836h1.252V.938Zm10.427 31.148a.937.937 0 0 0-.35.6 8.498 8.498 0 0 1-6.263 3.867V24.385h6.751A8.467 8.467 0 0 1 27.3 28.1c0 1.44-.358 2.797-.99 3.986Zm-1.107-9.577a8.504 8.504 0 0 0-14.439 2.814h3.305c.518 0 .938.42.938.938v9.448c.864.431 1.813.72 2.814.835V23.447c0-.518.42-.938.938-.938h6.445ZM13.13 34.433v-7.234h-2.783a8.462 8.462 0 0 0 1.116 5.197 8.54 8.54 0 0 0 1.667 2.037Zm3.69-30.181H15.433l-.454 2.876h8.246l-.454-2.876H16.82Zm3.438-2.376v.5h-2.5v-.5h2.5Z\",\"fill\":\"#fff\"}));\n}\n\nEyeglassClipboardInline.defaultProps = {\"viewBox\":\"0 0 43 52\",\"width\":\"43\",\"height\":\"52\",\"fill\":\"none\"};\n\nmodule.exports = EyeglassClipboardInline;\n\nEyeglassClipboardInline.default = EyeglassClipboardInline;\n"],"names":["Hero","video","image","alt","title","text","basic","classes","loaded","setLoaded","useState","prefersReducedMotion","window","matchMedia","matches","className","onChange","isVisible","active","partialVisibility","offset","bottom","path","src","muted","autoPlay","loop","playsInline","controls","controlsList","HeroCaption","children","ReadNext","sectionID","pageID","menu","findObject","menuData","content","href","thumbnail","name","deck","Link","to","buildStackedBarChartData","obj","datasets","labels","data","map","label","index","object","forEach","item","buildBarChartData","formmatedlabel","join","computedPxToNumber","element","style","string","getComputedStyle","endsWith","parseFloat","slice","formatSource","toHTML","replace","dangerouslySetInnerHTML","__html","trim","PolicyPapers","actionsFilter","setActionsFilter","actionsCollapsed","setActionsCollapsed","scrollTopVisible","setScrollTopVisible","processedData","policyPapersFilters","filter","slug","policyPapersData","action","categories","includes","filteredData","useEffect","length","id","tabIndex","onClick","document","querySelector","scrollIntoView","behavior","value","e","target","key","top","slugify","date","PolicyPapersItem","contentRef","useRef","contentPreviewClass","showContentPreview","setShowContentPreview","clampContent","setClampContent","link","summary","press_release","current","contentHeight","contentLineHeight","classList","add","remove","ref","rel","type","EconomicSurveillance","location","React","EyeglassClipboardInline","props","createElement","defaultProps","module","exports","default"],"sourceRoot":""}