{"version":3,"sources":["components/primitives/AnimatedNumber/anime.js","assets/svg/NBIM_logo_min.svg","contexts/ChartDataProvider.js","contexts/CurrencyProvider.js","contexts/ErrorProvider.js","contexts/InternationalOrgProvider.js","config.js","contexts/LanguageProvider.js","contexts/MenuProvider.js","contexts/UiProvider.js","contexts/SearchProvider.js","contexts/TableProvider.js","contexts/TopFilterProvider.js","contexts/TotalsProvider.js","utils/isEmptyUtil.js","utils/langUtil.js","utils/getDataUtil.js","components/primitives/Search/config.js","contexts/WorldMapDataProvider.js","contexts/YearDataProvider.js","contexts/CompanyDataProvider.js","contexts/ContextProvider.js","components/hoc/App.js","components/content/WorldMap/WorldMap.js","components/content/FilteredTotals/FilteredTotalsListItem.js","assets/svg/icons/IconLibrary.js","components/primitives/Icon.js","components/primitives/AnimatedNumber/AnimatedNumber.js","components/primitives/Nr.js","components/content/Language/Lang.js","components/content/FilteredTotals/FilteredTotalsSingleType.js","components/content/FilteredTotals/FilteredTotals.js","utils/formatDateUtil.js","utils/chartsUtils.js","helpers/index.js","helpers/nbimTableColumnToggler.js","helpers/graphToTable.js","components/primitives/Chart/ChartHeading.js","components/primitives/Chart/Chart.js","helpers/lazyScript.js","helpers/userAgent.js","utils/getDerivativeValueUtil.js","utils/getChartsData.js","components/content/History/History.js","components/primitives/ButtonFilter.js","components/primitives/Button.js","components/content/Reports/Reports.js","components/layout/Loading.js","components/primitives/ButtonLink.js","components/content/GlobalFilters/GlobalFiltersReset.js","components/primitives/Divider.js","components/primitives/Search/SearchInput.js","components/primitives/Search/SearchCategory.js","components/primitives/Search/SearchListItem.js","utils/trimSpacesFromStringUtil.js","components/primitives/Search/SearchAutocomplete.js","components/layout/Header.js","components/layout/Main.js","components/layout/Footer.js","components/primitives/Error/Errors.js","components/content/GlobalFilters/GlobalFiltersYears.js","components/primitives/CheckBox.js","components/content/GlobalFilters/GlobalFiltersLocations.js","utils/topFilterSelectionUtil.js","components/content/GlobalFilters/GlobalFiltersSectors.js","data/countTest/sortArrayByKey.js","utils/sortUtil.js","utils/updateYearDataFromSelectionsUtil.js","components/content/GlobalFilters/GlobalFilters.js","components/content/ModalDisclaimer/ModalDisclaimer.js","components/content/FilteredTotals/FilteredTotalsSummary.js","utils/errorAxiosUtil.js","components/layout/Wrapper.js","components/layout/PageLayout.js","components/pages/HomePage.js","components/content/GlobalSummary/GlobalSummary.js","components/pages/GlobalSummaryPage.js","components/primitives/Table/TableCell.js","components/primitives/Table/Table.js","hooks/useWindowSize.js","hooks/useTableWidth.js","utils/prepareDataForExport.js","utils/tableToExcel.js","components/content/InvestmentsList/InvestmentsList.js","components/pages/InvestmentsPage.js","components/content/InvestmentDetails/InvestmentDetails.js","components/pages/CompanyPage.js","components/pages/SearchPage.js","serviceWorker.js","index.js"],"names":["module","exports","defaultInstanceSettings","update","undefined","begin","run","complete","loop","direction","autoplay","offset","defaultTweenSettings","duration","delay","easing","elasticity","round","is","a","Array","isArray","bezier","mX1","mY1","mX2","mY2","aT","aA1","aA2","sampleValues","Float32Array","i","A","B","C","x","easings","names","elastic","t","p","Math","pow","sin","PI","asin","equations","In","Out","f","InOut","functions","linear","Object","keys","forEach","type","apply","filterArray","arr","callback","len","length","thisArg","arguments","result","val","call","push","toArray","o","cloneObject","clone","replaceObjectProps","o1","o2","hasOwnProperty","mergeObjects","minMaxValue","min","max","getFunctionValue","animatable","target","id","total","decomposeValue","rgx","value","original","numbers","match","map","Number","strings","normalizePropertyTweens","prop","tweenSettings","settings","v","obj","k","normalizeTweens","previousTween","tweens","tween","parseFloat","normalizeTweenValues","tweenValue","originalValue","name","previousValue","to","from","start","end","isColor","setTweenProgress","css","style","attribute","setAttribute","object","transform","transforms","getAnimations","animatables","properties","flattenArray","reduce","b","concat","animType","el","getAnimationType","property","createAnimation","getInstanceTimings","animations","instanceSettings","isDelay","anim","createNewInstance","params","targets","parsed","getAnimatables","getProperties","children","activeInstances","raf","engine","play","requestAnimationFrame","step","activeLength","tick","cancelAnimationFrame","anime","now","startTime","lastTime","resolve","makePromise","window","Promise","_resolve","promise","instance","toggleInstanceDirection","reversed","adjustTime","time","syncInstanceChildren","childrenLength","currentTime","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","progress","elapsed","eased","isNaN","toNumbersLength","n","toNumber","fromNumber","currentValue","setCallback","cb","countIteration","remaining","setInstanceProgress","engineTime","insDuration","insOffset","insStart","insCurrentTime","insReversed","began","pause","completed","reset","loops","paused","speed","indexOf","splice","reverse","restart","finished","running","getValue","propName","factory","ChartDataContext","createContext","chartData","ChartDataProvider","useState","setChartData","Provider","CurrencyContext","currency","CurrencyProvider","setCurrency","ErrorContext","errors","ErrorProvider","setErrors","InternationalOrgContext","internationalOrg","InternationalOrgProvider","setInternationalOrg","theApiMode","mode","env","hostname","location","urlBaseDev","previousYear","Date","getFullYear","defaultFilterYear","netlife","defaultYear","yearsLanguage","language","dataYears","animateNumbers","animateNumbersDuration","animateNumbersInit","currentEnv","process","defaultFilterSector","derivativesEnabled","fuseOptions","minMatchCharLength","includeMatches","threshold","findAllMatches","fuseOptionsRealEstate","fuseOptionsInfrastructure","inDevelopment","isRealEstateFilteredBySectorConfig","isInfrastructureFilteredBySectorConfig","inProduction","inTest","internationalOrgNameCountry","internationalOrgNameRegion","globallyOrgNameCountry","globallyOrgNameRegion","langEn","langNo","dataProdApi","paramYear","topFilterYear","dataProdHistoryApi","dataCompanyHistoryApiUrl","y","it","dataSearchApiUrl","searchValueGlobal","searchResultLimit","config","LanguageContext","languageWasChanged","LanguageProvider","setLanguage","setLanguageWasChanged","useEffect","shorterLang","MenuContext","menuIsExpanded","menuIsAnimating","MenuProvider","setMenuIsExpanded","setMenuIsAnimating","UiContext","uiDerivativesPopup","uiIsLoading","uiIsAnimating","uiShowDerivativeDisclaimer","UiProvider","setUiDerivativesPopup","setUiIsLoading","setUiIsAnimating","setUiShowDerivativeDisclaimer","SearchContext","searchDataResponse","autocompleteSearchString","autocompleteData","autocompleteMatches","searchItemInvestmentName","searchOverlay","searchValueInline","searchSelectedRealEstate","searchSelectedInfrastructure","SearchProvider","setSearchDataResponse","setAutocompleteSearchString","setAutocompleteData","setAutocompleteMatches","setSearchItemInvestmentName","setSearchOverlay","setSearchValueGlobal","setSearchValueInline","setSearchSelectedRealEstate","setSearchSelectedInfrastructure","setSearchResultLimit","TableContext","tableItemsShowMoreStatus","tableDataEquities","tableDataFixedIncome","tableDataRealEstate","tableDataInfrastructure","tableNrItems","tableNrItemsShowMore","tableNrItemsToShow","tableNrCountries","tableNrSectors","tableNrPartners","tableSortBy","currentSortedTable","TableProvider","setTableItemsShowMoreStatus","setTableDataEquities","setTableDataFixedIncome","setTableDataRealEstate","setTableDataInfrastructure","setTableNrItems","setTableNrItemsShowMore","setTableNrItemsToShow","setTableNrCountries","setTableNrSectors","setTableNrPartners","setTableSortBy","setCurrentSortedTable","sortDirection","setSortDirection","TopFilterContext","investmentType","realEstateFilteredBySector","infrastructureFilteredBySector","showYears","showLocations","showSectors","showCurrencies","topFilterYears","topFilterLocations","topFilterLocationsLabel","topFilterSector","topFilterSectorList","topFilterOverlay","resetFilters","TopFilterProvider","setInvestmentType","setRealEstateFilteredBySector","setInfrastructureFilteredBySector","setShowYears","setShowLocations","setShowSectors","setShowCurrencies","setTopFilterYear","setTopFilterYears","setTopFilterLocations","setTopFilterLocationsLabel","setTopFilterSector","setTopFilterSectorList","setTopFilterOverlay","setResetFilters","TotalsContext","totalNokConstant","totalUsdConstant","totalInvestmentsNok","totalInvestmentsUsd","totalInvestmentsNrInvestments","totalInvestmentsNrCountries","totalInvestmentsPercentage","totalInvestmentsEquitiesNok","totalInvestmentsEquitiesUsd","totalInvestmentsFixedIncomeNok","totalInvestmentsFixedIncomeUsd","totalInvestmentsRealEstateNok","totalInvestmentsRealEstateUsd","totalInvestmentsInfrastructureNok","totalInvestmentsInfrastructureUsd","totalNrItemsEquities","totalNrItemsFixedIncome","totalNrItemsRealEstate","totalNrItemsInfrastructure","totalNrCountriesEquities","totalNrCountriesFixedIncome","totalNrCountriesRealEstate","totalNrCountriesInfrastructure","totalPercentageEquities","totalPercentageFixedIncome","totalPercentageRealEstate","totalPercentageInfrastructure","derivativesTotalNok","derivativesTotalUsd","derivativesEquitiesNok","derivativesEquitiesUsd","derivativesFixedIncomeNok","derivativesFixedIncomeUsd","derivativesRealEstateNok","derivativesRealEstateUsd","derivativesInfrastructureNok","derivativesInfrastructureUsd","TotalsProvider","setTotalNokConstant","setTotalUsdConstant","setTotalInvestmentsNok","setTotalInvestmentsUsd","setTotalInvestmentsNrInvestments","setTotalInvestmentsNrCountries","setTotalInvestmentsPercentage","setTotalInvestmentsEquitiesNok","setTotalInvestmentsEquitiesUsd","setTotalInvestmentsFixedIncomeNok","setTotalInvestmentsFixedIncomeUsd","setTotalInvestmentsRealEstateNok","setTotalInvestmentsRealEstateUsd","setTotalInvestmentsInfrastructureNok","setTotalInvestmentsInfrastructureUsd","setTotalNrItemsEquities","setTotalNrItemsFixedIncome","setTotalNrItemsRealEstate","setTotalNrItemsInfrastructure","setTotalNrCountriesEquities","setTotalNrCountriesFixedIncome","setTotalNrCountriesRealEstate","setTotalNrCountriesInfrastructure","setTotalPercentageEquities","setTotalPercentageFixedIncome","setTotalPercentageRealEstate","setTotalPercentageInfrastructure","setDerivativesTotalNok","setDerivativesTotalUsd","setDerivativesEquitiesNok","setDerivativesEquitiesUsd","setDerivativesFixedIncomeNok","setDerivativesFixedIncomeUsd","setDerivativesRealEstateNok","setDerivativesRealEstateUsd","setDerivativesInfrastructureNok","setDerivativesInfrastructureUsd","isEmptyObject","verifyObject","constructor","console","error","isNotEmptyObject","isEmptyArray","verifyArray","isNotEmptyArray","lang","langObj","langDef","langLoc","langInv","langGlobal","langGlobalSimpler","lg","finalLang","getOwnership","toFixed","thousandify","number","toLowerCase","toLocaleString","replace","noCountrySelected","list","every","s","selected","isFiltered","selectionLocations","selectionSector","hasSelectedLocations","getSelectedSectorMode","sectorList","selectedSector","output","l","investmentTypeSectors","sectors","some","locationFilterLabel","data","langSet","selectedLocations","label","nrRegions","nrCountries","loneRegionName","loneCountryName","internationalOrgIsSelected","globallyOrgIsSelected","noSelectedLocations","region","countries","noSelectedCountries","disabled","regionName","country","labelRegions","labelCountries","regions","filter","regionDetails","regionId","theRegion","theMode","ct","eq","investmentTypeDetails","vu","cp","hd","getEqAndFiCompanies","re","reg","co","companyDetails","nok","holdingsDetails","usd","sector","ownership","voting","fi","h","vo","company","ic","showAmount","updateLocationsList","countryId","setSelectedLocations","testing","tempSelectedLocations","sl","selectedRegionCountries","selectedRegionWithAllCountriesSelected","selectedCountriesOnlyOne","selectedCountriesPartial","selectedCountriesAll","slc","regionWithCountry","regionObj","regionCountries","allCountriesAreSelected","regionWithCountryUpdated","onlyOneCountryIsSelected","moreThanOneCountryIsSelected","noCountriesAreSelected","regionHasSelectedSector","regionSectors","selectedRegionWithSomeCountriesSelected","countryHasSelectedSector","filteredTableData","search","realEstate","infrastructure","setFuseOptions","Fuse","m","item","showMoreNumber","nrItemsSector","tableNrItemsLeftToShow","getLevel","locations","WorldMapDataContext","worldMapData","WorldMapDataProvider","useContext","setWorldMapData","c","isActive","getWorldMapSeries","YearDataContext","currentYear","howWeVotedUrlEn","howWeVotedUrlNo","yearData","yearDataUpdated","yearDataHistory","isTemporaryData","temporaryDataDateNo","temporaryDataDateEn","YearDataProvider","setCurrentYear","setHowWeVotedUrlEn","setHowWeVotedUrlNo","setYearData","setYearDataUpdated","setYearDataHistory","setIsTemporaryData","setTemporaryDataDateNo","setTemporaryDataDateEn","CompanyDataContext","companyData","CompanyDataProvider","setCompanyData","ProviderComposer","contexts","reduceRight","kids","parent","React","cloneElement","ContextProvider","App","className","WorldMap","pageType","chart","useRef","useLayoutEffect","am4core","am4themes_animated","container","width","height","logo","chartX","createChild","am4maps","svgContainer","hideOverflow","geodata","am4geodata_worldLow","projection","NaturalEarth1","polygonSeries","series","mapPolygons","template","strokeWidth","selectedBgColor","pt","hasInvestmentButNotSelectedBgColor","stroke","strokeColor","fill","defaultBgColor","exclude","useGeodata","polygonTemplate","maxZoomLevel","seriesContainer","draggable","resizable","chartContainer","wheelable","events","disableType","background","worldMapDataWithColors","propertyFields","current","autoDispose","clickable","valign","classnames","renderMap","FilteredTotalsListItem","amount","borderColor","defaultProps","icons","d","defaultStyles","display","Icon","icon","viewBox","styles","theName","key","uuidv4","xmlns","xmlnsXlink","renderSVG","propTypes","PropTypes","string","isRequired","defaultFunction","AnimatedNumber","state","animatedValue","componentDidMount","animateValue","componentDidUpdate","prevProps","props","updateValue","anima","setState","this","animate","formatValue","Component","Nr","size","timeoutRef","nr","setNr","str","split","sizeClass","convertStringToArraysOfChars","setTimeout","clearTimeout","Lang","txt","lgObj","json","LangDynamic","dateValue","changedText","FilteredTotalsSingleType","countriesCount","investmentsCount","percentageOfTotal","totalAmount","totalCurrency","slug","NoDataComponent","toUpperCase","investmentsKind","href","FilteredTotals","dateIsValid","date","JSON","stringify","getYearUtil","newDate","getDateLabel","getYears","isObject","sliceData","sliceBy","slice","hasClass","cl","hasChildren","child","classList","contains","excludeHost","host","RegExp","test","logMessage","message","log","nbimTableColumnToggler","buttons","document","getElementsByClassName","j","addEventListener","row","parentElement","remove","add","columnToggler","graphToTable","renderTo","renderAsResponsiveTable","exportToXls","renderToElm","getElementById","timeline","innerHTML","createElement","thead","tbody","table","currentColumn","currentRow","totalColumns","totalRows","sort","index","column","columnValue","toggler","appendChild","firstChild","tableHTML","s2ab","buf","ArrayBuffer","view","Uint8Array","charCodeAt","wb","XLSX","utils","table_to_book","sheet","wbout","write","bookType","bookSST","saveAs","Blob","ChartHeading","level","paramInvestmentType","useParams","heading","lowcase","modeName","isIE11","MSInputMethodContext","documentMode","sharedChartOptions","decimalPoint","thousandsSep","global","useUTC","backgroundColor","fontFamily","fontStyle","fontWeight","spacingRight","spacingBottom","spacingLeft","xAxis","minPadding","maxPadding","credits","enabled","title","text","navigator","allButtonsEnabled","includeInCSVExport","legend","layout","verticalAlign","borderWidth","floating","align","margin","itemMarginBottom","padding","itemStyle","color","textDecoration","exporting","sharedYAxis","gridLineWidth","lineWidth","linkedTo","opposite","visible","sharedChartPropsArea","tickInterval","tickPositioner","positions","floor","dataMin","dataMax","plotOptions","line","marker","csv","dateFormat","decimals","sharedChartPropsColumn","responsive","rules","condition","maxWidth","chartOptions","sharedChartPropsPie","pie","slicedOffset","allowPointSelect","cursor","dataLabels","format","fontSize","startAngle","endAngle","sharedChartPropsLine","initChart","reflowStatus","chartType","showFilter","buttonHeader","buttonActiveText","buttonsInactive","extras","optionsYAxis","getSeriesTimeline","sharedChartProps","warn","renderTheChart","localChartProps","allProps","merge","options","emptyTarget","mergedYAxisObject","yAxis","arrayMerge","source","destination","shouldClone","isMergeableObject","allPropsWithYAxis","Highcharts","setOptions","highchartsData","Chart","status","showAsTableTextOff","showAsTableTextOn","elExtras","idExtrasRenderTable","idExtrasButtonTable","idExtrasButtonDownload","extrasButtonTableDOM","extrasRenderTableDOM","extrasButtonDownloadDOM","e","preventDefault","stopPropagation","innerText","renderExtras","elButtons","classesBtnsWrapper","classesBtnsInactive","btnsWrapper","btnsHeader","btnActive","btn","querySelectorAll","selectedButton","querySelector","buttonsChartData","valueToSend","getAttribute","dataToReturn","z","slicedData","seriesToPush","slicedTimeline","q","reflow","parseInt","renderChart","id1","options1","doIt","id2","options2","chartNok","chartUsd","selectNok","selectUsd","buttonsNok","buttonsUsd","extrasNok","extrasUsd","sourceTextNok","sourceTextUsd","toggleCurrencySelection","notLazy","elId","scriptUrl","CustomEvent","event","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","prototype","Event","scrollingHandler","checkViewport","getElement","windowHeight","innerHeight","documentElement","clientHeight","windowWidth","innerWidth","clientWidth","notCalled","fireWhenReady","straightAway","rect","getBoundingClientRect","top","left","bottom","right","dispatchEvent","injectJS","url","injs","src","async","success","body","containerScript","doScript","inViewPort","removeEventListener","containerPosition","scrollY","scroll","lazyScript","aria-haspopup","aria-expanded","classes","extraLabel","htmlFor","checked","onChange","sourceText","iOSorAndroid","userAgent","MSStream","getDerivativeValue","derivatives","year","filteredDerivatives","getChartsData","derivativesAreOn","historyDerivatives","allYears","sumDataPrYearNok","sumDataPrYearUsd","sumDerivativeValueNok","sumDerivativeValueUsd","dataToChart","years","u","includes","yearIndex","derivativeValueNok","derivativeValueUsd","sumNok","sumUsd","dataForChart","sumDerivativeValueUsdDividedByMillion","sumDerivativeValueNokDividedByMillion","sumWithDerivativesUsdTableReady","sumWithDerivativesNokTableReady","roundedSumWithDerivativesUsdTableReady","roundedSumWithDerivativesNokTableReady","UTC","serializeChartData","allHdDataForChartEquities","allHdDataForChartFixedIncome","allHdDataForChartRealEstate","allHdDataForChartInfrastructure","allHdDataForChartTotal","allHdDataForCompany","typeIndex","modeData","modeType","setValueLabel","getHighestValueFromNok","arrayNok","theData","arrayMaxMin","chartLabelWithTranslation","sentence","translation","optionsxAxisPlotOptionsLevel1","animation","stacking","maxPointWidth","optionsxAxisPlotOptionsLevel2","pointPadding","getChartSettings","globalFilterChanged","ai","cd","dp","cso","ts","xds","tld","tlnd","tls","tlsu","xti","yti","ynd","yyiu","seriesData","settingsForSingleChart","tempHighestValue","dataDividedByBillion","highestValue","dataTemp","reversedIndex","dataFiltered","dataSorted","legendIndex","legendindex","formatChartDataUtil","currencyFormat","commaSeparator","optionsxAxisPlotOptions","optionsxAxis1","minTickInterval","minRange","labels","formatter","tooltip","labelText","numberFormat","yAxisFormatter","self","dividedStepValue","axis","optionsyAxis1","increment","ceil","downloadXLSText","History","compName","defaultSettingsData","setDefaultSettingData","chartSettings","setChartSettings","setGlobalFilterChanged","istLabel","setIstLabel","companies","find","no","istChartExtraLabel","en","ButtonFilter","ariaControls","ariaExpanded","filterType","handleClick","currentSelection","onClick","aria-controls","Button","iconColor","ariaLabel","overrideColors","aria-label","YearList","ariaLabelledBy","handleSelection","initialYear","handleSave","aria-labelledby","theYear","aria-describedby","getYearsList","InvestmentTypeList","selectedYear","investment","reportsList","reportsItem","getInvestmentTypeList","Reports","initiallySelectedYear","stateReports","setStateReports","setSelectedYear","selectedReport","setSelectedReport","selectedReportTitle","setSelectedReportTitle","showYearsDropdown","setShowYearsDropdown","showInvestmentTypeDrop","setShowInvestmentTypeDrop","dateLabel","setDateLabel","ru","reports","baisUrl","tempStateReports","report","setDateLabelCallback","useCallback","userSelectedYear","yearSettings","ist","istdate","pdf","xls","Loading","loading","version","attributeType","attributeName","dur","repeatCount","ButtonLink","noBorder","GlobalFiltersReset","history","useHistory","resetUrl","Divider","SearchInput","borderFocusColor","focus","hiddenLabel","onChangeHandler","onInputKeyboardEventHandler","placeholder","searchInputRef","hidden","ref","autoComplete","autoCorrect","autoCapitalize","spellCheck","onKeyDown","SearchCategory","SearchListItem","trimSpacesFromString","trim","SearchAutocomplete","isSearching","setIsSearching","searchValue","setSearchValue","handleSearchStatus","timer","clearInterval","LinkElement","lastYear","encodeURIComponent","classNames","maxHeight","equities","fixedIncome","totals","outputEquities","outputFixedIncome","outputRealEstate","outputInfrastructure","all","renderMatches","Header","paramCompanyId","showLevel3BackButton","sectorNameAsButtonLabel","switchToLang","handleLanguageChange","aria-hidden","Main","renderFooterLinks","footerLinks","links","isheader","isexternal","useimage","isitalic","listClass","parseLinks","link","idx","cssclass","Footer","menu","nofooter","enfooter","withHeader","withoutHeader","Errors","inlineErrors","localErrors","setLocalErrors","errorHeading","errorPluralization","errorItem","err","explanation","GlobalFiltersYears","handleToggle","CheckBox","changeHandler","fontBold","preSelected","GlobalFiltersLocations","topFilterLocationsTemp","setTopFilterLocationsTemp","notFiltered","r","hasGloballyOrganisationsAsSingleCountry","renderLocationList","topFilterLocationNames","regionNames","regionsNames","unfilteredSectorList","topFilterSectorNames","regionSectorsRaw","countrySectors","Set","flat","regionSectorsIsFoundInUnfilteredSectorList","countrySectorsRaw","countrySectorsFinal","countrySectorsIsFoundInUnfilteredSectorList","sectorsEquities","sectorsFixedIncome","sectorsRealEstate","sectorsInfrastructure","companiesEquities","comp","sectorEquityCompany","companiesFixedIncome","sectorFixedIncomeCompany","companiesRealEstate","sectorRealEstateListing","sectorRealEstateSector","companiesInfrastructure","sectorInfrastructureListing","sectorInfrastructureSector","topFilterSectorNamesWithStatuses","regionsUpdated","allSectorsOnSelectedLocationsTemp","allSectorsOnSelectedLocations","unfilteredEquities","unfilteredFixedIncome","unfilteredRealEstate","unfilteredInfrastructure","sectorObj","hasSelectedStatus","isSelected","topFilterLocationsNamesWithSectorSelection","selectedSectorList","resolveMatchesInSectorsList","input","selectedRegionSectors","selectedRegionCountriesSectors","GlobalFiltersSectors","sortArrayByKey","array","ascdesc","sortByUtil","sorted","numeric","charAt","alphabetic","sortedAlphabetic","sortBy","sortedNumeric","GlobalFilters","localLevel","setLocalLevel","localLocationsSelections","setLocalLocationsSelections","localSectorSelection","setLocalSectorSelection","escFunction","toggleFilterYears","toggleFilterLocations","toggleFilterSectors","topFilterLocationsList","dataHistory","selectionSectorList","testMode","selectionSectorInvestmentType","tempTableDataEquities","tempTableDataFixedIncome","tempTableDataRealEstate","tempTableDataInfrastructure","updatedRegions","countTestTableEquities","countTestTableFixedIncome","absoluteTotalNok","absoluteTotalUsd","allTotalNok","allTotalUsd","allEquitiesTotalNok","allEquitiesTotalUsd","allFixedIncomeTotalNok","allFixedIncomeTotalUsd","allRealEstateTotalNok","allRealEstateTotalUsd","allInfrastructureTotalNok","allInfrastructureTotalUsd","nrItemsEquities","nrItemsFixedIncome","nrItemsRealEstate","nrItemsInfrastructure","nrCountriesEquities","nrCountriesFixedIncome","nrCountriesRealEstate","nrCountriesInfrastructure","updatedCountries","companiesDataSelectedEquities","companiesDataSelectedFixedIncome","companiesDataSelectedRealEstate","companiesDataSelectedInfrastructure","countriesData","equitiesTotalNok","equitiesTotalUsd","fixedIncomeTotalNok","fixedIncomeTotalUsd","realEstateTotalNok","realEstateTotalUsd","infrastructureTotalNok","infrastructureTotalUsd","countryCountEquities","countItemEquities","valueNok","countryCountFixedIncome","countItemFixedIncome","countryCountRealEstate","done","group","gr","partners","countryCountInfrastructure","countriesSelections","csl","tempYearDataUpdated","allTotalNrInvestments","sumEquitiesNok","sumFixedIncomeNok","sumRealEstateNok","sumInfrastructureNok","sumTotalNok","totalPercentageEquitiesNotFixed","totalPercentageFixedIncomeNotFixed","totalPercentageRealEstateNotFixed","totalPercentageInfrastructureNotFixed","historyCountryData","historyFixedIncomeData","historyRealEstateData","historyInfrastructureData","historyTotalData","loc","updateYearDataFromSelections","showStatus","ModalDisclaimer","popupTitleNo","popupDescriptionNo","ut","popupUrlTextNo","popupUrlNo","popupTitleEn","popupDescriptionEn","popupUrlTextEn","popupUrlEn","popupTitle","popupDescription","popupUrlText","popupUrl","handleShowDerivativesDisclaimer","FilteredTotalsSummary","filtered","conditionalMarketValue","totalPercent","mergeErrors","errorArray","localErrorArray","Wrapper","localInvestmentType","setLocalInvestmentType","paramCompanyName","dataApi","dataApiHistory","dataApiSearch","handleErrorAxios","response","request","resolveInvestmentType","axios","get","then","res","responseYears","catch","responseYearData","vuno","respDerivativesEquitiesNok","respDerivativesFixedIncomeNok","respDerivativesRealEstateNok","respDerivativesInfrastructureNok","respDerivativesEquitiesUsd","respDerivativesFixedIncomeUsd","respDerivativesRealEstateUsd","respDerivativesInfrastructureUsd","respDerivativesTotalNok","respDerivativesTotalUsd","respDerivativesPopup","popup","responseHistoryData","companyApiSearchName","companyApiEndpoint","responseSearchData","PageLayout","worldmap","filteredTotals","investmentDetails","investmentsList","mapTabIndex","setMapTabIndex","historyTabIndex","setHistoryTabIndex","mapRef","historyRef","moveWithTabEvent","onElement","shiftKey","keyCode","blur","data-name","tabIndex","onFocus","HomePage","placeStatus","place","validationBoolean","filterSelectedPlaces","places","renderRegionsAndCountries","GlobalSummary","setCountries","backToIndex","goBack","handleGoBack","alt","NbimLogo","GlobalSummaryPage","TableCell","header","headerName","sortMode","setSortMode","handleSortModeChange","sortmode","Table","headingRow","rows","wSize","windowSize","setWindowSize","handleResize","useWindowSize","tWidth","tableWidth","setTableWidth","scrollWidth","useTableWidth","initialOverflow","isOverflowing","setIsOverflowing","tableIsOverflowing","renderTableHead","path","renderTableBody","prepareDataForExport","dataToCSV","headerRows","rowsData","rowHeader","values","rowData","tableToExcel","tableData","exportTable","exportTableHead","exportTableHeadRow","exportTableBody","sLen","thIdx","exportTableHeadRowColumn","exportTableBodyRow","exportTableBodyRowColumn","createTable","blob","fileName","InvestmentsList","exportData","setExportData","headingRowEquities","headingRowFixedIncome","headingRowRealEstate","headingRowInfrastructure","handleShowMore","filteredEquities","filteredFixedIncome","filteredRealEstate","filteredInfrastructure","nrItemsFilteredEquities","nrItemsFilteredFixedIncome","nrItemsFilteredRealEstate","nrItemsFilteredInfrastructure","sectorArrayEquities","countryArrayEquities","sectorArrayFixedIncome","countryArrayFixedIncome","sectorArrayRealEstate","countryArrayRealEstate","partnerArrayRealEstate","sectorArrayInfrastructure","countryArrayInfrastructure","partnerArrayInfrastructure","nrSectorsEquities","nrSectorsFixedIncome","nrSectorsRealEstate","nrPartnersRealEstate","nrSectorsInfrastructure","nrPartnersInfrastructure","td","filename","InvestmentsPage","HowWeVotedLink","howWeVotedUrl","InvestmentDetails","companyDataTemp","CompanyPage","scrollTo","SearchPage","sq","useLocation","searchQuery","decodeURIComponent","showMode","setShowMode","searchMatches","setSearchMatches","renderItem","yearRange","renderButtonMode","nrAll","nrEquities","nrFixedIncome","nrRealEstate","nrInfrastructure","outputAll","renderHeadings","Boolean","ReactDOM","render","StrictMode","basename","component","exact","serviceWorker","ready","registration","unregister"],"mappings":"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EAAEswB,GAAyB,KAApB5zB,GAA0B2C,IACnCg6B,GAAsB53C,KAAK4d,EAAGF,IAC9Bo6B,GAAiB93C,KAAK4d,EAAGF,KAGvBa,EAAE1hB,IAA0B,KAApBoe,GAA0Bpe,IACpCg7C,GAA0B73C,KAAKnD,EAAG6gB,IAClCo6B,GAAiB93C,KAAKnD,EAAG6gB,MAGtB,QAGJ,QAGJ,QAEJ,QAIG,IAAVuS,EACFvmB,GACEk2B,GAAmB,CACjBC,0BAA2B6X,GAC3B5X,6BAA8B6X,GAC9B5X,4BAA6B6X,GAC7B5X,gCAAiC6X,GACjC5X,uBAAwB6X,GACxBjuC,WACAu0B,oBACAC,sBACApO,WAGe,IAAVA,GACTvmB,GACEk2B,GAAmB,CACjBC,0BAA2B6X,GAC3B5X,6BAA8B6X,GAC9B5X,4BAA6B6X,GAC7B5X,gCAAiC6X,GACjC5X,uBAAwB6X,GACxBjuC,WACAu0B,oBACAC,sBACApO,QACAxlB,WCn2BNutC,CAA6B,CAC3BnuC,YACAomB,SACArU,KAAMiG,GACNwxB,YAAatxB,GACb9L,uBACAC,uBACAC,0BACAC,0BACAC,6BACAC,6BACAC,4BACAC,4BACAC,gCACAC,gCACAjM,KAAMylB,EACNjV,gBAAiBhI,GACjBqgC,oBAAqBpgC,GACrB8H,mBAAoBjI,EACpBuB,oBACAsC,uBACAC,uBACA2L,sBACAhR,uBACAC,0BACAC,yBACAC,6BAEAmF,0BACAC,0BACAI,kCACAC,kCACAC,qCACAC,qCACAC,oCACAC,oCACAC,wCACAC,wCAEAV,oCACAC,kCACAC,iCAEAS,2BACAC,8BACAC,6BACAC,iCAEAC,+BACAC,kCACAC,iCACAC,qCAEAC,8BACAC,iCACAC,gCACAC,oCAEA5O,oBAID,CACDumB,GACAC,EACAnd,EACAE,GACA4O,GACAE,GACAzN,GACAjJ,EACAxB,GACAoM,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAxD,GACA0D,GACAC,GACA2L,GACAhR,EACAC,EACAC,EACAC,EACAmF,GACAC,GACAI,GACAC,GACAC,GACAC,GACAC,GACAC,GA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","file":"static/investments/js/main.3af32a09.chunk.js","sourcesContent":["/* eslint-disable */\n\n(function (root, factory) {\n module.exports = factory();\n})(this, () => {\n // Defaults\n\n const defaultInstanceSettings = {\n update: undefined,\n begin: undefined,\n run: undefined,\n complete: undefined,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n offset: 0,\n };\n\n const defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n easing: 'easeOutElastic',\n elasticity: 500,\n round: 0,\n };\n\n // Utils\n\n const is = {\n arr: a => Array.isArray(a),\n fnc: a => typeof a === 'function',\n und: a => typeof a === 'undefined',\n };\n\n // BezierEasing https://github.com/gre/bezier-easing\n\n const bezier = (() => {\n const kSplineTableSize = 11;\n const kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n if (!(mX1 >= 0 && mX1 <= 1 && mX2 >= 0 && mX2 <= 1)) return;\n const sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (let i = 0; i < kSplineTableSize; i += 1) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n return x => {\n if (mX1 === mY1 && mX2 === mY2) return x;\n if (x === 0) return 0;\n if (x === 1) return 1;\n };\n }\n\n return bezier;\n })();\n\n const easings = (() => {\n const names = ['Quad', 'Cubic', 'Quart', 'Quint', 'Sine', 'Expo', 'Circ', 'Back', 'Elastic'];\n\n // Elastic easing adapted from jQueryUI http://api.jqueryui.com/easings/\n\n function elastic(t, p) {\n return t === 0 || t === 1\n ? t\n : -Math.pow(2, 10 * (t - 1)) *\n Math.sin(((t - 1 - (p / (Math.PI * 2.0)) * Math.asin(1)) * (Math.PI * 2)) / p);\n }\n\n // Approximated Penner equations http://matthewlein.com/ceaser/\n\n const equations = {\n In: [\n [0.55, 0.085, 0.68, 0.53] /* InQuad */,\n [0.55, 0.055, 0.675, 0.19] /* InCubic */,\n [0.895, 0.03, 0.685, 0.22] /* InQuart */,\n [0.755, 0.05, 0.855, 0.06] /* InQuint */,\n [0.47, 0.0, 0.745, 0.715] /* InSine */,\n [0.95, 0.05, 0.795, 0.035] /* InExpo */,\n [0.6, 0.04, 0.98, 0.335] /* InCirc */,\n [0.6, -0.28, 0.735, 0.045] /* InBack */,\n elastic /* InElastic */,\n ],\n Out: [\n [0.25, 0.46, 0.45, 0.94] /* OutQuad */,\n [0.215, 0.61, 0.355, 1.0] /* OutCubic */,\n [0.165, 0.84, 0.44, 1.0] /* OutQuart */,\n [0.23, 1.0, 0.32, 1.0] /* OutQuint */,\n [0.39, 0.575, 0.565, 1.0] /* OutSine */,\n [0.19, 1.0, 0.22, 1.0] /* OutExpo */,\n [0.075, 0.82, 0.165, 1.0] /* OutCirc */,\n [0.175, 0.885, 0.32, 1.275] /* OutBack */,\n (t, f) => 1 - elastic(1 - t, f) /* OutElastic */,\n ],\n InOut: [\n [0.455, 0.03, 0.515, 0.955] /* InOutQuad */,\n [0.645, 0.045, 0.355, 1.0] /* InOutCubic */,\n [0.77, 0.0, 0.175, 1.0] /* InOutQuart */,\n [0.86, 0.0, 0.07, 1.0] /* InOutQuint */,\n [0.445, 0.05, 0.55, 0.95] /* InOutSine */,\n [1.0, 0.0, 0.0, 1.0] /* InOutExpo */,\n [0.785, 0.135, 0.15, 0.86] /* InOutCirc */,\n [0.68, -0.55, 0.265, 1.55] /* InOutBack */,\n (t, f) =>\n t < 0.5 ? elastic(t * 2, f) / 2 : 1 - elastic(t * -2 + 2, f) / 2 /* InOutElastic */,\n ],\n };\n\n const functions = {\n linear: bezier(0.25, 0.25, 0.75, 0.75),\n };\n\n Object.keys(equations).forEach(type => {\n equations[type].forEach((f, i) => {\n functions[`ease${type}${names[i]}`] = is.fnc(f) ? f : bezier.apply(this, f);\n });\n });\n\n return functions;\n })();\n\n // Arrays\n\n function filterArray(arr, callback) {\n const len = arr.length;\n const thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n const result = [];\n for (let i = 0; i < len; i += 1) {\n if (i in arr) {\n const val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n }\n\n function flattenArray(arr) {\n return arr.reduce((a, b) => a.concat(is.arr(b) ? flattenArray(b) : b), []);\n }\n\n function toArray(o) {\n return [o];\n }\n\n // Objects\n\n function cloneObject(o) {\n const clone = {};\n for (const p in o) clone[p] = o[p];\n return clone;\n }\n\n function replaceObjectProps(o1, o2) {\n const o = cloneObject(o1);\n for (const p in o1) o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p];\n return o;\n }\n\n function mergeObjects(o1, o2) {\n const o = cloneObject(o1);\n for (const p in o2) o[p] = is.und(o1[p]) ? o2[p] : o1[p];\n return o;\n }\n\n // Values\n\n function minMaxValue(val, min, max) {\n return Math.min(Math.max(val, min), max);\n }\n\n function getFunctionValue(val, animatable) {\n if (!is.fnc(val)) return val;\n return val(animatable.target, animatable.id, animatable.total);\n }\n\n function getAnimationType(el, prop) {\n if (el[prop] != null) return 'object';\n }\n\n function getOriginalTargetValue(target, propName) {\n return target[propName] || 0;\n }\n\n function getRelativeValue(to, from) {\n return to;\n }\n\n // Decompose value\n\n function decomposeValue(val) {\n const rgx = /-?\\d*\\.?\\d+/g;\n const value = `${val}`;\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: [],\n };\n }\n\n function getAnimatables(targets) {\n const parsed = toArray(targets);\n return parsed.map((t, i) => ({ target: t, id: i, total: parsed.length }));\n }\n\n // Properties\n\n function normalizePropertyTweens(prop, tweenSettings) {\n const settings = cloneObject(tweenSettings);\n return toArray(prop)\n .map((v, i) => {\n // Default delay value should be applied only on the first tween\n const delay = !i ? tweenSettings.delay : 0;\n // Use path object as a tween value\n const obj = { value: v };\n\n // Set default delay value\n if (is.und(obj.delay)) obj.delay = delay;\n return obj;\n })\n .map(k => mergeObjects(k, settings));\n }\n\n function getProperties(instanceSettings, tweenSettings, params) {\n const properties = [];\n const settings = mergeObjects(instanceSettings, tweenSettings);\n Object.keys(params).forEach(p => {\n if (!settings.hasOwnProperty(p) && p !== 'targets') {\n properties.push({\n name: p,\n offset: settings.offset,\n tweens: normalizePropertyTweens(params[p], tweenSettings),\n });\n }\n });\n return properties;\n }\n\n // Tweens\n\n function normalizeTweenValues(tween, animatable) {\n const t = {};\n\n Object.keys(tween).forEach(p => {\n let value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(v => getFunctionValue(v, animatable));\n if (value.length === 1) value = value[0];\n }\n t[p] = value;\n });\n\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n }\n\n function normalizeTweens(prop, animatable) {\n let previousTween;\n return prop.tweens.map(t => {\n const tween = normalizeTweenValues(t, animatable);\n const tweenValue = tween.value;\n const originalValue = animatable.target[prop.name];\n const previousValue = previousTween ? previousTween.to.original : originalValue;\n const from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n const to = tweenValue;\n tween.from = decomposeValue(from);\n tween.to = decomposeValue(to);\n tween.start = previousTween ? previousTween.end : prop.offset;\n tween.end = tween.start + tween.delay + tween.duration;\n tween.easing = easings[tween.easing];\n tween.elasticity = (1000 - minMaxValue(tween.elasticity, 1, 999)) / 1000;\n if (tween.isColor) tween.round = 1;\n previousTween = tween;\n return tween;\n });\n }\n\n // Tween progress\n\n const setTweenProgress = {\n css: (t, p, v) => (t.style[p] = v),\n attribute: (t, p, v) => t.setAttribute(p, v),\n object: (t, p, v) => (t[p] = v),\n transform: (t, p, v, transforms, id) => {\n if (!transforms[id]) transforms[id] = [];\n transforms[id].push(`${p}(${v})`);\n },\n };\n\n // Animations\n\n function createAnimation(animatable, prop) {\n const animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n const tweens = normalizeTweens(prop, animatable);\n return {\n type: animType,\n property: prop.name,\n animatable,\n tweens,\n duration: tweens[tweens.length - 1].end,\n delay: tweens[0].delay,\n };\n }\n }\n\n function getAnimations(animatables, properties) {\n return filterArray(\n flattenArray(\n animatables.map(animatable => properties.map(prop => createAnimation(animatable, prop))),\n ),\n a => !is.und(a),\n );\n }\n\n // Create Instance\n\n function getInstanceTimings(type, animations, instanceSettings, tweenSettings) {\n const isDelay = type === 'delay';\n if (animations.length) {\n return (isDelay ? Math.min : Math.max).apply(\n Math,\n animations.map(anim => anim[type]),\n );\n }\n return isDelay\n ? tweenSettings.delay\n : instanceSettings.offset + tweenSettings.delay + tweenSettings.duration;\n }\n\n function createNewInstance(params) {\n const instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n const tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n const animatables = getAnimatables(params.targets);\n const properties = getProperties(instanceSettings, tweenSettings, params);\n const animations = getAnimations(animatables, properties);\n return mergeObjects(instanceSettings, {\n children: [],\n animatables,\n animations,\n duration: getInstanceTimings('duration', animations, instanceSettings, tweenSettings),\n delay: getInstanceTimings('delay', animations, instanceSettings, tweenSettings),\n });\n }\n\n // Core\n\n const activeInstances = [];\n let raf = 0;\n\n const engine = (() => {\n function play() {\n raf = requestAnimationFrame(step);\n }\n function step(t) {\n const activeLength = activeInstances.length;\n if (activeLength) {\n let i = 0;\n while (i < activeLength) {\n if (activeInstances[i]) activeInstances[i].tick(t);\n i += 1;\n }\n play();\n } else {\n cancelAnimationFrame(raf);\n raf = 0;\n }\n }\n return play;\n })();\n\n // Public Instance\n\n function anime(params = {}) {\n let now,\n startTime,\n lastTime = 0;\n\n let resolve = null;\n\n function makePromise() {\n return window.Promise && new Promise(_resolve => (resolve = _resolve));\n }\n\n let promise = makePromise();\n\n const instance = createNewInstance(params);\n\n function toggleInstanceDirection() {\n instance.reversed = !instance.reversed;\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function syncInstanceChildren(time) {\n const { children } = instance;\n const childrenLength = children.length;\n if (time >= instance.currentTime) {\n for (let i = 0; i < childrenLength; i += 1) children[i].seek(time);\n } else {\n for (let i = childrenLength; i--; ) children[i].seek(time);\n }\n }\n\n function setAnimationsProgress(insTime) {\n let i = 0;\n const transforms = {};\n const animations = instance.animations;\n const animationsLength = animations.length;\n while (i < animationsLength) {\n const anim = animations[i];\n const animatable = anim.animatable;\n const tweens = anim.tweens;\n const tweenLength = tweens.length - 1;\n let tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) tween = filterArray(tweens, t => insTime < t.end)[0] || tween;\n const elapsed =\n minMaxValue(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n const eased = isNaN(elapsed) ? 1 : tween.easing(elapsed, tween.elasticity);\n\n const numbers = [];\n let progress;\n const toNumbersLength = tween.to.numbers.length;\n for (let n = 0; n < toNumbersLength; n += 1) {\n let value;\n const toNumber = tween.to.numbers[n];\n const fromNumber = tween.from.numbers[n];\n\n value = fromNumber + eased * (toNumber - fromNumber);\n\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n\n progress = numbers[0];\n\n setTweenProgress[anim.type](\n animatable.target,\n anim.property,\n progress,\n transforms,\n animatable.id,\n );\n anim.currentValue = progress;\n i += 1;\n }\n\n instance.currentTime = insTime;\n instance.progress = (insTime / instance.duration) * 100;\n }\n\n function setCallback(cb) {\n if (instance[cb]) instance[cb](instance);\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining -= 1;\n }\n }\n\n function setInstanceProgress(engineTime) {\n const insDuration = instance.duration;\n const insOffset = instance.offset;\n const insStart = insOffset + instance.delay;\n const insCurrentTime = instance.currentTime;\n const insReversed = instance.reversed;\n const insTime = adjustTime(engineTime);\n if (instance.children.length) syncInstanceChildren(insTime);\n if (insTime >= insStart || !insDuration) {\n if (!instance.began) {\n instance.began = true;\n setCallback('begin');\n }\n setCallback('run');\n }\n if (insTime > insOffset && insTime < insDuration) {\n setAnimationsProgress(insTime);\n } else {\n if (insTime <= insOffset && insCurrentTime !== 0) {\n setAnimationsProgress(0);\n if (insReversed) countIteration();\n }\n if ((insTime >= insDuration && insCurrentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n if (!insReversed) countIteration();\n }\n }\n setCallback('update');\n if (engineTime >= insDuration) {\n if (instance.remaining) {\n startTime = now;\n if (instance.direction === 'alternate') toggleInstanceDirection();\n } else {\n instance.pause();\n if (!instance.completed) {\n instance.completed = true;\n setCallback('complete');\n if ('Promise' in window) {\n resolve();\n promise = makePromise();\n }\n }\n }\n lastTime = 0;\n }\n }\n\n instance.reset = function () {\n const direction = instance.direction;\n const loops = instance.loop;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.completed = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = direction === 'alternate' && loops === 1 ? 2 : loops;\n setAnimationsProgress(0);\n for (let i = instance.children.length; i--; ) {\n instance.children[i].reset();\n }\n };\n\n instance.tick = function (t) {\n now = t;\n if (!startTime) startTime = now;\n const engineTime = (lastTime + now - startTime) * anime.speed;\n setInstanceProgress(engineTime);\n };\n\n instance.seek = function (time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function () {\n const i = activeInstances.indexOf(instance);\n if (i > -1) activeInstances.splice(i, 1);\n instance.paused = true;\n };\n\n instance.play = function () {\n if (!instance.paused) return;\n instance.paused = false;\n startTime = 0;\n lastTime = adjustTime(instance.currentTime);\n activeInstances.push(instance);\n if (!raf) engine();\n };\n\n instance.reverse = function () {\n toggleInstanceDirection();\n startTime = 0;\n lastTime = adjustTime(instance.currentTime);\n };\n\n instance.restart = function () {\n instance.pause();\n instance.reset();\n instance.play();\n };\n\n instance.finished = promise;\n\n instance.reset();\n\n if (instance.autoplay) instance.play();\n\n return instance;\n }\n\n anime.speed = 1;\n anime.running = activeInstances;\n anime.getValue = getOriginalTargetValue;\n anime.bezier = bezier;\n anime.easings = easings;\n\n return anime;\n});\n","module.exports = __webpack_public_path__ + \"static/investments/media/NBIM_logo_min.47887dfa.svg\";","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst ChartDataContext = createContext({\n chartData: [],\n});\n\nconst ChartDataProvider = ({ children }) => {\n const [chartData, setChartData] = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nChartDataProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { ChartDataContext, ChartDataProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst CurrencyContext = createContext({\n currency: 'nok',\n});\n\nconst CurrencyProvider = ({ children }) => {\n const [currency, setCurrency] = useState('nok');\n\n return (\n \n {children}\n \n );\n};\n\nCurrencyProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { CurrencyContext, CurrencyProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst ErrorContext = createContext({\n errors: [],\n});\n\nconst ErrorProvider = ({ children }) => {\n const [errors, setErrors] = useState([]);\n\n return (\n \n {children}\n \n );\n};\n\nErrorProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { ErrorContext, ErrorProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst InternationalOrgContext = createContext({\n internationalOrg: 0,\n});\n\nconst InternationalOrgProvider = ({ children }) => {\n const [internationalOrg, setInternationalOrg] = useState(0);\n\n return (\n \n {children}\n \n );\n};\n\nInternationalOrgProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { InternationalOrgContext, InternationalOrgProvider };\n","const debug = false; // Use this to debug\n\n// This function prepends the API endpoint URLs with the corresponding value\n// ! Use this to set a value before running a build\nexport const theApiMode = mode => {\n let env = '';\n if (mode === 'qa') {\n // env = 'https://inte.nbim.no'; // TODO: add inte.nbim.no for prod when done testing.\n // env = 'https://localhost:5001';\n env = 'https://prep.nbim.no';\n }\n return env; // Fallback, represents 'production' build for Epi\n};\n\n// Environments\nconst currentEnv = process.env.NODE_ENV;\nconst inDevelopment = process.env.NODE_ENV === 'development';\nconst inProduction = process.env.NODE_ENV === 'production';\nconst inTest = process.env.NODE_ENV === 'test';\n\n// Use this to set from where we fetch our data from ('develop' | 'qa')\n// ! When building for Nbim.Web, use an empty string!\n// ! (set to '' as default to avoid broken builds at Epi's end)\nexport const apiMode = inProduction ? '' : 'qa';\n\n// Language\nconst langEn = 'en-GB';\nconst langNo = 'no';\n\n// Options for fuzzy searching (sensitivity around matching)\nconst fuseOptions = {\n // match keys\n keys: ['name'],\n // misc\n minMatchCharLength: 3,\n includeMatches: true,\n // fuzzy options\n threshold: 0.2,\n findAllMatches: true,\n};\nconst fuseOptionsRealEstate = {\n // match keys\n keys: ['name', 'partners'],\n // misc\n minMatchCharLength: 3,\n includeMatches: true,\n // fuzzy options\n threshold: 0.5,\n findAllMatches: true,\n};\nconst fuseOptionsInfrastructure = {\n // match keys\n keys: ['name', 'partners'],\n // misc\n minMatchCharLength: 3,\n includeMatches: true,\n // fuzzy options\n threshold: 0.5,\n findAllMatches: true,\n};\n\nconst hostname =\n typeof window === 'object' && window.location.hostname !== ''\n ? window.location.hostname\n : 'localhost';\n\nconst urlBaseDev = `http://${hostname}`;\n\n// Retrieve 'defaultYear' as set by Epi, on 'window' object, so we can resolve 1st load\n// Programmatic fallback to last year\nconst currentYear = new Date().getFullYear();\nconst previousYear = currentYear - 1;\nconst defaultFilterYear =\n typeof window === 'object' && window?.netlife?.defaultYear\n ? window.netlife.defaultYear\n : previousYear;\n\n// Language choice for fetching years\nconst yearsLanguage = window?.netlife?.language ? window.netlife.language : langNo;\n\n// API endpoints\nconst dataYears = `${theApiMode(apiMode)}/api/investments/years?language=${yearsLanguage}`;\nconst dataProdApi = ({ paramYear, topFilterYear }) =>\n `${theApiMode(apiMode)}/api/investments/data.json?year=${\n paramYear || topFilterYear || defaultFilterYear\n }`;\nconst dataProdHistoryApi = ({ paramYear, topFilterYear }) =>\n `${theApiMode(apiMode)}/api/investments/history.json?year=${\n paramYear || topFilterYear || defaultFilterYear\n }`;\n// Fetch url for company based on year (y), investment type (tp) and name (n)\nconst dataCompanyHistoryApiUrl = ({ y, it, n }) => {\n debug &&\n console.log(\n `[dataCompanyHistoryApiUrl]: Request bits:\n y: ${JSON.stringify(y)}\n it: ${JSON.stringify(it)}\n n: ${JSON.stringify(n)}\n `,\n );\n debug &&\n console.log(\n '[dataCompanyHistoryApiUrl]: Request:',\n `${theApiMode(apiMode)}/api/investments/investment?y=${y}&it=${it}&n=${n}`,\n );\n return `${theApiMode(apiMode)}/api/investments/investment?y=${y}&it=${it}&n=${n}`;\n};\nconst dataSearchApiUrl = ({ searchValueGlobal, searchResultLimit }) =>\n `${theApiMode(apiMode)}/api/investments/search?q=${searchValueGlobal}&t=${searchResultLimit}`;\n\n// Exclusions\nconst internationalOrgNameCountry = 'International Organisations';\nconst internationalOrgNameRegion = 'International';\nconst globallyOrgNameCountry = 'Globally';\nconst globallyOrgNameRegion = 'Globally';\n\n// Miscelaneous\nconst animateNumbers = true;\nconst animateNumbersDuration = 2000; // Duration of timeout, used for 'animateNumbers'\nconst animateNumbersInit = 10; // Initialize timeout for 'animateNumbers'\nconst defaultFilterSector = '';\nconst derivativesEnabled = true;\nconst isRealEstateFilteredBySectorConfig = true;\nconst isInfrastructureFilteredBySectorConfig = true;\n\nexport default {\n animateNumbers,\n animateNumbersDuration,\n animateNumbersInit,\n currentEnv,\n defaultFilterYear,\n defaultFilterSector,\n derivativesEnabled,\n fuseOptions,\n fuseOptionsRealEstate,\n fuseOptionsInfrastructure,\n hostname,\n inDevelopment,\n isRealEstateFilteredBySectorConfig,\n isInfrastructureFilteredBySectorConfig,\n inProduction,\n inTest,\n internationalOrgNameCountry,\n internationalOrgNameRegion,\n globallyOrgNameCountry,\n globallyOrgNameRegion,\n langEn,\n langNo,\n urlBaseDev,\n // API endpoints\n dataYears,\n dataProdApi,\n dataProdHistoryApi,\n dataCompanyHistoryApiUrl,\n dataSearchApiUrl,\n};\n","import React, { createContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport config from './../config';\n\nconst { langEn } = config;\n\nconst LanguageContext = createContext({\n language: 'no',\n languageWasChanged: false,\n});\n\nconst LanguageProvider = ({ children }) => {\n const [language, setLanguage] = useState('no');\n const [languageWasChanged, setLanguageWasChanged] = useState(false);\n\n // 'language' is initially set by Epi, through 'window.netlife.language'\n // We only run this once\n useEffect(() => {\n if (!languageWasChanged && window?.netlife?.language) {\n const shorterLang = window.netlife.language === langEn ? 'en' : 'no';\n setLanguage(shorterLang);\n }\n }, [languageWasChanged]);\n\n return (\n \n {children}\n \n );\n};\n\nLanguageProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { LanguageContext, LanguageProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst MenuContext = createContext({\n menuIsExpanded: false,\n menuIsAnimating: false,\n});\n\nconst MenuProvider = ({ children }) => {\n const [menuIsExpanded, setMenuIsExpanded] = useState(false);\n const [menuIsAnimating, setMenuIsAnimating] = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nMenuProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { MenuContext, MenuProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst UiContext = createContext({\n uiDerivativesPopup: {},\n uiIsLoading: false,\n uiIsAnimating: false,\n uiShowDerivativeDisclaimer: false,\n});\n\nconst UiProvider = ({ children }) => {\n const [uiDerivativesPopup, setUiDerivativesPopup] = useState({});\n const [uiIsLoading, setUiIsLoading] = useState(false);\n const [uiIsAnimating, setUiIsAnimating] = useState(false);\n const [uiShowDerivativeDisclaimer, setUiShowDerivativeDisclaimer] = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nUiProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { UiContext, UiProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\n// The amount of hits the search api should return\nconst RESULTLIMIT = 1000;\n\nconst SearchContext = createContext({\n searchDataResponse: {},\n autocompleteSearchString: '',\n autocompleteData: {},\n autocompleteMatches: {},\n searchItemInvestmentName: '',\n searchOverlay: false,\n searchValueGlobal: '',\n searchValueInline: '',\n searchSelectedRealEstate: '',\n searchSelectedInfrastructure: '',\n searchResultLimit: RESULTLIMIT,\n});\n\nconst SearchProvider = ({ children }) => {\n const [searchDataResponse, setSearchDataResponse] = useState({});\n const [autocompleteSearchString, setAutocompleteSearchString] = useState('');\n const [autocompleteData, setAutocompleteData] = useState({});\n const [autocompleteMatches, setAutocompleteMatches] = useState({});\n const [searchItemInvestmentName, setSearchItemInvestmentName] = useState('');\n const [searchOverlay, setSearchOverlay] = useState(false);\n const [searchValueGlobal, setSearchValueGlobal] = useState('');\n const [searchValueInline, setSearchValueInline] = useState('');\n const [searchSelectedRealEstate, setSearchSelectedRealEstate] = useState('');\n const [searchSelectedInfrastructure, setSearchSelectedInfrastructure] = useState('');\n const [searchResultLimit, setSearchResultLimit] = useState(RESULTLIMIT);\n\n return (\n \n {children}\n \n );\n};\n\nSearchProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { SearchContext, SearchProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst TableContext = createContext({\n tableItemsShowMoreStatus: false,\n tableDataEquities: [],\n tableDataFixedIncome: [],\n tableDataRealEstate: [],\n tableDataInfrastructure: [],\n tableNrItems: 0,\n tableNrItemsShowMore: 30,\n tableNrItemsToShow: 10,\n tableNrCountries: 0,\n tableNrSectors: 0,\n tableNrPartners: 0,\n tableSortBy: 'companies',\n currentSortedTable: null,\n});\n\nconst TableProvider = ({ children }) => {\n const [tableItemsShowMoreStatus, setTableItemsShowMoreStatus] = useState(30);\n const [tableDataEquities, setTableDataEquities] = useState([]);\n const [tableDataFixedIncome, setTableDataFixedIncome] = useState([]);\n const [tableDataRealEstate, setTableDataRealEstate] = useState([]);\n const [tableDataInfrastructure, setTableDataInfrastructure] = useState([]);\n const [tableNrItems, setTableNrItems] = useState(0);\n const [tableNrItemsShowMore, setTableNrItemsShowMore] = useState(30);\n const [tableNrItemsToShow, setTableNrItemsToShow] = useState(10);\n const [tableNrCountries, setTableNrCountries] = useState(0);\n const [tableNrSectors, setTableNrSectors] = useState(0);\n const [tableNrPartners, setTableNrPartners] = useState(0);\n const [tableSortBy, setTableSortBy] = useState('companies');\n const [currentSortedTable, setCurrentSortedTable] = useState(null);\n const [sortDirection, setSortDirection] = useState('desc');\n\n return (\n \n {children}\n \n );\n};\n\nTableProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { TableContext, TableProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport config from './../config';\n\nconst { defaultFilterSector, defaultFilterYear } = config;\n\nconst TopFilterContext = createContext({\n investmentType: '',\n realEstateFilteredBySector: false,\n infrastructureFilteredBySector: false,\n showYears: false,\n showLocations: false,\n showSectors: false,\n showCurrencies: false,\n topFilterYear: defaultFilterYear,\n topFilterYears: [],\n topFilterLocations: [],\n topFilterLocationsLabel: '',\n topFilterSector: defaultFilterSector,\n topFilterSectorList: [],\n topFilterOverlay: false,\n resetFilters: false,\n});\n\nconst TopFilterProvider = ({ children }) => {\n const [investmentType, setInvestmentType] = useState('');\n const [realEstateFilteredBySector, setRealEstateFilteredBySector] = useState(false);\n const [infrastructureFilteredBySector, setInfrastructureFilteredBySector] = useState(false);\n const [showYears, setShowYears] = useState(false);\n const [showLocations, setShowLocations] = useState(false);\n const [showSectors, setShowSectors] = useState(false);\n const [showCurrencies, setShowCurrencies] = useState(false);\n const [topFilterYear, setTopFilterYear] = useState(defaultFilterYear);\n const [topFilterYears, setTopFilterYears] = useState([]);\n const [topFilterLocations, setTopFilterLocations] = useState([]);\n const [topFilterLocationsLabel, setTopFilterLocationsLabel] = useState('');\n const [topFilterSector, setTopFilterSector] = useState(defaultFilterSector);\n const [topFilterSectorList, setTopFilterSectorList] = useState([]);\n const [topFilterOverlay, setTopFilterOverlay] = useState(false);\n const [resetFilters, setResetFilters] = useState(false);\n\n return (\n \n {children}\n \n );\n};\n\nTopFilterProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { TopFilterContext, TopFilterProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst TotalsContext = createContext({\n // Total that never change\n totalNokConstant: 0,\n totalUsdConstant: 0,\n // Total investments\n totalInvestmentsNok: 0,\n totalInvestmentsUsd: 0,\n totalInvestmentsNrInvestments: 0,\n totalInvestmentsNrCountries: 0,\n totalInvestmentsPercentage: 0,\n // Total investments per type\n totalInvestmentsEquitiesNok: 0,\n totalInvestmentsEquitiesUsd: 0,\n totalInvestmentsFixedIncomeNok: 0,\n totalInvestmentsFixedIncomeUsd: 0,\n totalInvestmentsRealEstateNok: 0,\n totalInvestmentsRealEstateUsd: 0,\n totalInvestmentsInfrastructureNok: 0,\n totalInvestmentsInfrastructureUsd: 0,\n // Total nr investments per type\n totalNrItemsEquities: 0,\n totalNrItemsFixedIncome: 0,\n totalNrItemsRealEstate: 0,\n totalNrItemsInfrastructure: 0,\n // Total nr countries per type\n totalNrCountriesEquities: 0,\n totalNrCountriesFixedIncome: 0,\n totalNrCountriesRealEstate: 0,\n totalNrCountriesInfrastructure: 0,\n // Total percentage per type\n totalPercentageEquities: 0,\n totalPercentageFixedIncome: 0,\n totalPercentageRealEstate: 0,\n totalPercentageInfrastructure: 0,\n // Derivatives\n derivativesTotalNok: 0,\n derivativesTotalUsd: 0,\n derivativesEquitiesNok: 0,\n derivativesEquitiesUsd: 0,\n derivativesFixedIncomeNok: 0,\n derivativesFixedIncomeUsd: 0,\n derivativesRealEstateNok: 0,\n derivativesRealEstateUsd: 0,\n derivativesInfrastructureNok: 0,\n derivativesInfrastructureUsd: 0,\n});\n\nconst TotalsProvider = ({ children }) => {\n const [totalNokConstant, setTotalNokConstant] = useState(0);\n const [totalUsdConstant, setTotalUsdConstant] = useState(0);\n const [totalInvestmentsNok, setTotalInvestmentsNok] = useState(0);\n const [totalInvestmentsUsd, setTotalInvestmentsUsd] = useState(0);\n const [totalInvestmentsNrInvestments, setTotalInvestmentsNrInvestments] = useState(0);\n const [totalInvestmentsNrCountries, setTotalInvestmentsNrCountries] = useState(0);\n const [totalInvestmentsPercentage, setTotalInvestmentsPercentage] = useState(0);\n const [totalInvestmentsEquitiesNok, setTotalInvestmentsEquitiesNok] = useState(0);\n const [totalInvestmentsEquitiesUsd, setTotalInvestmentsEquitiesUsd] = useState(0);\n const [totalInvestmentsFixedIncomeNok, setTotalInvestmentsFixedIncomeNok] = useState(0);\n const [totalInvestmentsFixedIncomeUsd, setTotalInvestmentsFixedIncomeUsd] = useState(0);\n const [totalInvestmentsRealEstateNok, setTotalInvestmentsRealEstateNok] = useState(0);\n const [totalInvestmentsRealEstateUsd, setTotalInvestmentsRealEstateUsd] = useState(0);\n const [totalInvestmentsInfrastructureNok, setTotalInvestmentsInfrastructureNok] = useState(0);\n const [totalInvestmentsInfrastructureUsd, setTotalInvestmentsInfrastructureUsd] = useState(0);\n const [totalNrItemsEquities, setTotalNrItemsEquities] = useState(0);\n const [totalNrItemsFixedIncome, setTotalNrItemsFixedIncome] = useState(0);\n const [totalNrItemsRealEstate, setTotalNrItemsRealEstate] = useState(0);\n const [totalNrItemsInfrastructure, setTotalNrItemsInfrastructure] = useState(0);\n const [totalNrCountriesEquities, setTotalNrCountriesEquities] = useState(0);\n const [totalNrCountriesFixedIncome, setTotalNrCountriesFixedIncome] = useState(0);\n const [totalNrCountriesRealEstate, setTotalNrCountriesRealEstate] = useState(0);\n const [totalNrCountriesInfrastructure, setTotalNrCountriesInfrastructure] = useState(0);\n const [totalPercentageEquities, setTotalPercentageEquities] = useState(0);\n const [totalPercentageFixedIncome, setTotalPercentageFixedIncome] = useState(0);\n const [totalPercentageRealEstate, setTotalPercentageRealEstate] = useState(0);\n const [totalPercentageInfrastructure, setTotalPercentageInfrastructure] = useState(0);\n // Derivatives\n const [derivativesTotalNok, setDerivativesTotalNok] = useState(0);\n const [derivativesTotalUsd, setDerivativesTotalUsd] = useState(0);\n const [derivativesEquitiesNok, setDerivativesEquitiesNok] = useState(0);\n const [derivativesEquitiesUsd, setDerivativesEquitiesUsd] = useState(0);\n const [derivativesFixedIncomeNok, setDerivativesFixedIncomeNok] = useState(0);\n const [derivativesFixedIncomeUsd, setDerivativesFixedIncomeUsd] = useState(0);\n const [derivativesRealEstateNok, setDerivativesRealEstateNok] = useState(0);\n const [derivativesRealEstateUsd, setDerivativesRealEstateUsd] = useState(0);\n const [derivativesInfrastructureNok, setDerivativesInfrastructureNok] = useState(0);\n const [derivativesInfrastructureUsd, setDerivativesInfrastructureUsd] = useState(0);\n\n return (\n \n {children}\n \n );\n};\n\nTotalsProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { TotalsContext, TotalsProvider };\n","// Check if object is empty or not\nexport function isEmptyObject(verifyObject) {\n if (verifyObject && verifyObject.constructor === Object) {\n return Object.keys(verifyObject).length === 0;\n }\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(`[isEmptyObject]: The object being verified is not an object: ${verifyObject}`);\n }\n return undefined;\n}\n\n// Check if object is NOT empty\nexport function isNotEmptyObject(verifyObject) {\n if (verifyObject && verifyObject.constructor === Object) {\n return Object.keys(verifyObject).length > 0;\n }\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(\n `[isNotEmptyObject]: The object being verified is not an object: ${verifyObject}`,\n );\n }\n return undefined;\n}\n\n// Check if array is empty or not\nexport function isEmptyArray(verifyArray) {\n if (verifyArray && Array.isArray(verifyArray)) {\n return verifyArray.length === 0;\n }\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(`[isEmptyArray]: The array being verified is not an array: ${verifyArray}`);\n }\n return undefined;\n}\n\n// Check if array is NOT empty\nexport function isNotEmptyArray(verifyArray) {\n if (verifyArray && verifyArray.constructor === Array) {\n return verifyArray.length > 0;\n }\n if (verifyArray && process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(`[isNotEmptyArray]: The array being verified is not an array: ${verifyArray}`);\n }\n return undefined;\n}\n\n// TODO: move these to new util\n// Check if array is an array or not\nexport function isArray(verifyArray) {\n if (verifyArray && Array.isArray(verifyArray)) {\n return true;\n }\n return false;\n}\n\n// Check if object is an object or not\nexport function isObject(value) {\n if (value && typeof value === 'object' && value.constructor === Object) {\n return true;\n }\n return false;\n}\n","// 'langObj' is the 'language' object as retrieved by the API\n// 'langDef' is the language definition consumed by the app\n// 'langLoc' is the language as set by the user, so we honour her/his choice\n\nimport config from './../config';\n\nconst { langEn, langNo } = config;\n\nexport const lang = (langObj, langDef, langLoc, langInv = false) => {\n // Retrieve language as set by Epi, on 'window' object, so we can resolve 1st load\n const langGlobal =\n typeof window === 'object' && window.netlife.language !== '' ? window.netlife.language : langEn;\n // Simplify format so we can use it as key values\n const langGlobalSimpler = langGlobal === langNo ? 'no' : 'en';\n // Resolve the language we're going to use\n const lg = () => {\n let finalLang = 'en'; // fallback\n // Resolve language\n if (langLoc && langLoc !== langGlobalSimpler) {\n // If there have been changes in state and 'lang' is not equal to\n // the initial language value set by Epi, set it to the state's value\n finalLang = langLoc;\n } else {\n // If the 'lang' state value equals the initial language set by Epi,\n // set it to Epi's initial language value\n finalLang = langGlobalSimpler;\n }\n // If we pass the 4th parameter to the function ('langInv'), invert the translation\n if (langInv) {\n if (finalLang === 'en') {\n finalLang = 'no';\n } else {\n finalLang = 'en';\n }\n }\n return finalLang;\n };\n // Return the chosen language value\n return langObj && langObj[langDef] && langObj[langDef][lg()];\n};\n","/* eslint-disable no-nested-ternary */\nimport Fuse from 'fuse.js';\nimport {\n autocompleteHitsPerMode,\n autocompleteMinLength,\n} from '../components/primitives/Search/config';\nimport { isNotEmptyArray, isNotEmptyObject, isEmptyArray } from './isEmptyUtil';\nimport { lang } from '../utils/langUtil';\nimport config from './../config';\n\nconst {\n fuseOptions,\n fuseOptionsRealEstate,\n fuseOptionsInfrastructure,\n internationalOrgNameRegion,\n internationalOrgNameCountry,\n globallyOrgNameRegion,\n globallyOrgNameCountry,\n langEn,\n langNo,\n} = config;\n\nexport const getOwnership = value => (value ? Number(value).toFixed(2) : '0.00');\n\nexport const getSearchQuery = sq =>\n decodeURIComponent(sq.replace(/\\+/g, ' '))\n .replace(/-/g, ' ')\n .replace(/[?&]q=/, '');\n\n// Previous implementation, that assigns different thousand separators according to locale:\n// - Norwegian: ' '\n// - English: ','\nexport const thousandify = (number, language) => {\n const debug = false; // Use this to debug\n if ((number || number === 0) && language) {\n return language.toLowerCase() === 'no'\n ? Number(number).toLocaleString(langNo).replace(/\\s/g, ' ')\n : Number(number).toLocaleString(langEn);\n }\n if (process.env.NODE_ENV !== 'test' && debug) {\n // eslint-disable-next-line\n console.error(\n `[thousandify]: The number being passed is not a number, or not passed at all: ${number}, type: (${typeof number})`,\n );\n }\n return null;\n};\n\n// Current 'thousandify' implementation, as the client wanted (',' as separator):\nexport const thousandifyEng = number => {\n if (number || number === 0) {\n return Number(number).toLocaleString(langEn);\n }\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(\n `[thousandifyEng]: The number being passed is not a number, or not passed at all: ${number}, type: (${typeof number})`,\n );\n }\n return null;\n};\n// -- Usage: (see tests)\n\nexport const getDefaultFilterYear = years => {\n let defaultNr = 0;\n years.reduce((accumulator, currentValue) => {\n if (accumulator.y > currentValue.y) {\n defaultNr = accumulator.y;\n }\n return { y: 0 };\n });\n return defaultNr;\n};\n\n// Return empty array (hence truthy, in this case) when there are not regions defined\n// Used to see if all regions are practically deselected\n// Differs from 'noCountrySelected' since this one is a check to see if\n// all region objects are empty, which is a result of deselecting everything\n// after having at least one country selected.\nexport const noRegionSelected = regions => isEmptyArray(regions.filter(f => f.id !== undefined));\n\n// Returns true when no region is found with status 'selected: true' in the\n// 'topFilterLocations' (also referred to as 'selectionLocations')\nexport const noCountrySelected = list => {\n if (list && isNotEmptyArray(list)) {\n return list.every(s => s.selected === false);\n }\n return false;\n};\n// -- Usage: (see tests)\n\n// Returns true when no sector is found with status 'selected: true' in the\n// 'topFilterSectorList' (also referred to as 'selectionSectorList')\n// 'list' is the equivalent to the output of 'topFilterSectorNamesWithStatuses',\n// which in turn is called 'topFilterSectorList'\nexport const noSectorSelected = list => {\n const outputArray = [];\n if (list && isNotEmptyArray(list)) {\n list.map(l => {\n const investmentTypeSectors = l.sectors;\n if (investmentTypeSectors && isNotEmptyArray(investmentTypeSectors)) {\n // Check if all sectors are set to 'selected: false', and push the result\n // into 'outputArray'. It will be either true of false.\n outputArray.push(investmentTypeSectors.every(s => s.selected === false));\n }\n return null;\n });\n // If all of the items in the resulting array below equal true,\n // 'no sector' has been selected.\n return outputArray.every(o => o === true);\n }\n // Fallback\n return false;\n};\n// -- Usage: (see tests)\n\nexport const isFiltered = ({ selectionLocations = [], selectionSector = '' }) => {\n let hasSelectedLocations = false;\n let hasSelectedSector = false;\n if (selectionLocations && isNotEmptyArray(selectionLocations)) {\n // If the below condition is true, at least one region or country is specifically selected\n hasSelectedLocations = !noCountrySelected(selectionLocations);\n }\n hasSelectedSector = selectionSector !== '';\n return hasSelectedLocations || hasSelectedSector;\n};\n\n// Returns the mode (investment type) for selected sector\nexport const getSelectedSectorMode = ({ sectorList, selectedSector }) => {\n let output = '';\n if (\n sectorList &&\n isNotEmptyArray(sectorList) &&\n selectedSector &&\n typeof selectedSector === 'string'\n ) {\n sectorList.map(l => {\n const investmentTypeSectors = l.sectors;\n if (investmentTypeSectors && isNotEmptyArray(investmentTypeSectors)) {\n // Check if 'selectedSector' is found within the 'investmentTypeSectors' array,\n // and push the result into 'outputArray'. It will be either true of false.\n if (investmentTypeSectors.some(s => s.name === selectedSector)) {\n output = l.name;\n }\n }\n return null;\n });\n }\n return output;\n};\n// -- Usage: (see tests)\n\n// Get total investments\nexport const getTotalInvestments = ({ data, currency, mode }) => {\n let totalEquities = 0;\n let totalFixedIncome = 0;\n let totalRealState = 0;\n if (data && isNotEmptyObject(data) && currency) {\n const theCurrency = currency.toLowerCase();\n const regions = data.re;\n if (regions && isNotEmptyArray(regions)) {\n regions.map(region => {\n if (region) {\n const countries = region.ct;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(country => {\n if (country.eq) {\n if (theCurrency === 'nok' && country.eq.v) {\n totalEquities += country.eq.v;\n }\n if (theCurrency === 'usd' && country.eq.vu) {\n totalEquities += country.eq.vu;\n }\n }\n if (country.fi) {\n if (theCurrency === 'nok' && country.fi.v) {\n totalFixedIncome += country.fi.v;\n }\n if (theCurrency === 'usd' && country.fi.vu) {\n totalFixedIncome += country.fi.vu;\n }\n }\n if (country.re) {\n if (theCurrency === 'nok' && country.re.v) {\n totalRealState += country.re.v;\n }\n if (theCurrency === 'usd' && country.re.vu) {\n totalRealState += country.re.vu;\n }\n }\n return null;\n });\n }\n }\n return null;\n });\n }\n }\n // This has to be got here as we have to complete the mapping loop\n if (mode === 'equities') {\n return totalEquities;\n }\n if (mode === 'fixed-income') {\n return totalFixedIncome;\n }\n if (mode === 'real-estate') {\n return totalRealState;\n }\n return totalEquities + totalFixedIncome + totalRealState;\n};\n// -- Usage: (see tests)\n\n// Get location filter label\n// We used to look at 'selected' status to count regions and countries\n// but it has now been corrected to count non-'disabled' countries instead.\n// They get disabled when they don't contain the selected 'sector'\nexport const locationFilterLabel = ({ data, langSet, selectedLocations }) => {\n // We need the 'raw' language to build the table object, so we get the data directly\n const langObj = data?.s?.language;\n let label = lang(langObj, 'All regions and countries', langSet);\n let nrRegions = 0;\n let nrCountries = 0;\n let loneRegionName = '';\n let loneCountryName = '';\n let internationalOrgIsSelected = false;\n let globallyOrgIsSelected = false;\n\n if (selectedLocations && isNotEmptyArray(selectedLocations)) {\n // If the below condition is true, no region nor country is specifically selected\n const noSelectedLocations = noCountrySelected(selectedLocations);\n selectedLocations.map(region => {\n if (region && region.countries) {\n // If the below condition is true, no country is specifically selected\n const noSelectedCountries = noCountrySelected(region.countries);\n if (\n // 1. Do not count disabled regions\n !region.disabled &&\n // 2. Count all non-disabled regions if there are no selected countries (noSelectedLocations)\n (noSelectedLocations ||\n // 3. Only count non-disabled regions that have selected countries (!noSelectedLocations && !noSelectedCountries)\n (!noSelectedLocations && !noSelectedCountries))\n ) {\n if (\n region.regionName !== internationalOrgNameRegion &&\n region.regionName !== globallyOrgNameRegion\n ) {\n nrRegions += 1;\n loneRegionName = region.regionName;\n } else if (\n // We're inside 'internationalOrg'!\n noSelectedLocations ||\n (!noSelectedLocations && !noSelectedCountries && region.selected)\n ) {\n if (region.regionName === internationalOrgNameRegion) {\n internationalOrgIsSelected = true;\n }\n if (region.regionName === globallyOrgNameRegion) {\n globallyOrgIsSelected = true;\n }\n }\n }\n\n const countries = region.countries;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(country => {\n if (\n // 1. Do not count disabled countries\n !country.disabled &&\n // 2. Count all non-disabled countries if there are no selected countries (noSelectedLocations)\n (noSelectedLocations ||\n // 3. Only count non-disabled countries that are selected (!noSelectedLocations && !noSelectedCountries && country.selected)\n (!noSelectedLocations && !noSelectedCountries && country.selected))\n ) {\n if (\n country.name !== internationalOrgNameCountry &&\n country.name !== globallyOrgNameCountry\n ) {\n nrCountries += 1;\n loneCountryName = country.name;\n } else if (\n // We're inside 'internationalOrg'!\n noSelectedLocations ||\n (!noSelectedLocations && !noSelectedCountries && country.selected)\n ) {\n if (country.name === internationalOrgNameCountry) {\n internationalOrgIsSelected = true;\n }\n if (country.name === globallyOrgNameCountry) {\n globallyOrgIsSelected = true;\n }\n }\n }\n return null;\n });\n }\n }\n return null;\n });\n }\n\n if (nrRegions === 0 || nrCountries === 0) {\n if (internationalOrgIsSelected && globallyOrgIsSelected) {\n label = `${internationalOrgNameRegion}, ${globallyOrgNameRegion}`;\n } else if (internationalOrgIsSelected) {\n label = `${internationalOrgNameRegion}`;\n } else if (globallyOrgIsSelected) {\n label = `${globallyOrgNameRegion}`;\n } else {\n label = lang(langObj, 'All regions and countries');\n }\n } else {\n const labelRegions = `${\n nrRegions === 1\n ? `${loneRegionName}, `\n : `${nrRegions} ${lang(langObj, 'regions', langSet)}, `\n }`;\n const labelCountries = `${\n nrCountries === 1\n ? `${loneCountryName}`\n : `${nrCountries} ${lang(langObj, 'countries', langSet)}`\n }`;\n label = `${labelRegions}${labelCountries}`;\n }\n return label;\n};\n// -- Usage: (see tests)\n\n// eslint-disable-next-line no-shadow\nexport const modeName = ({ mode, lang, lowcase }) => {\n let name = '';\n if (mode === 'equities') {\n if (lang === 'no') {\n name = lowcase ? 'aksjer' : 'Aksjer';\n } else {\n name = lowcase ? 'equities' : 'Equities';\n }\n }\n if (mode === 'fixed-income') {\n if (lang === 'no') {\n name = lowcase ? 'rentepapirer' : 'Rentepapirer';\n } else {\n name = lowcase ? 'fixed income' : 'Fixed income';\n }\n }\n if (mode === 'real-estate') {\n if (lang === 'no') {\n name = lowcase ? 'eiendom' : 'Eiendom';\n } else {\n name = lowcase ? 'real estate' : 'Real estate';\n }\n }\n if (mode === 'infrastructure') {\n if (lang === 'no') {\n name = lowcase ? 'infrastructure' : 'Infrastructure';\n } else {\n name = lowcase ? 'infrastructure' : 'Infrastructure';\n }\n }\n return name;\n};\n// -- Usage: (see tests)\n\n// Get 'region'\nexport const region = ({ id, regions }) => {\n if (id && typeof id === 'string' && regions && isNotEmptyArray(regions)) {\n return regions.filter(f => f && f.id && f.id.toLowerCase() === id.toLowerCase());\n }\n return [];\n};\n// -- Usage: (also see tests)\n//\n// import { re as regions2019 } from './../data/real/2019.json';\n// region({ id: 'middle-east', regions: regions2019 });\n\n// Get 'regions names'\nexport const regionsNames = regions => {\n const output = [];\n if (regions && isNotEmptyArray(regions)) {\n regions.map(r => {\n if (r && r.id && r.n) {\n output.push({\n id: r.id,\n name: r.n,\n });\n }\n return null;\n });\n }\n return output;\n};\n// -- Usage: (see tests)\n\nexport const regionDetails = ({ regions, regionId, mode }) => {\n // regions: array, passed after being imported (locally) / or retrieved as request response\n // regionId: 'Asia', 'Europe', 'International', 'Latin-America', 'Middle-East', 'North-America', 'Oceania' (case insensitive)\n // mode: 'countries', 'equities', 'name'\n let output = [];\n // Only do any of this if all parameters are defined\n if (regions && isNotEmptyArray(regions) && regionId && mode) {\n const theRegion = regionId.toLowerCase();\n\n const theMode = mode.toLowerCase();\n\n if (region({ id: theRegion, regions }) && region({ id: theRegion, regions })[0]) {\n if (\n (theMode === 'countries' || theMode === 'ct') &&\n region({ id: theRegion, regions })[0].ct\n ) {\n output = region({ id: theRegion, regions })[0].ct;\n }\n if (\n (theMode === 'equities' || theMode === 'eq') &&\n region({ id: theRegion, regions })[0].eq\n ) {\n output = region({ id: theRegion, regions })[0].eq;\n }\n if ((theMode === 'name' || theMode === 'n') && region({ id: theRegion, regions })[0].n) {\n output = region({ id: theRegion, regions })[0].n;\n }\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\n// Get 'countries names within regions'\nexport const countriesNames = ({ regionName, regions }) => {\n const output = [];\n if (regionName && regions && isNotEmptyArray(regions)) {\n const countries = regionDetails({\n regions,\n regionId: regionName,\n mode: 'countries',\n });\n if (countries && isNotEmptyArray(countries)) {\n countries.map(c =>\n output.push({\n id: c.id,\n name: c.n,\n }),\n );\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\n// Get details for investment type as it's listed under 'ct' (contries)\n// Not to confuse with objects under 'eq', 'i' or 'r' objects right under the regions (continents)\nexport const investmentTypeDetails = (investmentType, mode) => {\n // investmentType: object, retrieved by `regionDetails({ regions: regions1998, regionId: 'oceania', mode: 'investmentType', })`;\n // regionId: 'Asia', 'Europe', 'International', 'Latin-America', 'Middle-East', 'North-America', 'Oceania' (case insensitive)\n // mode: 'nok', 'usd', 'percentage', 'investments', 'companies', 'holdings'\n let output = null;\n // Only do any of this if all parameters are defined\n if (investmentType && mode) {\n const theMode = mode.toLowerCase();\n if ((theMode === 'nok' || theMode === 'v') && investmentType.v) {\n output = investmentType.v;\n }\n if ((theMode === 'usd' || theMode === 'vu') && investmentType.vu) {\n output = investmentType.vu;\n }\n if ((theMode === 'percentage' || theMode === 'p') && investmentType.p) {\n output = investmentType.p;\n }\n if ((theMode === 'investments' || theMode === 'n') && investmentType.n) {\n output = investmentType.n;\n }\n if ((theMode === 'companies' || theMode === 'cp') && investmentType.cp) {\n output = investmentType.cp;\n }\n if ((theMode === 'holdings' || theMode === 'hd') && investmentType.hd) {\n output = investmentType.hd;\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\nexport const getEqAndFiCompanies = data => {\n const output = [];\n if (data && isNotEmptyObject(data)) {\n const regions = data.re;\n regions.map(reg => {\n if (reg && reg.ct) {\n const countries = reg.ct;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(country => {\n if (country.eq) {\n const companies = investmentTypeDetails(country.eq, 'companies');\n companies.map(co => {\n output.push({\n type: 'equities',\n name: companyDetails(co, 'name'),\n t: companyDetails(co, 'abbreviation'),\n nok: holdingsDetails(companyDetails(co, 'holdings'), 'nok'),\n usd: holdingsDetails(companyDetails(co, 'holdings'), 'usd'),\n sector: companyDetails(co, 'sector'),\n ownership: holdingsDetails(companyDetails(co, 'holdings'), 'ownership'),\n country: companyDetails(co, 'country'),\n id: companyDetails(co, 'id'),\n voting: holdingsDetails(companyDetails(co, 'holdings'), 'vo'),\n });\n return null;\n });\n }\n if (country.fi) {\n const companies = investmentTypeDetails(country.fi, 'companies');\n companies.map(co => {\n output.push({\n type: 'fixed-income',\n name: companyDetails(co, 'name'),\n t: companyDetails(co, 'abbreviation'),\n nok: holdingsDetails(companyDetails(co, 'holdings'), 'nok'),\n usd: holdingsDetails(companyDetails(co, 'holdings'), 'usd'),\n sector: companyDetails(co, 'sector'),\n ownership: holdingsDetails(companyDetails(co, 'holdings'), 'ownership'),\n country: companyDetails(co, 'country'),\n id: companyDetails(co, 'id'),\n voting: holdingsDetails(companyDetails(co, 'holdings'), 'vo'),\n });\n return null;\n });\n }\n return null;\n });\n }\n }\n return null;\n });\n }\n return output;\n};\n\n// -- Usage: (see tests)\n\nexport const companyTableData = data => {\n const output = [];\n if (data && isNotEmptyObject(data)) {\n const regions = data.re;\n regions.map(reg => {\n if (reg && reg.ct) {\n const countries = reg.ct;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(country => {\n if (country.eq) {\n const companies = investmentTypeDetails(country.eq, 'companies');\n companies.map(co => {\n output.push({\n type: 'equities',\n name: companyDetails(co, 'name'),\n nok: holdingsDetails(companyDetails(co, 'holdings'), 'nok'),\n usd: holdingsDetails(companyDetails(co, 'holdings'), 'usd'),\n sector: companyDetails(co, 'sector'),\n ownership: holdingsDetails(companyDetails(co, 'holdings'), 'ownership'),\n country: companyDetails(co, 'country'),\n id: companyDetails(co, 'id'),\n voting: holdingsDetails(companyDetails(co, 'holdings'), 'vo'),\n });\n return null;\n });\n }\n return null;\n });\n }\n }\n return null;\n });\n }\n return output;\n};\n\n// -- Usage: (see tests)\n\nexport const historicDataDetails = (hd, mode) => {\n // hd (holdingsData): object, found within 'equities', 'company', 'holding'\n // mode: 'year', 'nok', 'usd'\n let output = null;\n // Only do any of this if all parameters are defined\n if (hd && mode) {\n const theMode = mode.toLowerCase();\n if ((theMode === 'nok' || theMode === 'n') && hd.n) {\n output = hd.n;\n }\n if ((theMode === 'usd' || theMode === 'u') && hd.u) {\n output = hd.u;\n }\n if ((theMode === 'year' || theMode === 'y') && hd.y) {\n output = hd.y;\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\nexport const holdingsDetails = (h, mode) => {\n // h (holdings): object, found within 'companies'\n // mode: 'nok', 'usd', 'voting', 'ownership', 'holdings'\n let output = null;\n // Only do any of this if all parameters are defined\n if (h && mode) {\n const theMode = mode.toLowerCase();\n if ((theMode === 'nok' || theMode === 'v') && h.v) {\n output = h.v;\n }\n if ((theMode === 'usd' || theMode === 'vu') && h.vu) {\n output = h.vu;\n }\n if ((theMode === 'voting' || theMode === 'vo') && h.vo) {\n output = h.vo;\n }\n if ((theMode === 'ownership' || theMode === 'o') && h.o) {\n output = h.o;\n }\n if ((theMode === 'historicData' || theMode === 'hd') && h.hd) {\n output = h.hd;\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\nexport const companyDetails = (company, mode) => {\n // company: object, found within 'equities'\n // mode: 'nok', 'usd', 'voting', 'ownership', 'holdings'\n let output = null;\n // Only do any of this if all parameters are defined\n if (company && mode) {\n const theMode = mode.toLowerCase();\n if ((theMode === 'abbreviation' || theMode === 't') && company.t) {\n output = company.t;\n }\n if ((theMode === 'name' || theMode === 'n') && company.n) {\n output = company.n;\n }\n if ((theMode === 'sector' || theMode === 's') && company.s) {\n output = company.s;\n }\n if (theMode === 'id' && company.id) {\n output = company.id;\n }\n if ((theMode === 'holdings' || theMode === 'h') && company.h) {\n output = company.h;\n }\n if ((theMode === 'country' || theMode === 'ic') && company.ic) {\n output = company.ic;\n }\n }\n return output;\n};\n// -- Usage: (see tests)\n\nexport const showAmount = ({ nok, usd, currency }) =>\n currency.toLowerCase() === 'usd' ? usd : nok;\n// TODO: write tests\n\nexport const hasInternationalOrganisationsAsSingleCountry = countries =>\n countries.some(c => c.name === internationalOrgNameCountry);\n\nexport const hasGloballyOrganisationsAsSingleCountry = countries =>\n countries.some(c => c.name === globallyOrgNameCountry);\n\nexport const getWorldMapSeries = selectedLocations => {\n const output = [];\n if (selectedLocations && isNotEmptyArray(selectedLocations)) {\n // We do this check here, since it's deep. By placing it here and not\n // within the map loop we avoid several deep dives.\n if (noCountrySelected(selectedLocations)) {\n // No countries are selected, set all to 'isActive: true'\n // ...but only if they are NOT disabled\n selectedLocations.map(reg => {\n const countries = reg.countries;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(c => {\n if (!c.disabled) {\n output.push({\n id: c.id,\n name: c.name,\n isActive: true,\n });\n }\n return null;\n });\n }\n return null;\n });\n } else {\n // At least one country is selected, set 'isActive' according\n // to 'c.selected' status\n // ...but only if they are NOT disabled\n selectedLocations.map(reg => {\n const countries = reg.countries;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(c => {\n if (!c.disabled) {\n output.push({\n id: c.id,\n name: c.name,\n isActive: c.selected,\n });\n }\n return null;\n });\n }\n return null;\n });\n }\n }\n return output;\n};\n\n// This sets the choices made to the local state 'selectedLocations' at\n// 'GlobalFiltersLocations'.\n// 'selectedLocations' is the local value that gets committed to\n// 'topFilterLocations' upon saving the selection\nexport const updateLocationsList = ({\n regionId,\n countryId,\n mode,\n selected,\n selectedLocations,\n selectedSector,\n setInternationalOrg,\n setSelectedLocations,\n testing,\n}) => {\n const debug = false; // Use this to debug\n // We need this to trigger 'setInternationalOrg' correctly\n let nrRegions = 0;\n let nrCountries = 0;\n let internationalOrgIsSelected = false;\n let globallyOrgIsSelected = false;\n // Fallbacks\n let tempSelectedLocations = selectedLocations;\n // Only do this if we have all defined\n if (regionId && mode && isNotEmptyArray(selectedLocations)) {\n if (selectedSector === '') {\n // -- NO selected sector!\n if (mode === 'region') {\n debug && console.log('updateLocationsList -> region -> no selected sector');\n // Location selection\n tempSelectedLocations = selectedLocations.map(sl => {\n const selectedRegionCountries = sl.countries;\n const selectedRegionWithAllCountriesSelected = {\n ...sl,\n // Mark relevant region as selected\n selected,\n selectedCountriesOnlyOne: false,\n selectedCountriesPartial: false,\n selectedCountriesAll: selected,\n // Mark all countries within region as selected\n countries: selectedRegionCountries.map(slc => ({ ...slc, selected })),\n };\n if (sl.regionId === regionId) {\n return selectedRegionWithAllCountriesSelected;\n }\n return sl;\n });\n }\n if (mode === 'country') {\n debug && console.log('updateLocationsList -> country -> no selected sector');\n const regionWithCountry = selectedLocations.filter(f => f.regionId === regionId);\n if (regionWithCountry && isNotEmptyArray(regionWithCountry)) {\n const regionObj = regionWithCountry[0];\n const regionCountries = regionObj.countries;\n if (regionObj && regionCountries && isNotEmptyArray(regionCountries)) {\n // Check if all countries within the region are selected\n let allCountriesAreSelected = regionCountries.every(ct => ct.selected === true);\n // Update country list\n const regionWithCountryUpdated = regionCountries.map(ct => {\n if (allCountriesAreSelected) {\n return ct.id === countryId ? ct : { ...ct, selected };\n }\n return ct.id === countryId ? { ...ct, selected } : ct;\n });\n // ! Country selection status will help us style the region checkbox accordingly\n // Check if only one country is selected within the region\n const onlyOneCountryIsSelected =\n regionWithCountryUpdated.filter(f => f.selected === true).length === 1;\n // Check if more than one country is selected within the region, but not all\n const moreThanOneCountryIsSelected =\n regionWithCountryUpdated.filter(f => f.selected === true).length > 1 &&\n regionWithCountryUpdated.filter(f => f.selected === true).length <\n regionWithCountryUpdated.length;\n // Check if all countries within the region are selected, after the update\n allCountriesAreSelected =\n regionWithCountryUpdated.every(ct => ct.selected === true) &&\n // If there's only one country in the whole array, we use the 'onlyOneCountryIsSelected' status instead\n regionWithCountryUpdated.length > 1;\n // Check if NO countries within the region are selected, after the update\n // If this is truthy, the region should lose its 'selected' status\n const noCountriesAreSelected = regionWithCountryUpdated.every(\n ct => ct.selected === false,\n );\n // ! Merge the updated countries object array with the 'selectedLocations' object array\n tempSelectedLocations = selectedLocations.map(sl => {\n return sl.regionId === regionObj.regionId\n ? {\n ...sl,\n countries: regionWithCountryUpdated,\n selected: !noCountriesAreSelected,\n selectedCountriesOnlyOne: onlyOneCountryIsSelected,\n selectedCountriesPartial: moreThanOneCountryIsSelected,\n selectedCountriesAll: allCountriesAreSelected,\n }\n : sl;\n });\n }\n }\n }\n } else if (selectedSector && selectedSector !== '') {\n // -- There's a selected sector!\n if (mode === 'region') {\n debug && console.log('updateLocationsList -> region -> selected sector');\n // Location selection\n tempSelectedLocations = selectedLocations.map(sl => {\n const selectedRegionCountries = sl.countries;\n const selectedRegionSectors = sl.regionSectors;\n const regionHasSelectedSector = selectedRegionSectors.some(s => s === selectedSector);\n const selectedRegionWithSomeCountriesSelected = {\n ...sl,\n disabled: !regionHasSelectedSector,\n // Mark relevant region as selected\n selected,\n selectedCountriesOnlyOne: false,\n selectedCountriesPartial: false,\n selectedCountriesAll: selected,\n // Mark all countries within region as selected, if they do NOT\n // contain the 'selectedSector'\n // Check if country contains 'selectedSector'\n // if it does: selected (incoming status) + disabled 'false'\n // if it doesn't: selected 'false' + disabled 'true'\n countries: selectedRegionCountries.map(slc => {\n const selectedRegionCountriesSectors = slc.sectors;\n const countryHasSelectedSector = selectedRegionCountriesSectors.some(\n s => s === selectedSector,\n );\n return { ...slc, disabled: !countryHasSelectedSector, selected };\n }),\n };\n if (sl.regionId === regionId) {\n return selectedRegionWithSomeCountriesSelected;\n }\n return sl;\n });\n }\n if (mode === 'country') {\n debug && console.log('updateLocationsList -> country -> selected sector');\n const regionWithCountry = selectedLocations.filter(f => f.regionId === regionId);\n if (regionWithCountry && isNotEmptyArray(regionWithCountry)) {\n const regionObj = regionWithCountry[0];\n const regionCountries = regionObj.countries;\n const regionSectors = regionObj.regionSectors;\n const regionHasSelectedSector = regionSectors.some(s => s === selectedSector);\n if (regionObj && regionCountries && isNotEmptyArray(regionCountries)) {\n // Check if all countries within the region are selected\n let allCountriesAreSelected = regionCountries.every(ct => ct.selected === true);\n // Update country list\n // Check if country contains 'selectedSector'\n // if it does: selected (incoming status) + disabled 'false'\n // if it doesn't: selected 'false' + disabled 'true'\n const regionWithCountryUpdated = regionCountries.map(ct => {\n const selectedRegionCountriesSectors = ct.sectors;\n const countryHasSelectedSector = selectedRegionCountriesSectors.some(\n s => s === selectedSector,\n );\n if (allCountriesAreSelected) {\n return ct.id === countryId\n ? ct\n : { ...ct, selected, disabled: !countryHasSelectedSector };\n }\n return ct.id === countryId\n ? { ...ct, selected, disabled: !countryHasSelectedSector }\n : ct;\n });\n // ! Country selection status will help us style the region checkbox accordingly\n // Check if only one country is selected within the region\n const onlyOneCountryIsSelected =\n regionWithCountryUpdated.filter(f => f.selected === true).length === 1;\n // Check if more than one country is selected within the region, but not all\n const moreThanOneCountryIsSelected =\n regionWithCountryUpdated.filter(f => f.selected === true).length > 1 &&\n regionWithCountryUpdated.filter(f => f.selected === true).length <\n regionWithCountryUpdated.length;\n // Check if all countries within the region are selected, after the update\n allCountriesAreSelected =\n regionWithCountryUpdated.every(ct => ct.selected === true) &&\n // If there's only one country in the whole array, we use the 'onlyOneCountryIsSelected' status instead\n regionWithCountryUpdated.length > 1;\n // Check if NO countries within the region are selected, after the update\n // If this is truthy, the region should lose its 'selected' status\n const noCountriesAreSelected = regionWithCountryUpdated.every(\n ct => ct.selected === false,\n );\n // ! Merge the updated countries object array with the 'selectedLocations' object array\n tempSelectedLocations = selectedLocations.map(sl => {\n return sl.regionId === regionObj.regionId\n ? {\n ...sl,\n disabled: !regionHasSelectedSector,\n countries: regionWithCountryUpdated,\n selected: !noCountriesAreSelected,\n selectedCountriesOnlyOne: onlyOneCountryIsSelected,\n selectedCountriesPartial: moreThanOneCountryIsSelected,\n selectedCountriesAll: allCountriesAreSelected,\n }\n : sl;\n });\n }\n }\n }\n }\n }\n if (testing) {\n // Return 'tempSelectedLocations' as output while testing, also avoiding\n // triggering the 'set' functions below, which would break the tests\n return tempSelectedLocations;\n }\n // If the below condition is true, no region nor country is specifically selected\n const noSelectedLocations = noCountrySelected(tempSelectedLocations);\n // Now we need to know if\n tempSelectedLocations.map(reg => {\n if (reg && reg.countries) {\n // If the below condition is true, no country is specifically selected\n const noSelectedCountries = noCountrySelected(reg.countries);\n if (\n // 1. Exclude disabled regions\n !reg.disabled &&\n // 2. If there are no selected countries (noSelectedLocations)\n (noSelectedLocations ||\n // 3. Include non-disabled regions that have selected countries (!noSelectedLocations && !noSelectedCountries)\n (!noSelectedLocations && !noSelectedCountries))\n ) {\n if (\n reg.regionName !== internationalOrgNameRegion &&\n reg.regionName !== globallyOrgNameRegion\n ) {\n nrRegions += 1;\n } else if (\n // We're inside 'internationalOrg'!\n // If there are no selected countries (noSelectedLocations)\n noSelectedLocations ||\n // If 'internationalOrg' is selected\n (!noSelectedLocations && !noSelectedCountries && reg.selected)\n ) {\n if (reg.regionName === internationalOrgNameRegion) {\n internationalOrgIsSelected = true;\n }\n if (reg.regionName === globallyOrgNameRegion) {\n globallyOrgIsSelected = true;\n }\n }\n }\n const countries = reg.countries;\n if (countries && isNotEmptyArray(countries)) {\n countries.map(country => {\n if (\n // 1. Exclude disabled countries\n !country.disabled &&\n // 2. If there are no selected countries (noSelectedLocations)\n (noSelectedLocations ||\n // 3. Include non-disabled regions that have selected countries (!noSelectedLocations && !noSelectedCountries && country.selected)\n (!noSelectedLocations && !noSelectedCountries && country.selected))\n ) {\n if (\n country.name !== internationalOrgNameCountry &&\n country.name !== globallyOrgNameCountry\n ) {\n nrCountries += 1;\n } else if (\n // We're inside 'internationalOrg'!\n // If there are no selected countries (noSelectedLocations)\n noSelectedLocations ||\n // If 'internationalOrg' country is selected\n (!noSelectedLocations && !noSelectedCountries && country.selected)\n ) {\n if (country.name === internationalOrgNameCountry) {\n internationalOrgIsSelected = true;\n }\n if (country.name === globallyOrgNameCountry) {\n globallyOrgIsSelected = true;\n }\n }\n }\n return null;\n });\n }\n }\n return null;\n });\n // We're finally ready to check that both\n if (\n // 1. 'International Organisations' is selected\n (internationalOrgIsSelected || globallyOrgIsSelected) &&\n // 2. No other regions or countries are selected\n (nrRegions === 0 || nrCountries === 0)\n ) {\n if (internationalOrgIsSelected && globallyOrgIsSelected) {\n setInternationalOrg(3);\n } else {\n setInternationalOrg(internationalOrgIsSelected ? 1 : 2);\n }\n } else {\n setInternationalOrg(0);\n }\n // Set the updated selected locations\n setSelectedLocations(tempSelectedLocations);\n return null;\n};\n\nexport const getAutocompleteData = data => {\n // Pass 'yearData' (data as originally fetched) and output 'autocompleteData',\n // making it available for the whole application.\n const output = [];\n const regions = data.re;\n if (regions && isNotEmptyArray(regions)) {\n regions.map(reg => {\n if (reg.id) {\n const countriesData = reg.ct;\n if (countriesData && isNotEmptyArray(countriesData)) {\n countriesData.map(country => {\n // Now that we're iterating within the selected countries,\n // do things with 'countriesData' (reg.ct) items (country)\n if (country.eq) {\n const companiesEquities = country.eq.cp;\n if (companiesEquities && isNotEmptyArray(companiesEquities)) {\n companiesEquities.map(co => {\n // Add to output\n output.push({\n country: companyDetails(co, 'country'),\n id: companyDetails(co, 'id'),\n name: companyDetails(co, 'name'),\n sectors: [`${companyDetails(co, 'sector')}`],\n type: 'equities',\n });\n return null;\n });\n }\n }\n if (country.fi) {\n const companiesFixedIncome = country.fi.cp;\n if (companiesFixedIncome && isNotEmptyArray(companiesFixedIncome)) {\n companiesFixedIncome.map(co => {\n // Add to output\n output.push({\n country: companyDetails(co, 'country'),\n id: companyDetails(co, 'id'),\n name: companyDetails(co, 'name'),\n sectors: [`${companyDetails(co, 'sector')}`],\n type: 'fixed-income',\n });\n return null;\n });\n }\n }\n if (country.re) {\n const companiesRealEstate = country.re.cp;\n if (companiesRealEstate && isNotEmptyArray(companiesRealEstate)) {\n companiesRealEstate.map(co => {\n // Slightly different structure on 'Real estate'\n const group = co.a;\n const realEstateSectors = [];\n if (group && isNotEmptyArray(group)) {\n // Get all sectors\n group.map(g => {\n if (realEstateSectors.indexOf(g.s) === -1) {\n realEstateSectors.push(g.s);\n }\n return null;\n });\n }\n output.push({\n country: country.n, // This name comes from the country above this level\n id: co.id,\n name: co.n,\n sectors: realEstateSectors,\n type: 'real-estate',\n });\n return null;\n });\n }\n }\n if (country.is) {\n const companiesInfrastructure = country.is.cp;\n if (companiesInfrastructure && isNotEmptyArray(companiesInfrastructure)) {\n companiesInfrastructure.map(co => {\n // Slightly different structure on 'Infrastructure'\n const group = co.a;\n const infrastructureSectors = [];\n if (group && isNotEmptyArray(group)) {\n // Get all sectors\n group.map(g => {\n if (infrastructureSectors.indexOf(g.s) === -1) {\n infrastructureSectors.push(g.s);\n }\n return null;\n });\n }\n output.push({\n country: country.n, // This name comes from the country above this level\n id: co.id,\n name: co.n,\n sectors: infrastructureSectors,\n type: 'infrastructure',\n });\n return null;\n });\n }\n }\n return null;\n });\n }\n }\n return null;\n });\n }\n return output;\n};\n\nexport const filteredTableData = ({ search, data, realEstate, infrastructure }) => {\n if (data && isNotEmptyArray(data)) {\n const setFuseOptions = realEstate\n ? fuseOptionsRealEstate\n : infrastructure\n ? fuseOptionsInfrastructure\n : fuseOptions;\n if (search && search.length >= autocompleteMinLength) {\n const fuse = new Fuse(data, {\n ...setFuseOptions,\n });\n return fuse.search(search).map(m => m.item);\n }\n return data;\n }\n return [];\n};\n\nexport const getAutocompleteMatches = ({ search, data }) => {\n // Note that the 'data' object being passed here is the output of 'getAutocompleteData'\n // By combining it with 'searchValue', we're going to find matches and build the object\n // from which we'll render the auto-complete match list.\n // The matching part of this function is, in principle, similar to 'filteredTableData',\n // but it also builds the match object by investment type.\n let output = {};\n if (data && isNotEmptyArray(data)) {\n if (search && search.length >= autocompleteMinLength) {\n const fuse = new Fuse(data, {\n ...fuseOptions,\n });\n const matches = fuse.search(search).map(m => m.item);\n output = {\n equities: matches.filter(f => f.type === 'equities').slice(0, autocompleteHitsPerMode),\n fixedIncome: matches\n .filter(f => f.type === 'fixed-income')\n .slice(0, autocompleteHitsPerMode),\n realEstate: matches.filter(f => f.type === 'real-estate').slice(0, autocompleteHitsPerMode),\n infrastructure: matches\n .filter(f => f.type === 'infrastructure')\n .slice(0, autocompleteHitsPerMode),\n total: matches.length,\n };\n }\n return output;\n }\n return [];\n};\n\nexport const getSearchMatches = ({ search, data }) => {\n // Note that the 'data' object being passed here is the output of 'getSearchData'\n // By combining it with 'searchValue', we're going to find matches and build the object\n // from which we'll render the auto-complete match list.\n // The matching part of this function is, in principle, similar to 'filteredTableData',\n // but it also builds the match object by investment type.\n let output = {};\n if (data && isNotEmptyArray(data)) {\n if (search && search.length >= autocompleteMinLength) {\n const fuse = new Fuse(data, {\n ...fuseOptions,\n });\n const matches = fuse.search(search).map(m => m.item);\n output = {\n equities: matches.filter(f => f.type === 'equities'),\n fixedIncome: matches.filter(f => f.type === 'fixed-income'),\n realEstate: matches.filter(f => f.type === 'real-estate'),\n infrastructure: matches.filter(f => f.type === 'infrastructure'),\n total: matches.length,\n };\n }\n }\n return output;\n};\n\nexport const showMoreNumber = ({\n nrItemsSector,\n tableNrItemsShowMore = 30,\n tableNrItemsToShow = 10,\n}) => {\n const tableNrItemsLeftToShow = nrItemsSector - tableNrItemsToShow;\n // If '30' < '40'\n if (nrItemsSector > tableNrItemsShowMore && tableNrItemsShowMore < tableNrItemsLeftToShow) {\n return tableNrItemsShowMore;\n }\n // If '30' > '7'\n return tableNrItemsLeftToShow;\n};\n\nexport const getLevel = ({ locations, mode }) => {\n // 1: 'mode' (investment type) is undefined, 'locations' is defined\n // 2: 'mode' (investment type) is defined, 'locations' is defined\n // 3: 'mode' (investment type) is undefined, 'locations' is undefined\n\n // If 'mode' is defined, don't bother checking 'locations'\n if (mode) {\n return 2;\n }\n // If 'mode' is undefined, check 'locations'\n if (locations) {\n return 1;\n }\n // If both are undefined, we're at level 3\n return 3;\n};\n","const autocompleteMinLength = 2;\nconst autocompleteHitsPerMode = 10;\n\nexport { autocompleteMinLength, autocompleteHitsPerMode };\n","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { TopFilterContext } from './TopFilterProvider';\nimport { getWorldMapSeries } from '../utils/getDataUtil';\n\nconst WorldMapDataContext = createContext({\n worldMapData: {},\n});\n\nconst WorldMapDataProvider = ({ children }) => {\n const { topFilterLocations } = useContext(TopFilterContext);\n const [worldMapData, setWorldMapData] = useState([]);\n\n useEffect(() => {\n setWorldMapData(getWorldMapSeries(topFilterLocations));\n }, [topFilterLocations]);\n\n return (\n \n {children}\n \n );\n};\n\nWorldMapDataProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { WorldMapDataContext, WorldMapDataProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmptyObject, isNotEmptyObject } from '../utils/isEmptyUtil';\n\nconst YearDataContext = createContext({\n currentYear: '',\n howWeVotedUrlEn: '',\n howWeVotedUrlNo: '',\n yearData: {},\n yearDataUpdated: {},\n yearDataHistory: {},\n isTemporaryData: false,\n temporaryDataDateNo:'',\n temporaryDataDateEn:''\n});\n\nconst YearDataProvider = ({ children }) => {\n const [currentYear, setCurrentYear] = useState('');\n const [howWeVotedUrlEn, setHowWeVotedUrlEn] = useState('');\n const [howWeVotedUrlNo, setHowWeVotedUrlNo] = useState('');\n const [yearData, setYearData] = useState({});\n const [yearDataUpdated, setYearDataUpdated] = useState({});\n const [yearDataHistory, setYearDataHistory] = useState({});\n const [isTemporaryData, setIsTemporaryData] = useState({});\n const [temporaryDataDateNo, setTemporaryDataDateNo] = useState({});\n const [temporaryDataDateEn, setTemporaryDataDateEn] = useState({});\n\n if (isEmptyObject(yearDataUpdated) && isNotEmptyObject(yearData)) {\n setYearDataUpdated(yearData);\n }\n\n return (\n \n {children}\n \n );\n};\n\nYearDataProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { YearDataContext, YearDataProvider };\n","import React, { createContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nconst CompanyDataContext = createContext({\n companyData: [],\n});\n\nconst CompanyDataProvider = ({ children }) => {\n const [companyData, setCompanyData] = useState([]);\n\n return (\n \n {children}\n \n );\n};\n\nCompanyDataProvider.propTypes = {\n children: PropTypes.node,\n};\n\nexport { CompanyDataContext, CompanyDataProvider };\n","import React from 'react';\nimport { ChartDataProvider } from './ChartDataProvider';\nimport { CurrencyProvider } from './CurrencyProvider';\nimport { ErrorProvider } from './ErrorProvider';\nimport { InternationalOrgProvider } from './InternationalOrgProvider';\nimport { LanguageProvider } from './LanguageProvider';\nimport { MenuProvider } from './MenuProvider';\nimport { UiProvider } from './UiProvider';\nimport { SearchProvider } from './SearchProvider';\nimport { TableProvider } from './TableProvider';\nimport { TopFilterProvider } from './TopFilterProvider';\nimport { TotalsProvider } from './TotalsProvider';\nimport { WorldMapDataProvider } from './WorldMapDataProvider';\nimport { YearDataProvider } from './YearDataProvider';\nimport { CompanyDataProvider } from './CompanyDataProvider';\n\nconst ProviderComposer = ({ contexts, children }) => {\n return contexts.reduceRight(\n (kids, parent) => React.cloneElement(parent, { children: kids }),\n children,\n );\n};\n\nexport const ContextProvider = ({ children }) => {\n return (\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ]}\n >\n {children}\n \n );\n};\n","// This HOC component is meant for one thing only: be a host for the 'ContextProvider'\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { ContextProvider } from '../../contexts';\n\nfunction App({ children }) {\n return (\n
\n {children}\n
\n );\n}\n\nApp.propTypes = {\n children: PropTypes.node,\n};\n\nexport default App;\n","/* eslint-disable camelcase */\nimport React, { useContext, useLayoutEffect, useRef } from 'react';\nimport classnames from 'classnames';\nimport * as am4core from '@amcharts/amcharts4/core';\nimport * as am4maps from '@amcharts/amcharts4/maps';\nimport am4geodata_worldLow from '@amcharts/amcharts4-geodata/worldLow';\nimport am4themes_animated from '@amcharts/amcharts4/themes/animated';\nimport { InternationalOrgContext, WorldMapDataContext } from '../../../contexts';\nimport { isNotEmptyArray } from '../../../utils/isEmptyUtil';\n\nconst renderMap = (pageType, internationalOrg) => {\n return (\n 0 && 'filter-defocus',\n pageType === 'front' && 'min-h-48 xs:min-h-64 sm:min-h-80 md:min-h-screen-1/2',\n pageType === 'investments' &&\n 'min-h-48 xs:min-h-64 sm:min-h-80 md:min-h-screen-1/2 lg:min-h-screen-1/3',\n pageType === 'fullscreen' && 'min-h-64 sm:min-h-screen-1/2',\n )}\n />\n );\n};\n\nconst WorldMap = ({ pageType }) => {\n const { worldMapData } = useContext(WorldMapDataContext);\n const { internationalOrg } = useContext(InternationalOrgContext);\n // ! See: https://www.amcharts.com/docs/v4/getting-started/integrations/using-react/\n const chart = useRef(null);\n useLayoutEffect(() => {\n if (worldMapData && isNotEmptyArray(worldMapData)) {\n // Themes\n am4core.useTheme(am4themes_animated);\n\n // Create map instance\n const container = am4core.create('world-map', am4core.Container);\n container.width = am4core.percent(100);\n container.height = am4core.percent(100); // <--- inherits height\n container.logo.disabled = true;\n const chartX = container.createChild(am4maps.MapChart);\n // Let map overflow div\n chartX.svgContainer.hideOverflow = false;\n // Set map definition\n chartX.geodata = am4geodata_worldLow;\n // Set projection\n chartX.projection = new am4maps.projections.NaturalEarth1();\n // Create map polygon series\n const polygonSeries = chartX.series.push(new am4maps.MapPolygonSeries());\n polygonSeries.mapPolygons.template.strokeWidth = 1;\n\n // Logic for colour of selected country\n const selectedBgColor = pt => {\n let output = '#1575A4'; // default color: Blue\n if (pt === 'fullscreen') {\n output = '#1575A4';\n } else if (pt === 'investments') {\n output = '#1575A4'; // Same blue (condition is redundant for now)\n }\n return output;\n };\n // Logic for default country colour\n const defaultBgColor = pt => {\n let output = '#C7C7C7'; // default color: grey\n if (pt === 'fullscreen') {\n output = '#C7C7C7'; // Same grey, was '#4991B8' (Light Blue)\n } else if (pt === 'investments') {\n output = '#C7C7C7'; // Same grey (condition is redundant for now)\n }\n return output;\n };\n // Logic for map stroke colour\n const strokeColor = pt => {\n let output = '#FFFFFF'; // default color: White\n if (pt === 'fullscreen') {\n output = '#F1F1F1'; // Light grey, was '#1575A4' (Blue)\n } else if (pt === 'investments') {\n output = '#F1F1F1'; // Light grey\n }\n return output;\n };\n // Logic for \"has an investment but not selected\" country (Currently the same as default BG color)\n // TODO: This might be useful later\n const hasInvestmentButNotSelectedBgColor = pt => {\n let output = '#C7C7C7'; // default color: Grey\n if (pt === 'fullscreen') {\n output = '#C7C7C7'; // Same grey, was '#4991B8' (Light Blue)\n } else if (pt === 'investments') {\n output = '#C7C7C7'; // Grey\n }\n return output;\n };\n\n // Default stroke color\n polygonSeries.mapPolygons.template.stroke = strokeColor(pageType);\n // Set the default background colour for a country\n polygonSeries.mapPolygons.template.fill = am4core.color(defaultBgColor(pageType));\n // Exclude Antartica\n polygonSeries.exclude = ['AQ'];\n // Make map load polygon (like country names) data from GeoJSON\n polygonSeries.useGeodata = true;\n // Configure series\n const polygonTemplate = polygonSeries.mapPolygons.template;\n // Disable zoom\n chartX.maxZoomLevel = 1;\n // Disable pan\n chartX.seriesContainer.draggable = false;\n chartX.seriesContainer.resizable = false;\n // Disable mouse wheel\n chartX.chartContainer.wheelable = false;\n // Disable double-click zoom\n chartX.seriesContainer.events.disableType('doublehit');\n chartX.chartContainer.background.events.disableType('doublehit');\n // Set colors\n const worldMapDataWithColors = [];\n\n worldMapData.map(country => {\n if (country.isActive) {\n // Country is selected in the filters\n worldMapDataWithColors.push({\n ...country,\n fill: am4core.color(selectedBgColor(pageType)),\n });\n } else {\n // If country has an investment but is not selected\n worldMapDataWithColors.push({\n ...country,\n fill: am4core.color(hasInvestmentButNotSelectedBgColor(pageType)),\n });\n }\n return null;\n });\n\n // Pass data that defines active countries\n polygonSeries.data = worldMapDataWithColors;\n // Set where to get the fill property for polygons from\n polygonTemplate.propertyFields.fill = 'fill';\n // Prepare to dispose the previous chart\n chartX.current = chart;\n // Dispose the previous chart (something you do in 'amMaps' API)\n am4core.options.autoDispose = true;\n\n chartX.clickable = false;\n chartX.valign = 'top';\n }\n return undefined;\n }, [worldMapData, pageType]);\n // Render map\n return renderMap(pageType, internationalOrg);\n};\n\nexport default WorldMap;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { thousandify } from '../../../utils/getDataUtil';\nimport { LanguageContext } from '../../../contexts';\n\nfunction FilteredTotalsListItem({ amount, borderColor, label }) {\n const { language } = useContext(LanguageContext);\n return (\n \n {thousandify(amount, language)} \n {label}\n \n );\n}\n\nFilteredTotalsListItem.defaultProps = {\n borderColor: 'grey-light',\n};\n\nFilteredTotalsListItem.propTypes = {\n amount: PropTypes.number,\n borderColor: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n};\n\nexport default FilteredTotalsListItem;\n","export const icons = [\n {\n name: 'ArrowLeft',\n d: 'M8 17.4853L2 9.48529L8 1.48529 M2 9.48529L18 9.48529',\n width: '18',\n height: '18',\n },\n {\n name: 'ArrowRight',\n d: 'M10 1L16 9L10 17 M16 9H0',\n width: '18',\n height: '18',\n },\n {\n name: 'ArrowUpLong',\n d: 'M1 8L9 2L17 8 M9 2L9 28',\n width: '18',\n height: '30',\n },\n {\n name: 'ArrowExpand',\n d: 'M10 10L16 16 M1 1L7 7 M7 0.999993H0.999996L1.00001 6.99999 M10 16L16 16L16 10',\n width: '18',\n height: '18',\n },\n {\n name: 'Check',\n d: 'M1 7L4 10L12 1',\n width: '13',\n height: '12',\n },\n {\n name: 'ChevronRight',\n d: 'M1 1L7 9L1 17',\n width: '9',\n height: '18',\n },\n {\n name: 'ChevronDown',\n d: 'M17 1L9 7L1 0.999999',\n width: '18',\n height: '9',\n },\n {\n name: 'ChevronUpDown',\n d: 'M11 10.2304L6 14.0765L1 10.2304 M1 5.84615L6 2L11 5.84615',\n width: '12',\n height: '16',\n },\n {\n name: 'ChevronRightXl',\n d: 'M1 1L38.5 51L1 101',\n width: '40',\n height: '102',\n },\n {\n name: 'Dash',\n d: 'M0 1H10',\n width: '10',\n height: '2',\n },\n {\n name: 'Download',\n d: 'M7.01172 0L7.01172 12 M0.765625 7.94116L6.95124 13.2353L13.1369 7.94116 M0 15.5L14 15.5',\n width: '14',\n height: '18',\n },\n {\n name: 'InvestmentEquities',\n d: 'M1 11L1 14 M5 7L5 14 M9 8L9 14 M13 0L13 14 M17 5L17 14',\n width: '18',\n height: '14',\n },\n {\n name: 'InvestmentFixedIncome',\n d:\n 'M8 17L-5.96046e-08 17 M8 13L-5.96046e-08 13 M8 9L-5.96046e-08 9 M18 17L10 17 M18 13L10 13 M18 9L10 9 M18 5L10 5 M18 1L10 1',\n width: '18',\n height: '18',\n },\n {\n name: 'InvestmentRealEstate',\n d:\n 'M1 5V16 M9 0V16 M17 0V16 M13 12V16 M5 12V16 M8 5L-5.96046e-08 5 M6 9H4 M14 9L12 9 M14 5L12 5 M18 1L8 1',\n width: '18',\n height: '16',\n },\n {\n name: 'InvestmentInfrastructure',\n d:\n 'M1 5V16 M9 0V16 M17 0V16 M13 12V16 M5 12V16 M8 5L-5.96046e-08 5 M6 9H4 M14 9L12 9 M14 5L12 5 M18 1L8 1',\n width: '18',\n height: '16',\n },\n {\n name: 'Link',\n d:\n 'M4.3 6.1L2.5 7.8C0.5 9.8 0.5 13.1 2.5 15.2C4.5 17.2 7.8 17.2 9.9 15.2L11.6 13.5 M13.5 11.6L15.2 9.9C17.2 7.9 17.2 4.6 15.2 2.5C13.2 0.5 9.89998 0.5 7.79998 2.5L6.09998 4.3 M12.4 5.3L5.29999 12.4',\n width: '18',\n height: '18',\n },\n {\n name: 'Plus',\n d: 'M0.514709 7.00001H13.4853M6.99999 13.4853L6.99999 0.514725',\n width: '14',\n height: '14',\n },\n {\n name: 'Reset',\n d:\n 'M4.27272 10.0688V8.43239C4.27272 4.36557 7.56953 1.06876 11.6364 1.06876C15.7032 1.06876 19 4.36557 19 8.43239C19 12.4992 15.7032 15.796 11.6364 15.796C9.68954 15.796 7.91918 15.0405 6.60246 13.8067 M1 8.16876L4.27273 11.0324L7.54545 8.16876',\n width: '20',\n height: '17',\n },\n\n {\n name: 'Search',\n d:\n 'M5 6.49958C5 9.53632 7.46218 12 10.5008 12C13.5378 12 16 9.53632 16 6.49958C16 3.46284 13.5378 1 10.5008 1C7.46218 1 5 3.46284 5 6.49958Z M6 11L2 15',\n width: '17',\n height: '17',\n },\n {\n name: 'X',\n d: 'M1 1L13 13 M1 13L13 1',\n width: '14',\n height: '14',\n },\n];\n","// Based on and modified: https://medium.com/datadriveninvestor/custom-icon-component-in-react-bc95a4eca52c\n\n// Note! When referencing an icon, by setting the 'strokeColor' prop to 'inherit', you can override\n// the stroke color by setting it as a prop on container elements such as buttons i.e. 'hover:stroke-blue'\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { icons } from '../../assets/svg/icons/IconLibrary.js';\n\n// TODO: Remove this and just apply regular tailwind styles on className?\nconst defaultStyles = { display: 'inline-block' };\n\nconst renderSVG = ({ className, icon, strokeColor, styles }) => {\n const output = [];\n icons.map(data => {\n const theName = data.name;\n\n if (theName && theName === icon) {\n output.push(\n \n {/* Note! Using a class to set stroke color dynamically, rather than the svg stroke=\"\" property */}\n {/* Possibly look into using .stroke-current instead if it becomes difficult to maintain */}\n {/* https://tailwindcss.com/docs/stroke */}\n {/* Also note! This requires all icons to have multiple paths (if applicable) condensed into one string in d:'...' inside IconLibrary.js */}\n \n ,\n );\n }\n return null;\n });\n return output;\n};\n\nconst Icon = ({ className, icon, strokeColor, style, viewBox }) => {\n const styles = { ...defaultStyles, ...style };\n return <>{renderSVG({ className, strokeColor, icon, icons, styles, viewBox })};\n};\n\nIcon.defaultProps = {\n className: '',\n strokeColor: 'black',\n style: {},\n};\n\nIcon.propTypes = {\n className: PropTypes.string,\n strokeColor: PropTypes.string,\n icon: PropTypes.string.isRequired,\n style: PropTypes.object,\n};\n\nexport default Icon;\n","/* eslint-disable react/destructuring-assignment */\n/* eslint-disable react/state-in-constructor */\n/* eslint-disable react/static-property-placement */\n\n// Copied and modified from 'animated-number-react'\n// Changes: Introduce 'animate' prop, which triggers animation conditionally\n// See: https://github.com/Leocardoso94/animated-number-react\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport anime from './anime';\n\nconst defaultFunction = () => {};\n\nclass AnimatedNumber extends Component {\n static propTypes = {\n animate: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n duration: PropTypes.number,\n delay: PropTypes.number,\n formatValue: PropTypes.func,\n begin: PropTypes.func,\n complete: PropTypes.func,\n run: PropTypes.func,\n update: PropTypes.func,\n easing: PropTypes.string,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n animate: false,\n duration: 1000,\n formatValue: value => value,\n easing: 'linear',\n run: defaultFunction,\n complete: defaultFunction,\n update: defaultFunction,\n begin: defaultFunction,\n delay: 0,\n className: null,\n };\n\n state = {\n animatedValue: 0,\n };\n\n target = {\n animatedValue: 0,\n };\n\n componentDidMount = () => {\n this.animateValue();\n };\n\n componentDidUpdate = prevProps => {\n if (prevProps.value !== this.props.value) this.animateValue();\n };\n\n updateValue = anima => {\n this.props.update(anima);\n const { animatedValue } = this.target;\n this.setState({ animatedValue });\n };\n\n animateValue = () => {\n const { duration, begin, easing, complete, run, delay, value } = this.props;\n anime({\n targets: this.target,\n animatedValue: value,\n duration,\n update: this.updateValue,\n easing,\n begin,\n complete,\n run,\n delay,\n });\n };\n\n render() {\n return (\n \n {this.props.animate && this.state.animatedValue !== 0\n ? this.props.formatValue(Number(this.state.animatedValue))\n : this.props.formatValue(Number(this.props.value))}\n \n );\n }\n}\n\nexport default AnimatedNumber;\n","/* eslint-disable no-nested-ternary */\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { UiContext, LanguageContext } from '../../contexts';\nimport { thousandify } from '../../utils/getDataUtil';\nimport { isNotEmptyArray } from '../../utils/isEmptyUtil';\nimport './Nr.scss';\nimport AnimatedNumber from './AnimatedNumber/AnimatedNumber';\nimport config from './../../config';\n\nconst { animateNumbers, animateNumbersDuration, animateNumbersInit } = config;\n\nconst Nr = ({ mode, value, size }) => {\n const { uiIsAnimating, setUiIsAnimating } = useContext(UiContext);\n const { language } = useContext(LanguageContext);\n const timeoutRef = useRef(null); // Keep track of the timeout (for changing 'nr')\n const [nr, setNr] = useState(0);\n\n const handleCompleteAnimation = () => {\n if (animateNumbers && uiIsAnimating) {\n setUiIsAnimating(false);\n }\n };\n\n const convertStringToArraysOfChars = str => {\n const output = [];\n if (str) {\n const arr = str.split('');\n if (arr && isNotEmptyArray(arr)) {\n arr.map(a => {\n if (a === ' ' || a === ',') {\n // It's a space\n output.push(\n \n {a}\n ,\n );\n } else {\n // It's a number\n output.push(\n \n {a}\n ,\n );\n }\n return null;\n });\n }\n }\n const sizeClass = `n-${size}`;\n return {output};\n };\n\n const formatValue = n => {\n if (n) {\n if (mode === 'currency') {\n return convertStringToArraysOfChars(thousandify(n.toFixed(0), language));\n }\n return n.toFixed(0);\n }\n return 0;\n };\n\n // Run this once\n useEffect(() => {\n // Set 'value' to 'nr' under certain conditions\n if (value && (!nr || nr === null || nr !== 0)) {\n setNr(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // Run this after change in value\n useEffect(() => {\n // Only do any of this if the value we're receiving differs from the one we have\n if (value !== nr) {\n // Set a timeout\n timeoutRef.current = setTimeout(() => {\n // Reset ref to null when it runs\n timeoutRef.current = null;\n setNr(value);\n return null;\n }, animateNumbersInit);\n // If there's a running timeout...\n if (timeoutRef.current !== null) {\n // ...cancel it\n clearTimeout(timeoutRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return (\n <>\n {nr ? (\n animateNumbers ? (\n \n ) : (\n formatValue(nr)\n )\n ) : (\n 0\n )}\n \n );\n};\n\nNr.propTypes = {\n value: PropTypes.number.isRequired,\n};\n\nexport default Nr;\n","import React, { useContext } from 'react';\nimport { LanguageContext, YearDataContext } from '../../../contexts';\nimport { isNotEmptyObject } from '../../../utils/isEmptyUtil';\nimport { lang } from '../../../utils/langUtil';\nimport * as json from '../../../server/json/db.json';\nimport config from './../../../config';\n\nconst { inDevelopment } = config;\n\nconst Lang = ({ txt }) => {\n const { yearData } = useContext(YearDataContext);\n const { language } = useContext(LanguageContext);\n const lgObj = inDevelopment && json ? json.language : yearData?.s?.language;\n return language && lgObj && isNotEmptyObject(lgObj) ? <>{lang(lgObj, txt, language)} : null;\n};\n\nexport default Lang;\n\nexport function LangDynamic({ txt, dateValue }) {\n const { yearData } = useContext(YearDataContext);\n const { language } = useContext(LanguageContext);\n const lgObj = yearData?.s?.language;\n let changedText = '';\n if (language && lgObj && isNotEmptyObject(lgObj)) {\n changedText = lang(lgObj, txt, language)?.replace('|', dateValue);\n }\n\n return language && lgObj && isNotEmptyObject(lgObj) ? <>{changedText} : null;\n}\n","import React, { useContext } from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport FilteredTotalsListItem from './FilteredTotalsListItem';\nimport Icon from './../../primitives/Icon';\nimport Nr from '../../primitives/Nr';\nimport Lang from '../Language/Lang';\nimport { InternationalOrgContext, TopFilterContext } from '../../../contexts';\n\nconst NoDataComponent = mode => {\n return (\n \n

\n \n

\n

\n \n

\n \n );\n};\n\nfunction FilteredTotalsSingleType({\n countriesCount,\n mode,\n investmentsCount,\n percentageOfTotal,\n totalAmount,\n totalCurrency,\n}) {\n const { internationalOrg } = useContext(InternationalOrgContext);\n const { realEstateFilteredBySector, infrastructureFilteredBySector, topFilterYear } =\n useContext(TopFilterContext);\n const slug = `/${topFilterYear}/investments/${mode}`;\n\n const investmentsKind = theMode => {\n let output = '';\n if (theMode === 'equities') {\n output = investmentsCount === 1 ? 'company' : 'companies';\n }\n if (theMode === 'fixed-income') {\n output = investmentsCount === 1 ? 'bond' : 'bonds';\n }\n if (theMode === 'real-estate') {\n output = investmentsCount === 1 ? 'property' : 'properties';\n }\n if (theMode === 'infrastructure') {\n output = investmentsCount === 1 ? 'investment' : 'investments';\n }\n return output;\n };\n\n return (\n <>\n {/* Return no data component if there is no contries count, hence no data to show */}\n {/* We also exclude 'fixed-income' because that's the investment type that withholds */}\n {/* 'International Organisations', which doesn't count as a country and therefore */}\n {/* needs to allow for 'countriesCount' = 0 */}\n {(!countriesCount && internationalOrg === 0) ||\n (internationalOrg === 1 && mode !== 'fixed-income') ||\n (internationalOrg === 2 && mode !== 'infrastructure') ||\n (internationalOrg === 3 && mode !== 'infrastructure' && mode !== 'fixed-income') ? (\n NoDataComponent(mode)\n ) : (\n \n
\n \n \n \n \n {/* Wrapper for number and currency */}\n {!realEstateFilteredBySector && !infrastructureFilteredBySector && (\n \n {/* The BIG NUMBER - Narrow on small screens */}\n \n {' '}\n \n {/* Currency */}\n \n {totalCurrency.toUpperCase()}{' '}\n \n
\n )}\n
    \n {internationalOrg === 0 && (\n }\n />\n )}\n }\n />\n {!realEstateFilteredBySector && !infrastructureFilteredBySector && (\n }\n />\n )}\n
\n \n \n \n \n \n \n \n )}\n \n );\n}\n\nFilteredTotalsSingleType.propTypes = {\n countriesCount: PropTypes.number,\n investmentsCount: PropTypes.number,\n mode: PropTypes.oneOf(['equities', 'fixed-income', 'real-estate', 'infrastructure']),\n percentageOfTotal: PropTypes.number,\n totalAmount: PropTypes.number,\n totalCurrency: PropTypes.string,\n};\n\nexport default FilteredTotalsSingleType;\n","import React, { useContext } from 'react';\nimport { CurrencyContext, TotalsContext } from '../../../contexts';\nimport { showAmount } from '../../../utils/getDataUtil';\nimport FilteredTotalsSingleType from './FilteredTotalsSingleType';\n\n// TODO: rename this component!\nconst FilteredTotals = () => {\n const { currency } = useContext(CurrencyContext);\n const {\n totalInvestmentsEquitiesNok,\n totalInvestmentsEquitiesUsd,\n totalInvestmentsFixedIncomeNok,\n totalInvestmentsFixedIncomeUsd,\n totalInvestmentsRealEstateNok,\n totalInvestmentsRealEstateUsd,\n totalInvestmentsInfrastructureNok,\n totalInvestmentsInfrastructureUsd,\n totalNrItemsEquities,\n totalNrItemsFixedIncome,\n totalNrItemsRealEstate,\n totalNrItemsInfrastructure,\n totalNrCountriesEquities,\n totalNrCountriesFixedIncome,\n totalNrCountriesRealEstate,\n totalNrCountriesInfrastructure,\n totalPercentageEquities,\n totalPercentageFixedIncome,\n totalPercentageRealEstate,\n totalPercentageInfrastructure,\n } = useContext(TotalsContext);\n return (\n \n \n \n \n \n \n );\n};\n\nexport default FilteredTotals;\n","// Returns a boolean that determines if date is valid or not\nexport const dateIsValid = date => {\n if (date === '' || date === null) {\n return false;\n }\n // 'date' is not one of the exceptions and is a date, therefore valid\n if (date instanceof Date && !isNaN(date)) {\n return true;\n }\n // not a date\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(`[dateIsValid]: 'date' did not pass validation => [${JSON.stringify(date)}]`);\n }\n return false;\n};\n\n// Returns a date in format DAY/MONTH/YEAR -> ex: 21/06/2018\nexport const formatDateUtil = date => {\n let newDate = new Date(date);\n if (!dateIsValid(date)) {\n newDate = new Date();\n }\n return `${newDate.getDate()}/${newDate.getMonth() + 1}/${newDate.getFullYear()}`;\n};\n\n// Returns the YEAR -> ex: 2018\nexport const getYearUtil = date => {\n const newDate = new Date(date);\n if (!dateIsValid(newDate)) {\n if (process.env.NODE_ENV !== 'test') {\n // eslint-disable-next-line\n console.error(`[getYearUtil]: 'date' did not pass validation => [${JSON.stringify(date)}]`);\n }\n return false;\n }\n return `${newDate.getFullYear()}`;\n};\n\n/**\n * \n * @param {string} language \n * @param {boolean} isTemporaryData \n * @param {string} temporaryDataDateNo \n * @param {string} temporaryDataDateEn \n * @returns string\n */\nexport function getDateLabel(language, isTemporaryData, temporaryDataDateNo, temporaryDataDateEn)\n{\n if(isTemporaryData){\n return language === 'no' ? temporaryDataDateNo : temporaryDataDateEn\n }\n return '31.12'\n}\n","/* eslint-disable no-else-return */\n/* eslint-disable no-console */\n\nimport { isEmptyArray } from './isEmptyUtil';\nimport { getYearUtil } from './formatDateUtil';\n\nexport const getYears = a => a.map(m => getYearUtil(...m));\n\nexport function isObject(value) {\n if (value && typeof value === 'object' && value.constructor === Object) {\n return true;\n }\n return false;\n}\n\nexport function getSeriesTimeline(series) {\n if (!series) {\n if (process.env.NODE_ENV === 'development') {\n console.error(\n '[getSeriesTimeline]: the expected \"series\" object was not passed to \"getSeriesTimeline\"',\n );\n }\n return false;\n } else if (series && !series.data) {\n if (process.env.NODE_ENV === 'development') {\n console.error('[getSeriesTimeline]: the \"series\" object does not have a \"data\" key');\n }\n return false;\n } else if (series && series.data && !Array.isArray(series.data)) {\n if (process.env.NODE_ENV === 'development') {\n console.error(`[getSeriesTimeline]: (${JSON.stringify(series.data)}) is not an array!`);\n }\n return false;\n }\n // Because we did all the checks that guarantee 'series.data':\n // - is defined\n // - is an array\n if (!isEmptyArray(series.data)) {\n if (isObject(series.data[0])) {\n return false;\n }\n return getYears(series.data);\n }\n if (process.env.NODE_ENV === 'development') {\n console.warn('[getSeriesTimeline]: returning an empty array!');\n }\n return [];\n}\n\nexport function sliceData(data, sliceBy) {\n if (sliceBy) {\n return data.slice(Math.max(data.length - sliceBy, 0));\n }\n return data;\n}\n","/* eslint-disable no-restricted-globals */\n\n// helper that sets multiple attributes in one iteration\nexport const setAttrs = (element, obj) => {\n // eslint-disable-next-line\n for (const p in obj) {\n if ({}.hasOwnProperty.call(obj, p)) {\n element.setAttribute([p], obj[p]);\n }\n }\n};\n// helper that sets multiple styles in one iteration\nexport const setStyle = (element, obj) => {\n // eslint-disable-next-line\n for (const p in obj) {\n // eslint-disable-next-line\n element.style[p] = obj[p];\n }\n};\n// on event handler\nexport const on = (to, type, fn) => {\n if (document.addEventListener) {\n to.addEventListener(type, fn, false);\n } else if (document.attachEvent) {\n to.attachEvent(`on${type}`, fn);\n } else {\n // eslint-disable-next-line\n to[`on${type}`] = fn; // legacy fallback\n }\n};\n// has class helper\nexport const hasClass = (el, cl, hasChildren = false) => {\n if (hasChildren) {\n for (const child of el) {\n if (child.classList.contains(cl)) {\n return true;\n }\n }\n } else if (el.classList.contains(cl)) {\n return true;\n }\n return false;\n};\n// Check which environment we're on. If we're in the host we want to exclude, return false.\n// Useful to exclude 'production', for instance\nexport const excludeHost = host => {\n let state = true;\n if (typeof parent.window.location === 'object') {\n const regex = new RegExp(host);\n if (regex.test(parent.window.location.host)) {\n state = false;\n }\n }\n return state;\n};\n// Show console messages only when supported\nexport const logMessage = (message, styles) => {\n if (\n typeof parent.window.console === 'object' &&\n (excludeHost('nbim.no') || excludeHost('www.nbim.no'))\n ) {\n parent.window.console.log(message, styles);\n }\n};\n// check if value is empty\nexport const isEmpty = value => value == null || value.length === 0;\n// check if we are in the path slug we expect to be, so that we can do things\nexport const isPath = path => {\n let status = false;\n if (path || path === '') {\n const currentUrl = window.location.pathname;\n if (currentUrl !== '' && currentUrl !== undefined) {\n const slug = currentUrl.replace('/', '').replace('.html', '');\n if (path === slug) {\n status = true;\n }\n }\n }\n return status;\n};\n\nexport const getSiblings = elem => {\n // Setup siblings array and get the first sibling\n const siblings = [];\n let sibling = elem.parentNode.firstChild;\n\n // Loop through each sibling and push to the array\n while (sibling) {\n if (sibling.nodeType === 1 && sibling !== elem) {\n siblings.push(sibling);\n }\n sibling = sibling.nextSibling;\n }\n return siblings;\n};\n\n// retrieve the value of a selected option (in a 'select' element)\nexport const setSelectedOption = sel => sel.value;\n","/**\n * Fold and unfold large tables.\n * The trick is css transition and max-height.\n * This function can be used on multiple tables.\n */\nexport default function nbimTableColumnToggler() {\n const buttons = document.getElementsByClassName('nbim-responsive-table__toggler');\n const selected = 'is-selected';\n const focused = 'is-focused';\n\n if (buttons !== null) {\n const columnToggler = i => {\n // Bring this back when we drop support to IE11\n // const row = buttons[i].closest('tr');\n const row = buttons[i].parentElement.parentElement;\n const isSelected = row.classList.contains(selected);\n\n if (isSelected) {\n row.classList.remove(selected);\n buttons[i].classList.remove(selected);\n buttons[i].setAttribute('aria-expanded', false);\n } else {\n row.classList.add(selected);\n buttons[i].classList.remove(focused);\n buttons[i].setAttribute('aria-expanded', true);\n buttons[i].classList.add(selected);\n }\n };\n\n // Set height and add eventlistener to the buttons.\n // eslint-disable-next-line no-plusplus\n for (let i = 0, j = buttons.length; i < j; i++) {\n // Add event listener for each button.<\n buttons[i].addEventListener('click', () => {\n columnToggler(i);\n });\n }\n }\n}\n","/* eslint-disable array-callback-return */\n/* eslint-disable no-loop-func */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-undef */\n/* eslint-disable no-useless-concat */\n\nimport { saveAs } from 'file-saver';\nimport nbimTableColumnToggler from './nbimTableColumnToggler';\n\n// eslint-disable-next-line max-len\nexport default function graphToTable(\n renderTo,\n props,\n renderAsResponsiveTable,\n exportToXls = false,\n) {\n const renderToElm = document.getElementById(renderTo);\n const { series, timeline } = props;\n\n if (renderToElm && typeof series === 'object') {\n if (renderToElm.innerHTML !== '') {\n renderToElm.innerHTML = '';\n }\n\n const output = document.createElement(renderAsResponsiveTable ? 'div' : 'table');\n\n let thead = '';\n let tbody = '\\n';\n let table = '';\n let currentColumn = 0;\n let currentRow = 0;\n const totalColumns = series.length - 1;\n let totalRows = 0;\n\n // Sort series by graph index if possible.\n // eslint-disable-next-line no-confusing-arrow\n series.sort((a, b) => (a.index > b.index ? 1 : -1));\n\n series.map((data, i) => {\n thead +=\n timeline && i === 0\n ? ` \\n${data.name}\\n`\n : `${data.name}\\n`;\n\n if (typeof data.data === 'object') {\n if (totalRows === 0) {\n totalRows = data.data.length;\n }\n // eslint-disable-next-line no-shadow\n for (let y = 0, j = data.data.length; y < j; y++) {\n const column = (columnValue, toggler) => {\n if (typeof columnValue === 'undefined') {\n tbody += '\\n';\n return;\n }\n\n tbody += '\\n';\n\n if (renderAsResponsiveTable) {\n if (!toggler) {\n tbody += `${\n typeof series[currentColumn].name !== 'undefined'\n ? series[currentColumn].name\n : ''\n }\\n`;\n }\n tbody += '\\n';\n }\n\n tbody += columnValue;\n\n if (renderAsResponsiveTable) {\n tbody += '\\n';\n\n if (toggler) {\n tbody +=\n '\\n';\n }\n }\n\n tbody += '\\n';\n };\n\n const rowEnd = () => {\n // Table body end.\n if (currentRow === totalRows - 1) {\n column(series[currentColumn].data[currentRow][1], false);\n tbody += '\\n';\n } else {\n column(series[currentColumn].data[currentRow][1], false);\n tbody += '\\n\\n';\n currentColumn = 0;\n currentRow++;\n }\n };\n\n if (currentColumn === totalColumns) {\n if (totalColumns === 0) {\n column(timeline[currentRow], true);\n }\n rowEnd();\n } else {\n if (timeline && currentColumn === 0) {\n column(timeline[currentRow], true);\n column(series[currentColumn].data[currentRow][1], false);\n } else {\n column(series[currentColumn].data[currentRow][1], currentColumn === 0);\n }\n currentColumn++;\n }\n }\n }\n });\n\n if (renderAsResponsiveTable) {\n table +=\n '
\\n' +\n '
\\n' +\n '\\n';\n }\n\n table +=\n `${'\\n' + '\\n'}${thead}\\n` + '\\n' + `\\n${tbody}\\n`;\n\n if (renderAsResponsiveTable) {\n table +=\n '
' +\n '\\n' +\n '
\\n' +\n '
\\n';\n\n output.className = 'nbim-responsive-table__outer-container m-t-20 m-b-20';\n }\n\n output.innerHTML = table;\n\n if (exportToXls) {\n renderToElm.appendChild(output);\n renderToElm.firstChild.style.display = 'none';\n\n const tableHTML = renderToElm.firstChild;\n const s2ab = s => {\n const buf = new ArrayBuffer(s.length);\n const view = new Uint8Array(buf);\n // eslint-disable-next-line no-bitwise\n for (let i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xff;\n return buf;\n };\n const wb = XLSX.utils.table_to_book(tableHTML, { sheet: 'Sheet JS' });\n const wbout = XLSX.write(wb, { bookType: 'xls', bookSST: true, type: 'binary' });\n saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), 'nbim-data-dump.xls');\n } else {\n renderToElm.appendChild(output);\n }\n\n // Init nbimTableColumnToggler after appending table.\n nbimTableColumnToggler();\n }\n}\n","import React, { useContext } from 'react';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n// Import contexts\nimport { LanguageContext, YearDataContext } from '../../../contexts';\n// Import utils\nimport { lang } from '../../../utils/langUtil';\nimport { modeName } from '../../../utils/getDataUtil';\n\n// The 'ChartHeading' component renders at the top of 'Chart' component\nconst ChartHeading = ({ level, locations }) => {\n const { paramInvestmentType } = useParams();\n\n let heading = '';\n // let subHeading = '';\n\n const { yearData } = useContext(YearDataContext);\n const { language } = useContext(LanguageContext);\n\n // We need the 'raw' language to output 'aria-label' correctly\n const langObj = yearData?.s?.language;\n\n // Get mode / investment type\n const investmentType = () => {\n let output = '';\n if (paramInvestmentType && level === 2) {\n output = modeName({ mode: paramInvestmentType, lang: language, lowcase: true });\n }\n return output;\n };\n\n // -- 1st level\n // unfiltered\n if (level === 1 && (locations === '' || locations === undefined)) {\n heading = lang(langObj, 'Historic investments', language);\n // subHeading = lang(langObj, 'All investments', language);\n }\n // filtered\n if (level === 1 && locations) {\n heading = lang(langObj, 'Historic investments', language);\n // subHeading = locations;\n }\n\n // -- 2nd level\n // unfiltered\n if (level === 2 && (locations === '' || locations === undefined)) {\n heading = `${lang(langObj, 'Historic investments', language)} ${investmentType()}`;\n // subHeading = lang(langObj, 'All investments', language);\n }\n // filtered\n if (level === 2 && locations) {\n heading = `${lang(langObj, 'Historic investments', language)} ${investmentType()}`;\n // subHeading = locations;\n }\n\n // -- 3rd level\n // We don't show it on level 3\n\n return (\n
\n \n {heading}\n \n {/* {subHeading &&

{subHeading}

} */}\n
\n );\n};\n\nChartHeading.propTypes = {\n level: PropTypes.number.isRequired,\n locations: PropTypes.string,\n};\n\nexport default ChartHeading;\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable no-alert */\n/* eslint-disable no-loop-func */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n\n/*\n ! About this implementation\n\n Since we already have an intricate implementation in vanilla js, when it comes to Highcharts,\n I decided to take the 'minimal possible effort' approach while porting the 'nbimChart' script to React.\n This means that most of the component consists of vanilla js, with a few 'render' sections.\n To have a better glimpse of what is going on, collapse the functions.\n\n Also see:\n\n Current implementation:\n https://github.com/netliferesearch/nbim-proto/blob/history/src/js/nbimCharts.js\n https://github.com/netliferesearch/nbim-proto/blob/history/src/html/layouts/grafer.html\n https://github.com/netliferesearch/nbim-proto/blob/history/src/html/layouts/partials/chart.html\n\n Using it on history project:\n https://github.com/netliferesearch/nbim-proto/blob/history/app/src/components/Primitives/ScrollChart/ScrollChart.js\n https://github.com/netliferesearch/nbim-proto/blob/4b8d233672e3d4bb2b710c83263c8ac3d2e0af8f/app/public/index.html#L111-L272\n*/\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Highcharts from 'highcharts';\nimport merge from 'deepmerge';\nimport { getSeriesTimeline, sliceData } from '../../../utils/chartsUtils';\nimport { isEmptyArray, isNotEmptyArray, isNotEmptyObject } from '../../../utils/isEmptyUtil';\nimport { hasClass } from '../../../helpers';\nimport graphToTable from '../../../helpers/graphToTable';\nimport lazyScript from '../../../helpers/lazyScript';\nimport './Chart.scss';\nimport ChartHeading from './ChartHeading';\nimport Lang from '../../content/Language/Lang';\n\n// We won't do certain things if we're on IE11\nconst isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n\n// Define shared/default values for each chart type. These objects will be passed to\n// 'renderTheChart' function, which in turn will be merged with editor-defined values\n// and passed to the final 'Highcharts' object\nconst sharedChartOptions = {\n lang: {\n decimalPoint: '.',\n thousandsSep: ',',\n },\n global: {\n useUTC: true,\n },\n chart: {\n backgroundColor: 'transparent',\n style: {\n fontFamily: 'azo-sans-web, arial, sans-serif',\n fontStyle: 'normal',\n fontWeight: '300',\n },\n // Note: Spacing and xAxis added for Beholdningsløsningen to extend chart and legend to edge of wrapper.\n spacingRight: 0,\n spacingBottom: 0,\n spacingLeft: 0,\n xAxis: {\n minPadding: 0,\n maxPadding: 0,\n },\n },\n credits: {\n enabled: false,\n },\n title: {\n text: '',\n },\n navigator: {\n enabled: false,\n allButtonsEnabled: false,\n series: {\n includeInCSVExport: false,\n },\n },\n legend: {\n enabled: false,\n layout: 'horizontal',\n verticalAlign: 'bottom',\n borderWidth: 0,\n floating: false,\n align: 'left',\n margin: 40,\n itemMarginBottom: 10, // For beholdningsløsningen\n padding: 0,\n itemStyle: {\n color: '#000000', // For beholdningsløsningen\n textDecoration: 'none',\n },\n },\n exporting: {\n enabled: false,\n },\n};\n// Set 'yAxis' separately so that we can merge default values (aharedYAxis) with passed values (optionsYAxis)\nconst sharedYAxis = [\n {\n title: {\n text: '',\n },\n gridLineWidth: 1,\n lineWidth: 1,\n },\n {\n title: {\n text: '',\n },\n gridLineWidth: 1,\n lineWidth: 1,\n linkedTo: 0,\n opposite: true,\n visible: true,\n },\n];\nconst sharedChartPropsArea = {\n chart: {\n type: 'area',\n },\n xAxis: {\n type: 'datetime',\n tickInterval: 365 * 24 * 1000 * 3600,\n // eslint-disable-next-line\n tickPositioner: function () {\n const positions = [];\n let tick = Math.floor(this.dataMin);\n const increment = 1000 * 3600 * 24 * 365;\n if (this.dataMax != null && this.dataMin != null) {\n for (tick; tick < this.dataMax; tick += increment) {\n positions.push(tick);\n }\n }\n return positions;\n },\n },\n plotOptions: {\n column: {},\n line: {\n marker: {\n enabled: false,\n },\n },\n },\n exporting: {\n csv: {\n dateFormat: '%Y',\n decimals: '0',\n },\n },\n};\nconst sharedChartPropsColumn = {\n chart: {\n type: 'column',\n },\n xAxis: {\n type: 'datetime',\n tickInterval: 365 * 24 * 1000 * 3600,\n },\n plotOptions: {\n column: {},\n line: {\n marker: {\n enabled: false,\n },\n },\n // * Interesting way to debug clicking events on legend items, though unused\n // series: {\n // events: {\n // legendItemClick: () => {\n // console.log(this?.series?.[1]?.data?.[0]);\n // const visibility = this?.visible ? 'visible' : 'hidden';\n // if (!confirm(`The series is currently ${visibility}. Do you want to change that?`)) {\n // return false;\n // }\n // return null;\n // },\n // },\n // },\n },\n exporting: {\n csv: {\n dateFormat: '%Y',\n decimals: '0',\n },\n },\n responsive: {\n rules: [\n {\n condition: {\n maxWidth: 500,\n },\n chartOptions: {\n xAxis: {\n tickInterval: 3600 * 24 * 1000 * 3600,\n },\n },\n },\n ],\n },\n};\nconst sharedChartPropsPie = {\n chart: {\n type: 'pie',\n },\n plotOptions: {\n pie: {\n size: '75%',\n slicedOffset: 0,\n allowPointSelect: true,\n cursor: 'pointer',\n dataLabels: {\n enabled: true,\n format: '{point.name}: {point.y}',\n style: {\n fontFamily: \"'AzoSans Light', sans-serif\",\n fontSize: '14px',\n fontWeight: 'normal',\n },\n },\n startAngle: -90,\n endAngle: 270,\n },\n },\n};\nconst sharedChartPropsLine = {\n chart: {\n type: 'line',\n },\n xAxis: {\n type: 'datetime',\n tickInterval: 365 * 24 * 1000 * 3600,\n // eslint-disable-next-line\n tickPositioner: function () {\n const positions = [];\n let tick = Math.floor(this.dataMin);\n const increment = 1000 * 3600 * 24 * 365;\n if (this.dataMax != null && this.dataMin != null) {\n for (tick; tick < this.dataMax; tick += increment) {\n positions.push(tick);\n }\n }\n return positions;\n },\n },\n plotOptions: {\n column: {},\n line: {\n marker: {\n enabled: false,\n },\n },\n },\n exporting: {\n csv: {\n dateFormat: '%d-%m-%Y',\n decimals: '2',\n },\n },\n responsive: {\n rules: [\n {\n condition: {\n maxWidth: 500,\n },\n chartOptions: {\n xAxis: {\n tickInterval: 3600 * 24 * 1000 * 3600,\n },\n },\n },\n ],\n },\n};\n// Initialise the chart\nconst initChart = ({\n renderTo,\n reflowStatus,\n height,\n data,\n chartType = 'column', // area | column | line | pie\n showFilter = false,\n buttonHeader = '',\n buttonActiveText = '',\n buttonsInactive = [],\n extras = {},\n optionsYAxis = [],\n}) => {\n // Don't proceed if 'renderTo' element is not found on the page\n const el = document.getElementById(renderTo);\n if (el) {\n const { series = [], timeline = [] } = data;\n // Don't proceed if 'series' is not defined\n if (isNotEmptyArray(series)) {\n // Extract 'timeline' from 'series', and set it to the 'data' object\n data.timeline = isEmptyArray(timeline) ? getSeriesTimeline(series[0]) : timeline;\n // Set shared 'props' for each chart type\n let sharedChartProps = null;\n switch (chartType) {\n case 'area':\n sharedChartProps = sharedChartPropsArea;\n break;\n case 'column':\n sharedChartProps = sharedChartPropsColumn;\n break;\n case 'line':\n sharedChartProps = sharedChartPropsLine;\n break;\n case 'pie':\n sharedChartProps = sharedChartPropsPie;\n break;\n default:\n sharedChartProps = sharedChartPropsColumn; // syntax sugar, we already get it as default when deconstructing 'props'\n console.warn(\n '[initChart] No value was passed for \"chartType\" (area, column, line, pie), so we fell back to the default \"column\"',\n );\n }\n // Render 'extras' conditionally (if 'extras.status' is set to true)\n const renderExtras = props => {\n // This function will create and render the necessary markup that shows both the\n // 'show as table' and 'download as XLS' buttons, if the person creating the chart\n // chooses to show them\n const {\n status = false,\n showAsTableTextOff = 'Vis som tabell',\n showAsTableTextOn = 'Lukk tabell',\n } = extras;\n // Retrieve element into which all new elements will be appended to\n const elExtras = document.getElementById(`${renderTo}__extras`);\n // Only do any of this if the editor has chosen to show extras\n if (status && elExtras) {\n // Prepare ids and classes\n const idExtrasRenderTable = `${renderTo}-render-table`; // div\n const idExtrasButtonTable = `${renderTo}-show-as-table`; // button\n const idExtrasButtonDownload = `${renderTo}-download-xls`; // button\n // Don't re-append markup. Just re-render table.\n if (elExtras.innerHTML === '') {\n // Now that we have the markup on the DOM, retrieve elements that will get event handlers\n const extrasButtonTableDOM = document.getElementById(idExtrasButtonTable);\n const extrasRenderTableDOM = document.getElementById(idExtrasRenderTable);\n const extrasButtonDownloadDOM = document.getElementById(idExtrasButtonDownload);\n // On click event for 'show as table'\n if (extrasButtonTableDOM) {\n extrasButtonTableDOM.addEventListener('click', e => {\n e.preventDefault();\n e.stopPropagation();\n // Toggle class\n if (hasClass(extrasButtonTableDOM, 'selected')) {\n extrasButtonTableDOM.classList.remove('selected');\n extrasButtonTableDOM.innerText = showAsTableTextOff;\n } else {\n extrasButtonTableDOM.classList.add('selected');\n extrasButtonTableDOM.innerText = showAsTableTextOn;\n }\n // Do what we came here for\n if (hasClass(extrasButtonTableDOM, 'selected')) {\n extrasButtonTableDOM.setAttribute('aria-expanded', 'true');\n extrasRenderTableDOM.classList.add('selected');\n graphToTable(`${renderTo}-render-table`, props, true, false);\n } else {\n extrasButtonTableDOM.setAttribute('aria-expanded', 'false');\n extrasRenderTableDOM.classList.remove('selected');\n }\n });\n }\n // On click event for 'show as table'\n if (extrasButtonDownloadDOM) {\n if (typeof XLSX !== 'undefined') {\n extrasButtonDownloadDOM.addEventListener('click', e => {\n e.preventDefault();\n e.stopPropagation();\n graphToTable(`${renderTo}-download-xls-table`, props, false, true);\n });\n } else {\n const dlButton = document.getElementById(`${renderTo}-download-xls`);\n dlButton.style.display = 'none';\n }\n }\n }\n }\n };\n // Render the chart\n const renderTheChart = props => {\n // This function merges all shared/default 'props' with the ones that are passed to the\n // chart by the editors. We pass the merged object to the 'Chart' method of 'Highcharts',\n // making this the place where \"it happens\"\n // Retrieve shared/default 'props'\n const localChartProps = { ...props };\n // Merge shared/default 'props' with those set/passed down by editors\n const allProps = merge(sharedChartProps, localChartProps);\n // The block below is there so that we can merge a shared/default array with the one\n // passed down by editors.\n const emptyTarget = value => (Array.isArray(value) ? [] : {});\n const clone = (value, options) => merge(emptyTarget(value), value, options);\n const combineMerge = (target, source, options) => {\n const destination = target.slice();\n for (let i = 0; i < source.length; i++) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(source[i]);\n destination[i] = shouldClone ? clone(source[i], options) : source[i];\n } else if (options.isMergeableObject(source[i])) {\n destination[i] = merge(target[i], source[i], options);\n } else if (target.indexOf(source[i]) === -1) {\n destination.push(source[i]);\n }\n }\n return destination;\n };\n // Merge default values (sharedYAxis) with passed values (optionsYAxis)\n const mergedYAxisArray = merge(sharedYAxis, optionsYAxis, { arrayMerge: combineMerge });\n // Assign resulting array to its rightfull property in the 'Highcharts' object\n const mergedYAxisObject = {\n yAxis: mergedYAxisArray,\n };\n // Merge the property set above with the previously merged 'allProps'\n const allPropsWithYAxis = merge(allProps, mergedYAxisObject);\n // Set the shared options\n Highcharts.setOptions({\n ...sharedChartOptions,\n });\n // Create a 'Chart' instance and pass all merged props\n const theChart = () =>\n new Highcharts.Chart({\n ...allPropsWithYAxis,\n });\n // TODO: remove window.highchartsData when the 2020 infrastructure data in the chart on level 1 is fixed\n window.highchartsData = allPropsWithYAxis;\n // Invoke the chart!\n theChart();\n // Show the extras (we check for 'status' from within 'renderExtras')\n renderExtras(props);\n };\n // If filter is set to be shown, we have the buttons' wrapper in the DOM and\n // we're not on IE11, build and render the filter buttons\n const elButtons = document.getElementById(`${renderTo}__buttons`);\n if (showFilter && elButtons && !isIE11) {\n // Prepare classes\n const classesElButtons = ['range-selector__wrapper', 'm-b-20'];\n const classesBtnsWrapper = [\n 'd-flex',\n 'align-items-center',\n 'range-selector',\n `range-selector--${renderTo}`,\n ]; // div\n const classesBtnsHeader = ['range-selector__title', 'm-r-10']; // h4\n const classesBtnActive = ['button', 'button--bordered', 'range-selector__btn', 'm-r-5']; // button\n const classesBtnsInactive = [\n 'button',\n 'button--bordered--inactive',\n 'range-selector__btn',\n 'm-r-5',\n ]; // button\n // Create elements\n const btnsWrapper = document.createElement('div');\n const btnsHeader = document.createElement('h4');\n const btnActive = document.createElement('button');\n // Add classes\n elButtons.classList.add(...classesElButtons);\n btnsWrapper.classList.add(...classesBtnsWrapper);\n btnsHeader.classList.add(...classesBtnsHeader);\n btnActive.classList.add(...classesBtnActive);\n // Add content to created elements\n btnsHeader.innerText = `${buttonHeader}:`;\n btnActive.innerText = buttonActiveText;\n // Append elements\n if (btnsWrapper.innerHTML === '') {\n btnsWrapper.appendChild(btnsHeader);\n }\n btnsWrapper.appendChild(btnActive);\n // Create buttons\n if (buttonsInactive.length) {\n for (const item of buttonsInactive) {\n const btn = document.createElement('button');\n btn.classList.add(...classesBtnsInactive);\n btn.innerText = item.text;\n btn.setAttribute('value', item.value);\n btnsWrapper.appendChild(btn);\n }\n }\n // Append buttons to DOM\n if (elButtons.innerHTML === '') {\n elButtons.appendChild(btnsWrapper);\n }\n // Find buttons on DOM, set events and do things accordingly\n const buttons = document.querySelectorAll(`#${renderTo}__buttons .range-selector__btn`);\n let selectedButton = document.querySelector(`#${renderTo}__buttons .button--bordered`);\n // Create an array to store the parameters that will be passed to each chart,\n // once we have looped through all buttons and sliced their respective data\n const buttonsChartData = [];\n for (let i = 0; i < buttons.length; i++) {\n const valueToSend = buttons[i].getAttribute('value');\n // If the value is not undefined, filter the data\n if (!valueToSend) {\n buttonsChartData.push(data);\n } else {\n // Create an object to store the data to be pushed into 'buttonsChartData'\n const dataToReturn = {\n ...data,\n series: [],\n timeline: [],\n };\n // Slice all items within series\n // * Another way of doing it...\n // data.series.length.map(item => {\n // const slicedData = sliceData(item.data, valueToSend);\n // // Very important step below, always deconstruct 'item'!\n // const seriesToPush = { ...item, data: slicedData };\n // dataToReturn.series.push(seriesToPush);\n // return null;\n // });\n for (let y = 0, z = data.series.length; y < z; y++) {\n const slicedData = sliceData(data.series[y].data, valueToSend);\n // Very important step below, always deconstruct 'data.series[y]'!\n const seriesToPush = { ...data.series[y], data: slicedData };\n dataToReturn.series.push(seriesToPush);\n }\n // Slice timeline\n const slicedTimeline = sliceData(data.timeline, valueToSend);\n dataToReturn.timeline = slicedTimeline;\n buttonsChartData.push(dataToReturn);\n }\n }\n for (let q = 0; q < buttons.length; q++) {\n // Do things on click each click event\n buttons[q].addEventListener('click', () => {\n if (buttons[q] !== selectedButton) {\n selectedButton.classList.remove('button-bordered');\n selectedButton.classList.add('button--bordered--inactive');\n buttons[q].classList.remove('button--bordered--inactive');\n buttons[q].classList.add('button--bordered');\n selectedButton = buttons[q];\n // This is where the click event magic happens...\n // Each button gets its own set of paramemters (from 'buttonsChartData' array),\n // which are in turn passed to their own chart render\n renderTheChart({\n chart: {\n renderTo,\n reflow: reflowStatus,\n height: parseInt(height, 10) || 600,\n },\n ...data,\n ...buttonsChartData[q],\n });\n }\n });\n }\n } else {\n if (showFilter && buttonActiveText) {\n console.log(\n `[initChart] %c'buttonActiveText' has a value, but '${renderTo}__buttons' was not found on the page. You either forgot to enable the filter or you don't need to define 'buttonActiveText'`,\n 'background: #f9efb4; color: black',\n );\n }\n if (showFilter && !isEmptyArray(buttonsInactive)) {\n console.log(\n `[initChart] %c'buttonsInactive' has a value, but '${renderTo}__buttons' was not found on the page. You either forgot to enable the filter or you don't need to define 'buttonsInactive'`,\n 'background: #f9efb4; color: black',\n );\n }\n }\n // This function is rendered on 1st run\n renderTheChart({\n chart: {\n reflow: reflowStatus,\n renderTo,\n height: parseInt(height, 10) || 600,\n },\n ...data,\n });\n return null;\n }\n console.warn(\n `[initChart] The 'series' prop (${renderTo}) was not passed. You will need it to get the graph rendered.`,\n );\n return null;\n }\n console.warn(\n `[initChart] The element with id '${renderTo}' was not found on the page. You will need it to get the graph rendered.`,\n );\n return null;\n};\n// Selection toggler, only used if currencies are passed\nconst toggleCurrencySelection = ({\n chartNok,\n chartUsd,\n selectNok,\n selectUsd,\n buttonsNok,\n buttonsUsd,\n extrasNok,\n extrasUsd,\n sourceTextNok,\n sourceTextUsd,\n}) => {\n if (chartNok && chartUsd && selectNok && selectUsd) {\n selectNok.addEventListener('click', () => {\n chartNok.classList.remove('hide');\n chartUsd.classList.add('hide');\n if (buttonsNok && buttonsUsd) {\n buttonsNok.classList.remove('hide');\n buttonsUsd.classList.add('hide');\n }\n if (extrasNok && extrasUsd) {\n extrasNok.classList.remove('hide');\n extrasUsd.classList.add('hide');\n }\n if (sourceTextNok && sourceTextUsd) {\n sourceTextNok.classList.remove('hide');\n sourceTextUsd.classList.add('hide');\n }\n });\n selectUsd.addEventListener('click', () => {\n chartNok.classList.add('hide');\n chartUsd.classList.remove('hide');\n if (buttonsNok && buttonsUsd) {\n buttonsNok.classList.add('hide');\n buttonsUsd.classList.remove('hide');\n }\n if (extrasNok && extrasUsd) {\n extrasNok.classList.add('hide');\n extrasUsd.classList.remove('hide');\n }\n if (sourceTextNok && sourceTextUsd) {\n sourceTextNok.classList.add('hide');\n sourceTextUsd.classList.remove('hide');\n }\n });\n return null;\n }\n // eslint-disable-next-line\n console.warn('[toggleCurrencySelection]: one of the expected elements is not defined');\n return null;\n};\n// Render the chart\nconst renderChart = props => {\n if (props.id1 && props.id1.id) {\n const options1 = props.id1.options ? props.id1.options : {};\n const doIt = () => {\n initChart({\n renderTo: props.id1.id,\n reflowStatus: props.reflowStatus,\n chartType: props.type,\n data: {\n series: props.id1.series,\n ...options1,\n },\n height: props.height,\n showFilter: props.showFilter,\n buttonHeader: props.buttonHeader,\n buttonActiveText: props.buttonActiveText,\n buttonsInactive: props.buttonsInactive,\n extras: props.extras,\n optionsYAxis: props.id1.optionsYAxis,\n });\n if (props.id2 && props.id2.id) {\n const options2 = props.id2.options ? { ...options1, ...props.id2.options } : options1;\n initChart({\n renderTo: props.id2.id,\n reflowStatus: props.reflowStatus,\n chartType: props.type,\n data: {\n series: props.id2.series,\n ...options2,\n },\n height: props.height,\n showFilter: props.showFilter,\n buttonHeader: props.buttonHeader,\n buttonActiveText: props.buttonActiveText,\n buttonsInactive: props.buttonsInactive,\n extras: props.extras,\n optionsYAxis: props.id2.optionsYAxis,\n });\n toggleCurrencySelection({\n chartNok: document.getElementById(props.id1.id),\n chartUsd: document.getElementById(props.id2.id),\n selectNok: document.getElementById(`currency-${props.id1.id}`),\n selectUsd: document.getElementById(`currency-${props.id2.id}`),\n extrasNok: document.getElementById(`${props.id1.id}__extras`),\n extrasUsd: document.getElementById(`${props.id2.id}__extras`),\n buttonsNok: document.getElementById(`${props.id1.id}__buttons`),\n buttonsUsd: document.getElementById(`${props.id2.id}__buttons`),\n sourceTextNok: document.getElementById(`${props.id1.id}__source-text`),\n sourceTextUsd: document.getElementById(`${props.id2.id}__source-text`),\n });\n }\n };\n // Always lazy-load unless 'notLazy' is set to true\n if (props.notLazy) {\n doIt();\n } else {\n lazyScript(props.id1.id, null, 100, () => {\n doIt();\n });\n }\n } else {\n // eslint-disable-next-line\n console.warn('[renderChart]: Either \"props.id1\" or \"props.id1.id\" is/are not defined');\n }\n};\n// Render extras (optional)\n// * We're not using extras, but keep it here for the sake of\n// * having implemented the 'renderChart()' fully in React\nconst renderExtras = renderTo => (\n
\n
    \n
  • \n \n Vis som tabell\n \n
    \n
  • \n
  • \n \n
    \n
  • \n
\n
\n);\n// The 'Chart' component\nconst Chart = ({ chart, classes, level, locations, extraLabel }) => {\n // In the original implementation, we would invoke 'renderChart()' and pass the expected object as props.\n // Since we're in React, we do the same by using the 'useEffect' hook.\n useEffect(() => {\n if (isNotEmptyObject(chart)) {\n renderChart(chart);\n }\n }, [chart]);\n\n return (\n
\n \n {chart?.id2?.id && (\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n )}\n {chart?.id1?.id && (\n <>\n \n {chart.showFilter &&
}\n \n )}\n {chart?.id2?.id && (\n <>\n \n {chart.showFilter &&
}\n \n )}\n {chart?.sourceText && (\n <>\n {chart?.id1?.id && (\n
\n {`${chart?.sourceText}`.split('|').map((line, index) => {\n if (index >= 1) {\n return (\n

\n {line}\n

\n );\n }\n return

{line + extraLabel}

;\n })}\n
\n )}\n {chart?.id2?.id && (\n
\n {`${chart?.sourceText}`.split('|').map((line, index) => {\n if (index >= 1) {\n return (\n

\n {line}\n

\n );\n }\n return

{line + extraLabel}

;\n })}\n
\n )}\n \n )}\n {chart?.extras?.status && (\n <>\n
\n {renderExtras(chart.id1.id)}\n
\n {chart?.id2?.id && (\n
\n {renderExtras(chart.id2.id)}\n
\n )}\n \n )}\n
\n );\n};\n\nChart.propTypes = {\n classes: PropTypes.string,\n chart: PropTypes.object.isRequired,\n level: PropTypes.number.isRequired,\n locations: PropTypes.string,\n};\n\nexport default Chart;\n","/* ===================================\n* Only lazy-load 3rd party script tag once the placeholder that interacts with it\n* is visible on viewport.\n*\n* Copyright (c) 2017, Wallace Sidhrée\n* MIT License\n====================================== */\n\nimport { logMessage } from '.';\n\nexport default function lazyScript(elId, scriptUrl = null, threshold, cb) {\n // polyfill for custom events\n /* eslint-disable */\n (function () {\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined,\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent;\n })();\n /* eslint-enable */\n // get element\n const getElement = id => document.getElementById(id);\n // get dimensions\n const windowHeight = () => window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = () => window.innerWidth || document.documentElement.clientWidth;\n let notCalled = true;\n let scrollingHandler;\n let checkViewport;\n // fire when ready\n const fireWhenReady = (el, straightAway = false) => {\n const event = new CustomEvent('inViewPort');\n checkViewport = () => {\n const rect = el.getBoundingClientRect();\n if (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= windowHeight() + windowHeight() / 2 &&\n rect.right <= windowWidth()\n ) {\n el.dispatchEvent(event);\n notCalled = false;\n } else if (straightAway) {\n el.dispatchEvent(event);\n notCalled = false;\n }\n };\n scrollingHandler = () => notCalled && requestAnimationFrame(checkViewport);\n window.addEventListener('scroll', scrollingHandler);\n };\n // inject scripts through script tags\n const injectJS = (url, callback) => {\n // inject url\n const injs = document.createElement('script');\n injs.src = url;\n injs.type = 'text/javascript';\n injs.async = true;\n // output message on load callback\n const success = logMessage(`[injectJS] ${url} has loaded as a script!`);\n if (injs.addEventListener) {\n injs.addEventListener('load', success, false);\n }\n document.body.appendChild(injs);\n const doCallback = (() => callback)();\n doCallback();\n };\n const containerScript = getElement(elId);\n\n const doScript = (inViewPort = false) => {\n if (scriptUrl) {\n injectJS(scriptUrl, () => {\n logMessage(`[lazyScript] ${elId} was lazy-loaded!`, '');\n if (inViewPort) window.removeEventListener('scroll', scrollingHandler);\n // run callback function passed as 4th parameter of 'lazyScript'\n if (cb) {\n // A little delay so that the script we just appended gets\n // properly downloaded and exposed\n setTimeout(() => {\n cb();\n }, 300);\n }\n });\n } else {\n setTimeout(() => {\n /* eslint-disable */\n cb ? cb() : logMessage('Callback is not defined', '');\n /* eslint-enable */\n logMessage(`[lazyScript] ${elId} was lazy-loaded!`, '');\n }, 300);\n }\n };\n\n // set event and what it will execute\n if (containerScript) {\n const containerPosition = containerScript.getBoundingClientRect().top;\n if (containerPosition + window.scrollY <= window.scrollY) {\n doScript();\n // trigger event when it's ready and visible on viewport\n fireWhenReady(containerScript);\n } else {\n // Scroll 1px to init eventlistener for viewport.\n window.scroll(0, window.scrollY + 1);\n\n containerScript.addEventListener('inViewPort', () => {\n doScript(true);\n });\n // Fire lazyload event straight away if container is in first fold\n // or listen to viewport event.\n if (window.scrollY < 100 && containerPosition <= window.innerHeight) {\n fireWhenReady(containerScript, true);\n } else {\n fireWhenReady(containerScript);\n }\n }\n }\n}\n","export const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n\nexport const iOSorAndroid =\n /Android|iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n","import { isNotEmptyArray } from './isEmptyUtil';\n\nexport const getDerivativeValue = ({ derivatives, currency, mode, year }) => {\n if (derivatives && isNotEmptyArray(derivatives)) {\n // TODO: Would it be better to get the values already normalised from the backend?\n const filteredDerivatives = derivatives.filter(d => d.y === year);\n if (mode) {\n return filteredDerivatives[0]?.[mode]?.[currency];\n }\n const all =\n filteredDerivatives[0]?.eq?.[currency] +\n filteredDerivatives[0]?.fi?.[currency] +\n filteredDerivatives[0]?.re?.[currency];\n return all;\n }\n return [];\n};\n","/*\n\n A utility that returns data readable for the charts\n\n Data that enters the util\n {\n y: [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019],\n n: [178.23, 111.87, 191.59, 386.79, 748.55, 607.1, 249.37, 391.35, 222.59, 882.66],\n u: [30.66, 18.74, 34.43, 63.75, 99.84, 68.59, 28.97, 47.85, 25.71, 100.45],\n }\n\n Data returned\n [\n [year in utc data, summed data]\n\n [1577750400000, 2710.9399999999996],\n [1483142400000, 752.57],\n [1514678400000, 1146.2399999999998],\n [1546214400000, 1624.1100000000001],\n [1293753600000, 197.94],\n [1325289600000, 122.13000000000001],\n [1356912000000, 204.77],\n [1388448000000, 424.15],\n [1419984000000, 970.64],\n [1451520000000, 931.9000000000001],\n [1262217600000, 17.720000000000002],\n [1230681600000, 11.78],\n ]\n*/\n\nimport { getDerivativeValue } from './getDerivativeValueUtil';\nimport { isNotEmptyArray } from './isEmptyUtil';\n\nexport const getChartsData = ({ data, currency, derivativesAreOn, historyDerivatives, mode }) => {\n const debug = false; // Use this to debug\n // array that contains all unique found years\n const allYears = [];\n // all NOK summed up for a specific year\n const sumDataPrYearNok = [];\n // all USD summed up for a specific year\n const sumDataPrYearUsd = [];\n // all derivatives pr year\n const sumDerivativeValueNok = [];\n const sumDerivativeValueUsd = [];\n\n data.map((dataToChart, i) => {\n const { y: years = [], n: nok, u: usd } = dataToChart || [];\n // Loop over the year list, if year dont exists in allYears array add it\n years.map((year, index) => {\n // Check if year exists in allYears, if not add it\n if (!allYears.includes(year)) {\n allYears.push(year);\n }\n // checks the index of the year in the current loop\n const yearIndex = allYears.indexOf(year);\n // Retrieve derivative values\n let derivativeValueNok = 0;\n let derivativeValueUsd = 0;\n // This is for invesment types ('eq', 'fi', 're', 'is')\n if (derivativesAreOn && mode) {\n derivativeValueNok = derivativesAreOn\n ? getDerivativeValue({\n year,\n derivatives: historyDerivatives,\n mode,\n currency: 'nok',\n })\n : 0;\n derivativeValueUsd = derivativesAreOn\n ? getDerivativeValue({\n year,\n derivatives: historyDerivatives,\n mode,\n currency: 'usd',\n })\n : 0;\n // This is for the total, shown as line\n } else if (derivativesAreOn && !mode) {\n derivativeValueNok = derivativesAreOn\n ? getDerivativeValue({\n year,\n derivatives: historyDerivatives,\n currency: 'nok',\n })\n : 0;\n derivativeValueUsd = derivativesAreOn\n ? getDerivativeValue({\n year,\n derivatives: historyDerivatives,\n currency: 'usd',\n })\n : 0;\n }\n\n // Use the above index to add summed values into the found array.\n // The idea is that the year in index 0 should have summed data for that year placed inside the right sumDataPrYearNok or sumDataPrYearUsd index\n // sumXXX creates an index and sums up the value and current value in the nok array\n const sumNok = sumDataPrYearNok[yearIndex]\n ? sumDataPrYearNok[yearIndex] + nok[index]\n : nok[index];\n\n const sumUsd = sumDataPrYearUsd[yearIndex]\n ? sumDataPrYearUsd[yearIndex] + usd[index]\n : usd[index];\n\n // add derivatives for specific year. This array is later used when looping over all total values and adding the derivative\n sumDerivativeValueNok[yearIndex] = derivativeValueNok;\n sumDerivativeValueUsd[yearIndex] = derivativeValueUsd;\n\n // Add the new sumXXX into sumDataPrYearNok or sumDataPrYearUsd by replacing old value with new\n sumDataPrYearNok.splice(yearIndex, 1, sumNok);\n sumDataPrYearUsd.splice(yearIndex, 1, sumUsd);\n return null;\n });\n return null;\n });\n\n // create readble chart data in the format -> [date, value]\n const dataForChart = allYears.map((y, i) => {\n const sumDerivativeValueUsdDividedByMillion = sumDerivativeValueUsd[i] / 1000000000;\n const sumDerivativeValueNokDividedByMillion = sumDerivativeValueNok[i] / 1000000000;\n const sumWithDerivativesUsdTableReady =\n derivativesAreOn && sumDerivativeValueUsd[i]\n ? // We must divide by 1 billion to get the correct value, because\n // 'sumDataPrYearUsd[i]' is in billions\n sumDataPrYearUsd[i] + sumDerivativeValueUsdDividedByMillion\n : sumDataPrYearUsd[i];\n const sumWithDerivativesNokTableReady =\n derivativesAreOn && sumDerivativeValueNok[i]\n ? // We must divide by 1 billion to get the correct value, because\n // 'sumDataPrYearNok[i]' is in billions\n sumDataPrYearNok[i] + sumDerivativeValueNokDividedByMillion\n : sumDataPrYearNok[i];\n\n // Round the values up or down IF the values are from one of the modes\n // WHY you ask: If the last year is selected (1998) there is a bug making the chart crash IF the mode value AND the sum value is the same.\n // so forexample: if you select year 1998 and then filter on sector \"Financials\" then charts will crash if we dont round the mode values but NOT the sum value\n const roundedSumWithDerivativesUsdTableReady = mode\n ? Math.round(sumWithDerivativesUsdTableReady)\n : sumWithDerivativesUsdTableReady;\n const roundedSumWithDerivativesNokTableReady = mode\n ? Math.round(sumWithDerivativesNokTableReady)\n : sumWithDerivativesNokTableReady;\n\n if (currency === 'usd') {\n return [Date.UTC(y), roundedSumWithDerivativesUsdTableReady];\n }\n return [Date.UTC(y), roundedSumWithDerivativesNokTableReady];\n });\n\n debug && console.log('dataForChart', JSON.stringify(dataForChart));\n return dataForChart;\n};\n\n/*\n\nUtil that returns readable data for the charts\n\nFormat:\n [{\n name: 'Equity investments',\n type: '',\n color: '#992c64',\n index: 3,\n data: [\n [date/year, sum],\n [1577750400000, 2710.9399999999996],\n ],\n }, ...]\n*/\n\nexport const serializeChartData = ({\n allHdDataForChartEquities,\n allHdDataForChartFixedIncome,\n allHdDataForChartRealEstate,\n allHdDataForChartInfrastructure,\n allHdDataForChartTotal,\n allHdDataForCompany,\n currency,\n derivativesAreOn,\n historyDerivatives,\n level,\n mode,\n}) => {\n // Front page chart data, not filtered on investment type\n if (level === 1) {\n // ! These 'data' arrays need to be at the very least empty, otherwise this function will return 'NaN'\n if (\n allHdDataForChartEquities &&\n allHdDataForChartFixedIncome &&\n allHdDataForChartRealEstate &&\n allHdDataForChartInfrastructure &&\n allHdDataForChartTotal\n ) {\n return [\n {\n id: 'equities',\n typeIndex: 1,\n data: [\n ...getChartsData({\n data: allHdDataForChartEquities,\n currency,\n derivativesAreOn,\n historyDerivatives,\n mode: 'eq',\n }),\n ],\n },\n {\n id: 'fixed-income',\n typeIndex: 2,\n data: [\n ...getChartsData({\n data: allHdDataForChartFixedIncome,\n currency,\n derivativesAreOn,\n historyDerivatives,\n mode: 'fi',\n }),\n ],\n },\n {\n id: 'real-estate',\n typeIndex: 3,\n data: [\n ...getChartsData({\n data: allHdDataForChartRealEstate,\n currency,\n derivativesAreOn,\n historyDerivatives,\n mode: 're',\n }),\n ],\n },\n {\n id: 'infrastructure',\n typeIndex: 4,\n data: [\n ...getChartsData({\n data: allHdDataForChartInfrastructure,\n currency,\n derivativesAreOn,\n historyDerivatives,\n mode: 'is',\n }),\n ],\n },\n {\n name: 'total',\n typeIndex: 5,\n data: [\n ...getChartsData({\n data: allHdDataForChartTotal,\n currency,\n derivativesAreOn,\n historyDerivatives,\n }),\n ],\n },\n ];\n }\n }\n // Chart data based on investment type, ex, equities real-estate and fixed-income, chart data (URL/investments/[type])\n if (level === 2) {\n let modeData = allHdDataForChartTotal;\n let modeType = '';\n if (mode === 'equities') {\n modeData = allHdDataForChartEquities;\n modeType = 'eq';\n }\n if (mode === 'fixed-income') {\n modeData = allHdDataForChartFixedIncome;\n modeType = 'fi';\n }\n if (mode === 'real-estate') {\n modeData = allHdDataForChartRealEstate;\n modeType = 're';\n }\n if (mode === 'infrastructure') {\n modeData = allHdDataForChartInfrastructure;\n modeType = 'is';\n }\n return [\n {\n id: 'nok',\n typeIndex: 1,\n data: [\n ...getChartsData({\n data: modeData,\n currency: 'nok',\n derivativesAreOn,\n historyDerivatives,\n mode: modeType,\n }),\n ],\n },\n {\n id: 'usd',\n typeIndex: 2,\n data: [\n ...getChartsData({\n data: modeData,\n currency: 'usd',\n derivativesAreOn,\n historyDerivatives,\n mode: modeType,\n }),\n ],\n },\n ];\n }\n // Chart data based on investment item.\n // Ie. companies within equities & properties within real-estate (URL/investments/[type]/[id]/[item-name])\n if (level === 3) {\n return [\n {\n id: 'nok',\n typeIndex: 1,\n data: [\n ...getChartsData({\n data: allHdDataForCompany,\n currency: 'nok',\n level,\n }),\n ],\n },\n {\n id: 'usd',\n typeIndex: 2,\n data: [\n ...getChartsData({\n data: allHdDataForCompany,\n currency: 'usd',\n level,\n }),\n ],\n },\n ];\n }\n return [];\n};\n\n// **** UTILITIES USE BY THE HISTORY COMPONENT ****\nconst BILLION = 1000000000;\nconst THOUSAND = 999999;\nconst UNIT = 999;\n\n// Returns the label text as a string\nexport const setValueLabel = value => {\n if (value >= BILLION) {\n return 'billions';\n }\n if (value > THOUSAND && value < BILLION) {\n return 'millions';\n }\n if (value > UNIT && value <= THOUSAND) {\n return 'thousand';\n }\n return ''; // Fallback for UNIT\n};\n\n// Returns the value to which the yAxis 'tickPositioner' is divided by\nexport const setYAxisDivider = value => {\n if (value >= BILLION) {\n return 1000000000; // billion\n }\n if (value > THOUSAND && value < BILLION) {\n return 1000000; // million\n }\n if (value > UNIT && value <= THOUSAND) {\n return 1000; // thousand\n }\n return 1; // Fallback for UNIT\n};\n\n// Find highest or lowest number in an array\nconst arrayMaxMin = (arr, type) => {\n let n;\n if (type === 'max') {\n n = Math.max(...arr);\n } else if (type === 'min') {\n n = Math.min(...arr);\n }\n return n;\n};\n\n// We go into 'chartData' and retrieve the highest value within the NOK array\nexport const getHighestValueFromNok = chartData => {\n const arrayNok = [];\n const theData = chartData?.[0]?.data;\n if (theData) {\n // Index [1] contains the values in NOK, which are pushed into 'arrayNok' array\n theData.map(n => arrayNok.push(n[1]));\n return arrayMaxMin(arrayNok, 'max');\n }\n return 0; // Fallback\n};\n\n// Replace string set on label sentence with the conditional translation\nexport const chartLabelWithTranslation = ({ sentence, translation }) => {\n // 'sentence' comes from backend\n // 'translation' is calculated conditionally\n // 'stringToBeReplaced' comes within the 'sentence' from backend\n const stringToBeReplaced = '{0}';\n return translation ? sentence.replace(stringToBeReplaced, translation) : '';\n};\n\n/*\n This helper gets chartsdata from context and puts the right charts data into the right charts data from api. We use the index from api as an identifier, for now, but in the future its going to be a unique value\n - level 1 has index from 1 - 5\n - level 2 & 3 has index 2 & 3\n - The getChartsData utility returns data with typeIndex to help the filtering from api data\n*/\nexport const formatChartDataUtil = ({ settingsForSingleChart, data, level }) => {\n // This value is used by the label when hovering a column on the chart\n // tempHighestValue: is set when finding the highets value for the chart that defines the divider\n let tempHighestValue = 0;\n // Loop over the data values and set the divider based on the highest value in the array\n const dataDividedByBillion = data.map((a, i) => {\n // Find highest value\n const highestValue = Math.max(...a?.data.map(b => b[1]));\n // Check if the found highest value is higher than the one set in the tempHighestValue\n tempHighestValue = highestValue > tempHighestValue ? highestValue : tempHighestValue;\n // Loop the data array, find the value and divide the value based on the highest value in the array\n const dataTemp = a?.data.map(v => {\n // The array value looks like this [time, value]\n const time = v[0]; // time\n const value = v[1]; // value\n return [time, value];\n });\n // Return a fresh batch of data, pluss the other values\n return { ...a, data: dataTemp };\n });\n\n const output = settingsForSingleChart.map((c, i) => {\n const reversedIndex = settingsForSingleChart.length - i;\n const dataFiltered = dataDividedByBillion.filter(d => d.typeIndex === c.index);\n const dataSorted = isNotEmptyArray(dataFiltered)\n ? dataFiltered[0].data.sort((a, b) => a[0] - b[0])\n : [];\n return {\n ...c,\n index: level === 1 ? reversedIndex : c.index,\n legendIndex: c.legendindex,\n data: dataSorted,\n };\n });\n // Separating output for internal testing purposes\n return { series: output };\n};\n","/* eslint-disable no-nested-ternary */\n/* eslint-disable func-names */\n/* eslint-disable no-constant-condition */\n/* eslint-disable no-undef */\n/* eslint-disable object-shorthand */\n/* eslint-disable prefer-template */\n\nimport Highcharts from 'highcharts';\nimport { v4 as uuidv4 } from 'uuid';\nimport React, { useContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport Chart from '../../primitives/Chart/Chart';\nimport { iOSorAndroid } from '../../../helpers/userAgent';\nimport {\n ChartDataContext,\n TopFilterContext,\n YearDataContext,\n LanguageContext,\n CurrencyContext,\n TotalsContext,\n} from '../../../contexts';\nimport { isNotEmptyArray } from '../../../utils/isEmptyUtil';\nimport { lang } from '../../../utils/langUtil';\nimport { getEqAndFiCompanies } from '../../../utils/getDataUtil';\nimport {\n formatChartDataUtil,\n chartLabelWithTranslation,\n setValueLabel,\n setYAxisDivider,\n getHighestValueFromNok,\n} from '../../../utils/getChartsData';\n\nconst debug = false;\n\nconst optionsxAxisPlotOptionsLevel1 = {\n plotOptions: {\n series: { animation: false },\n column: {\n stacking: 'normal',\n maxPointWidth: 63,\n },\n },\n};\nconst optionsxAxisPlotOptionsLevel2 = {\n plotOptions: {\n series: { animation: false },\n column: {\n pointPadding: 0.1,\n borderWidth: 0,\n },\n },\n};\n\nconst getChartSettings = ({\n globalFilterChanged,\n company,\n langObj,\n language,\n level,\n currency,\n chartData = [],\n ai, // sourceText\n cd = [], // chartData\n ct, // chartType\n cso, // columnStakingOptions\n dp, // decimalPoint\n ts, // thousandSeperator\n tld, // tooltipDateFormat\n tlnd, // tooltipNumberOfDeciamls\n tls, // tooltipSuffix\n tlsu, // tooltipSuffixUsd\n xds, // dateTimeFormatForxAxis\n yti, // yAxisTickInterval\n ynd, // yAxisNumberOfDecimals\n yyiu, // yAxisTickIntervalUsd\n xti, // xAxisTick\n}) => {\n const seriesData = formatChartDataUtil({\n settingsForSingleChart: cd,\n data: chartData,\n level,\n });\n // const currencyFormat = currency === 'nok' ? tls : tlsu;\n const currencyFormat = currency === 'nok' ? 'kroner' : 'dollar';\n // commaSeparator: Show comma on numbers or not based on selected language (NO: 9 000, US: 9,000)\n const commaSeparator = language === 'no' ? ' ' : ',';\n const optionsxAxisPlotOptions =\n level === 1 ? optionsxAxisPlotOptionsLevel1 : optionsxAxisPlotOptionsLevel2;\n const optionsxAxis1 = {\n legend: {\n enabled: true,\n },\n lang: {\n decimalPoint: dp,\n thousandsSep: ts,\n },\n xAxis: {\n type: 'datetime',\n tickInterval: xti,\n minTickInterval: xti,\n minRange: xti,\n labels: {\n formatter: function () {\n if (xds === '%b.%y') {\n const value = Highcharts.dateFormat(xds, this.value);\n return value.toLowerCase();\n }\n return Highcharts.dateFormat(xds, this.value);\n },\n },\n },\n tooltip: {\n formatter: function () {\n const labelText = this.series.name === 'NOK' ? 'kroner' : 'dollar';\n return (\n '' +\n this.series.name +\n '
' +\n Highcharts.dateFormat(xds, this.x) +\n ': ' +\n Highcharts.numberFormat(this.y, 0, ',', commaSeparator) +\n ` ${level !== 1 ? labelText : currencyFormat}`\n );\n },\n },\n };\n\n const yAxisFormatter = self => {\n const dividedStepValue = self.value / setYAxisDivider(self.axis.max);\n const yAxisStepValue = Highcharts.numberFormat(\n dividedStepValue,\n dividedStepValue % 1 ? 2 : 0,\n ',',\n commaSeparator,\n );\n return yAxisStepValue;\n };\n\n const optionsyAxis1 = [\n {\n tickPositioner: function () {\n const positions = [];\n let tick = Math.floor(this.dataMin);\n // ! Bug! When 'increment' amounts to 0, Highcharts will cause the whole page to crash!\n const increment =\n this.dataMax !== this.dataMin\n ? Math.ceil((this.dataMax - this.dataMin) / 6) || 1\n : this.dataMin !== 0\n ? this.dataMin\n : 1;\n\n if (this.dataMax !== null && this.dataMin !== null) {\n debug && console.log('History.js -> tick', tick);\n debug && console.log('History.js -> increment', increment);\n debug && console.log('History.js -> this.dataMin', this.dataMin);\n debug && console.log('History.js -> this.dataMax', this.dataMax);\n debug && console.log('History.js -> this', this);\n debug &&\n console.log('History.js -> this?.series?.[0]?.data?.[0]', this?.series?.[0]?.data?.[0]);\n debug &&\n console.log('History.js -> this?.series?.[1]?.data?.[0]', this?.series?.[1]?.data?.[0]);\n debug &&\n console.log('History.js -> this?.series?.[2]?.data?.[0]', this?.series?.[2]?.data?.[0]);\n debug && console.log('-------------------');\n\n for (tick; tick - increment <= this.dataMax; tick += increment) {\n positions.push(tick);\n }\n }\n },\n lineWidth: 0,\n labels: {\n formatter: function () {\n // Dont show 0 on the Y axis\n if (this.value) {\n return yAxisFormatter(this);\n }\n return '';\n },\n },\n },\n {\n lineWidth: 0,\n labels: {\n formatter: function () {\n // Dont show 0 on the Y axis\n if (this.value) {\n return yAxisFormatter(this);\n }\n return '';\n },\n },\n opposite: true,\n },\n ];\n\n return {\n showFilter: false,\n buttonActiveText: 'Since inception',\n buttonHeader: 'Time period',\n buttonsInactive: [\n { text: 'Last 5 years', value: '6' },\n { text: 'Last 10 years', value: '11' },\n { text: 'Last 15 years', value: '16' },\n ],\n id1: {\n id: `chart1-${uuidv4()}`,\n series: [...seriesData.series],\n options: {\n ...optionsxAxis1,\n ...optionsxAxisPlotOptions,\n },\n optionsYAxis: optionsyAxis1,\n value: 'NOK',\n },\n extras: {\n status: false,\n showAsTableTextOff: 'Display as table',\n showAsTableTextOn: 'Close table',\n downloadXLSText: 'Download to Excel',\n },\n type: ct, // ex. column\n height: 600,\n sourceText: ai,\n notLazy: true,\n reflowStatus: !iOSorAndroid,\n };\n};\n\nconst History = ({ level, id, compName, investmentType }) => {\n const [defaultSettingsData, setDefaultSettingData] = useState([]);\n const [chartSettings, setChartSettings] = useState({});\n const [globalFilterChanged, setGlobalFilterChanged] = useState(false);\n const [istLabel, setIstLabel] = useState('');\n\n const { chartData } = useContext(ChartDataContext);\n const { topFilterLocationsLabel } = useContext(TopFilterContext);\n const { yearData, isTemporaryData, temporaryDataDateNo, temporaryDataDateEn } =\n useContext(YearDataContext);\n const { language } = useContext(LanguageContext);\n const { currency } = useContext(CurrencyContext);\n const { totalInvestmentsPercentage } = useContext(TotalsContext);\n const companies = getEqAndFiCompanies(yearData);\n // We need the 'raw' language to build the table object, so we get the data directly\n const langObj = yearData?.s?.language;\n // On level 3 we need to know what company we're dealing with so that we can calculate chart value\n const company = companies.find(\n c => (c.id === parseInt(id, 10) || c.name === compName) && c.type === investmentType,\n );\n\n useEffect(() => {\n if (language === 'no' || currency === 'nok') {\n // set the no charts settings\n setDefaultSettingData(yearData?.s?.chart?.no);\n\n if (isTemporaryData) {\n setIstLabel(\n ` ${langObj.istChartExtraLabel.no}`\n .replace('#0', yearData?.s?.y)\n .replace('#1', temporaryDataDateNo),\n );\n }\n }\n if (language === 'en' || currency === 'usd') {\n // set the en charts settings\n setDefaultSettingData(yearData?.s?.chart?.en);\n if (isTemporaryData) {\n setIstLabel(\n ` ${langObj.istChartExtraLabel.en}`\n .replace('#0', yearData?.s?.y)\n .replace('#1', temporaryDataDateEn),\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartData, language, currency]);\n\n useEffect(() => {\n // This useEffect is used by the charts logic above in the optionsyAxis1 object.\n // It is triggered by the totalInvestmentsPercentage that changes ONLY if there are changes to the globalFilter\n // Is short; if there is no selection in global filter, the interval on the Y axix 'tickInterval' should be set from api (the 'yyiu' value).\n // This value is set in the 'yAxisIntervalValue'\n // on the other hand, if there is a selection in the global filter, let highcharts to tha math conserning the 'tickInterval'\n if (totalInvestmentsPercentage && totalInvestmentsPercentage !== 100) {\n setGlobalFilterChanged(true);\n } else {\n setGlobalFilterChanged(false);\n }\n }, [totalInvestmentsPercentage]);\n\n useEffect(() => {\n if (defaultSettingsData && isNotEmptyArray(defaultSettingsData)) {\n if (level === 1) {\n defaultSettingsData\n .filter(s => s.cd.length === 5) // The length on charts data is 5 on level 1\n .map(settings => {\n if (isNotEmptyArray(chartData)) {\n setChartSettings(\n getChartSettings({\n globalFilterChanged,\n company,\n langObj,\n language,\n level,\n currency,\n chartData,\n ...settings,\n ai: chartLabelWithTranslation({\n sentence: settings.ai,\n translation: lang(\n langObj,\n setValueLabel(getHighestValueFromNok(chartData)),\n language,\n ),\n }),\n }),\n );\n }\n return null;\n });\n }\n if (level !== 1) {\n defaultSettingsData\n .filter(s => s.cd.length === 2) // The length on charts data is 2 on level 2 & 3\n .map(settings => {\n if (isNotEmptyArray(chartData)) {\n setChartSettings(\n getChartSettings({\n globalFilterChanged,\n company,\n langObj,\n language,\n level,\n currency,\n chartData,\n ...settings,\n ai: chartLabelWithTranslation({\n sentence: settings.ai,\n translation: lang(\n langObj,\n setValueLabel(getHighestValueFromNok(chartData)),\n language,\n ),\n }),\n }),\n );\n }\n return null;\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultSettingsData, chartData, globalFilterChanged, language, currency]);\n\n return (\n <>\n {chartData && isNotEmptyArray(chartData) && chartData[0]?.data.length !== 0 ? (\n \n \n
\n ) : null}\n \n );\n};\n\nHistory.propTypes = {\n level: PropTypes.oneOf([1, 2, 3]).isRequired,\n};\n\nexport default History;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Icon from './Icon';\n\nimport { TopFilterContext } from '../../contexts';\n\nconst ButtonFilter = ({\n id,\n ariaControls,\n ariaExpanded,\n filterType,\n handleClick,\n className,\n currentSelection,\n label,\n}) => {\n const { showYears, showLocations, showSectors } = useContext(TopFilterContext);\n\n return (\n \n
\n \n {label}\n \n \n {currentSelection}\n \n
\n\n {/* Icon container so rotate transition works */}\n \n \n \n \n );\n};\n\nButtonFilter.defaultProps = {\n className: '',\n};\n\nButtonFilter.propTypes = {\n id: PropTypes.string.isRequired,\n ariaControls: PropTypes.string.isRequired,\n ariaExpanded: PropTypes.bool.isRequired,\n handleClick: PropTypes.func,\n filterType: PropTypes.string,\n className: PropTypes.string,\n currentSelection: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n};\n\nexport default ButtonFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Icon from './Icon';\n\nconst Button = ({ className, handleClick, icon, iconColor, label, ariaLabel, overrideColors }) => (\n \n {label}\n {/* Conditionally add left padding to icon if button has text (label) */}\n {icon && (\n \n )}\n \n);\n\nButton.defaultProps = {\n className: '',\n ariaLabel: null,\n};\n\nButton.propTypes = {\n className: PropTypes.string,\n handleClick: PropTypes.func,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n ariaLabel: PropTypes.string,\n icon: PropTypes.string,\n};\n\nexport default Button;\n","import React, { useCallback, useContext, useEffect, useState } from 'react';\nimport classnames from 'classnames';\nimport { v4 as uuidv4 } from 'uuid';\nimport { isNotEmptyArray } from '../../../utils/isEmptyUtil';\nimport { TopFilterContext, YearDataContext, LanguageContext } from '../../../contexts';\nimport ButtonFilter from '../../primitives/ButtonFilter';\nimport Button from '../../primitives/Button';\nimport Icon from '../../primitives/Icon';\nimport Lang, { LangDynamic } from '../Language/Lang';\nimport { apiMode, theApiMode } from '../../../config';\nimport { lang } from '../../../utils/langUtil';\nimport { getDateLabel } from '../../../utils/formatDateUtil';\n\nconst YEAR_FIRST_RE_DATA = '2011';\nconst YEAR_FIRST_IS_DATA = '2021';\n\n// Year list component\nconst YearList = ({ id, ariaLabelledBy, data, handleSelection, initialYear, visible }) => {\n const getYearsList = years => {\n const output = [];\n if (years && isNotEmptyArray(years)) {\n years.map(y => {\n const theYear = y.y || initialYear;\n output.push(\n \n handleSave(theYear)}\n >\n {theYear}\n \n ,\n );\n return null;\n });\n }\n return output;\n };\n\n const renderYearsList = () => {\n return (\n <>\n {/* Year selection label for mobile */}\n \n \n \n
    {getYearsList(data)}
\n \n );\n };\n\n // Show years conditionally\n const visibility = () => (!visible ? 'hidden' : '');\n // Save the choice\n const handleSave = year => {\n handleSelection(year);\n return null;\n };\n\n return (\n // Wrapper for the dropdown list of years\n \n {renderYearsList()}\n
\n );\n};\n\nconst InvestmentTypeList = ({\n id,\n ariaLabelledBy,\n data,\n handleSelection,\n visible,\n language,\n selectedYear,\n}) => {\n const getInvestmentTypeList = reportsList => {\n const output = [];\n if (reportsList && isNotEmptyArray(reportsList)) {\n reportsList.forEach(reportsItem => {\n if (selectedYear < YEAR_FIRST_RE_DATA && reportsItem.en === 'Real estate') {\n return null;\n }\n if (selectedYear < YEAR_FIRST_IS_DATA && reportsItem.en === 'Infrastructure') {\n return null;\n }\n\n output.push(\n
  • \n handleSave({ reportsItem, type: reportsItem.en })}\n >\n {reportsItem[language]}\n \n
  • ,\n );\n return null;\n });\n }\n return (\n
    \n {output}\n
    \n );\n };\n\n const renderYearsList = () => {\n return (\n
    \n {/* Investment type label for mobile */}\n \n \n \n
      {getInvestmentTypeList(data)}
    \n
    \n );\n };\n\n // Show years conditionally\n const visibility = () => (!visible ? 'hidden' : '');\n // Save the choice\n const handleSave = investment => {\n if (investment !== data) {\n handleSelection({ investment });\n }\n return null;\n };\n\n return (\n // Wrapper for the dropdown list of years\n \n {renderYearsList()}\n \n );\n};\n\nfunction Reports() {\n // CONTEXT\n const { topFilterYear, topFilterYears } = useContext(TopFilterContext);\n const { yearData, isTemporaryData, temporaryDataDateNo, temporaryDataDateEn } =\n useContext(YearDataContext);\n const { language } = useContext(LanguageContext);\n const langObj = yearData?.s?.language;\n // Resolve initially selected year\n const initiallySelectedYear = () => topFilterYear || topFilterYears[0]?.y;\n // STATE\n const [stateReports, setStateReports] = useState([]);\n const [selectedYear, setSelectedYear] = useState(initiallySelectedYear());\n const [selectedReport, setSelectedReport] = useState(null);\n const [selectedReportTitle, setSelectedReportTitle] = useState(null);\n const [showYearsDropdown, setShowYearsDropdown] = useState(false);\n const [showInvestmentTypeDrop, setShowInvestmentTypeDrop] = useState(false);\n const [dateLabel, setDateLabel] = useState(\n getDateLabel(language, isTemporaryData, temporaryDataDateNo, temporaryDataDateEn),\n );\n\n // VARIABLES\n const { ru = '', reports = {} } = yearData?.s || {};\n const baisUrl = theApiMode(apiMode);\n\n useEffect(() => {\n const tempStateReports = [];\n for (const data in reports) {\n if (reports[data]) {\n const report = reports[data];\n tempStateReports.push(report);\n }\n }\n setStateReports(tempStateReports);\n }, [reports]);\n\n useEffect(() => {\n if (isNotEmptyArray(stateReports)) {\n setSelectedReportTitle(stateReports[0][language]);\n setSelectedReport(stateReports[0].reports);\n }\n }, [language, stateReports]);\n\n const renderSelectedReport = () => {\n return selectedReport.map(report => {\n const { pdf, xls } = report;\n return (\n // Individual report download row in loop\n \n {/* \"Total holdings sorted by ... \" */}\n \n {report[language]} ({selectedYear} / {selectedReportTitle}):\n \n\n {/* TODO: To save time, no component was made here, but maybe should be eventually */}\n {/* Wrap the buttons so they stack vertically on mobile */}\n
    \n {/* XLS button */}\n \n \n \n \n \n \n\n {/* PDF button */}\n \n \n \n \n \n \n
    \n \n );\n });\n };\n\n const setDateLabelCallback = useCallback(\n userSelectedYear => {\n const yearSettings = topFilterYears[0];\n\n if (userSelectedYear === `${yearSettings.y}`) {\n setDateLabel(\n getDateLabel(\n language,\n yearSettings?.ist || false,\n yearSettings?.istdate?.no || '',\n yearSettings?.istdate?.en || '',\n ),\n );\n } else {\n setDateLabel(getDateLabel(language, false, temporaryDataDateNo, temporaryDataDateEn));\n }\n },\n [language, temporaryDataDateEn, temporaryDataDateNo, topFilterYears],\n );\n\n return (\n
    \n

    \n \n

    \n\n {/* Year / investment type filter button wrapper */}\n
    \n {/* YEAR DROPDOWN */}\n
    \n {\n setShowYearsDropdown(!showYearsDropdown);\n }}\n label={}\n type=\"select\"\n />\n {\n setSelectedYear(`${year}`);\n setShowYearsDropdown(false);\n setDateLabelCallback(`${year}`);\n setShowInvestmentTypeDrop(false);\n }}\n />\n {/* Close year filters X button */}\n {\n setShowYearsDropdown(!showYearsDropdown);\n }}\n icon=\"X\"\n />\n
    \n\n {/* INVESTMENT TYPE DROPDOWN */}\n
    \n {\n setShowInvestmentTypeDrop(!showInvestmentTypeDrop);\n }}\n label={}\n type=\"select\"\n />\n {\n const { reportsItem } = investment;\n setSelectedReportTitle(reportsItem[language]);\n setSelectedReport(reportsItem?.reports);\n setShowInvestmentTypeDrop(false);\n }}\n />\n {/* Close investment type filters X button */}\n {\n setShowInvestmentTypeDrop(!showInvestmentTypeDrop);\n }}\n icon=\"X\"\n />\n
    \n
    \n\n {/*

    Selected year: {selectedYear}

    \n

    Selected investment: {selectedReportTitle}

    */}\n\n {/* Wrapper for the list of download options */}\n
      \n {selectedReport ? (\n renderSelectedReport()\n ) : (\n \n )}\n
    \n
    \n );\n}\n\nexport default Reports;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst renderSpinner = () => (\n \n \n \n
    \n \n);\n\nconst Loading = ({ loading }) => (\n <>\n {loading && (\n \n \n {renderSpinner()}\n \n \n )}\n \n);\n\nLoading.propTypes = {\n loading: PropTypes.bool,\n};\n\nexport default Loading;\n","/*\n { console.log('Klikk') }}\n />\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport Icon from './Icon';\n\nconst ButtonLink = ({ className, handleClick, icon, label, noBorder }) => (\n \n {icon && }\n {label}\n \n);\n\nButtonLink.defaultProps = {\n className: '',\n};\n\nButtonLink.propTypes = {\n className: PropTypes.string,\n handleClick: PropTypes.func,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n icon: PropTypes.string,\n};\n\nexport default ButtonLink;\n","import React, { useContext } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { InternationalOrgContext, TopFilterContext, UiContext } from '../../../contexts';\nimport { noCountrySelected } from '../../../utils/getDataUtil';\nimport ButtonLink from '../../primitives/ButtonLink';\nimport Lang from '../Language/Lang';\nimport config from './../../../config';\n\nconst { defaultFilterSector, defaultFilterYear } = config;\n\nfunction GlobalFiltersReset() {\n const history = useHistory();\n const { paramInvestmentType } = useParams();\n // Variable used for when clicking the reset button an navigating to default year\n const resetUrl = paramInvestmentType ? `/investments/${paramInvestmentType}` : '';\n\n const { setInternationalOrg } = useContext(InternationalOrgContext);\n const {\n topFilterYear,\n topFilterLocations,\n topFilterSector,\n setTopFilterYear,\n setTopFilterSector,\n setTopFilterLocations,\n } = useContext(TopFilterContext);\n const { setUiIsAnimating } = useContext(UiContext);\n\n return (\n <>\n {(topFilterYear !== defaultFilterYear ||\n topFilterSector !== defaultFilterSector ||\n !noCountrySelected(topFilterLocations)) && (\n }\n className=\"\"\n handleClick={() => {\n // We need to reset the whole data, so all the contexts get updated\n // (map, tables, totals, etc)\n setTopFilterYear(defaultFilterYear);\n setTopFilterSector(defaultFilterSector);\n setTopFilterLocations([]);\n setInternationalOrg(0);\n // Initiate loader\n setUiIsAnimating(true);\n // Navigate to default year\n history.push(`/${defaultFilterYear}${resetUrl}`);\n }}\n icon=\"Reset\"\n >\n \n \n )}\n \n );\n}\n\nexport default GlobalFiltersReset;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Divider = ({ type }) => (\n <>\n {type === 'vertical' ? (\n
    \n ) : (\n \n |\n \n )}\n \n);\n\nDivider.propTypes = {\n type: PropTypes.oneOf(['vertical', 'horizontal']),\n};\n\nexport default Divider;\n","import React, { useContext, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport { LanguageContext, SearchContext, YearDataContext } from '../../../contexts';\nimport Icon from '../Icon';\nimport { lang } from '../../../utils/langUtil';\n\nconst debug = false; // Use this to debug\n\nconst SearchInput = ({\n className = '', // accepts CSS classNames as string\n backgroundColor = '',\n borderColor = '',\n borderFocusColor = '',\n focus = false,\n hiddenLabel = false,\n label = '',\n mode = 'global',\n onChangeHandler,\n onInputKeyboardEventHandler = () => {},\n placeholder = 'Søk',\n title = '',\n type = 'text',\n value = '',\n}) => {\n const {\n searchValueGlobal = '',\n setSearchValueGlobal,\n searchValueInline = '',\n setSearchValueInline,\n } = useContext(SearchContext);\n const { language } = useContext(LanguageContext);\n const { yearData } = useContext(YearDataContext);\n\n // We need the 'raw' language to build the object below, so we get the data directly\n const langObj = yearData?.s?.language;\n const searchInputRef = useRef();\n\n const handleChange = event => {\n if (onChangeHandler) {\n if (mode === 'global') {\n debug && console.log('handleChange -> global');\n // setSearchValueGlobal(event.target.value);\n }\n if (mode === 'inline') {\n debug && console.log('handleChange -> inline');\n setSearchValueInline(event.target.value);\n }\n onChangeHandler(event.target.value);\n }\n };\n\n const handleReset = () => {\n if (mode === 'global') {\n debug && console.log('handleReset -> global');\n setSearchValueGlobal('');\n }\n if (mode === 'inline') {\n debug && console.log('handleReset -> inline');\n setSearchValueInline('');\n }\n if (onChangeHandler) {\n onChangeHandler('');\n }\n searchInputRef.current.focus();\n };\n\n const getValue = () => {\n if (mode === 'global') {\n return searchValueGlobal;\n }\n if (mode === 'inline') {\n return searchValueInline;\n }\n return null;\n };\n\n useEffect(() => {\n if (focus) {\n searchInputRef.current.focus();\n }\n }, [focus]);\n\n return (\n \n {label && {label}}\n \n\n {/* Reset search X button */}\n {getValue() ? (\n \n \n \n ) : (\n \n )}\n \n );\n};\n\nSearchInput.propTypes = {\n className: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n borderFocusColor: PropTypes.string,\n focus: PropTypes.bool,\n hiddenLabel: PropTypes.bool,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n mode: PropTypes.oneOf(['global', 'inline']).isRequired,\n onChangeHandler: PropTypes.func,\n onInputKeyboardEventHandler: PropTypes.func,\n placeholder: PropTypes.string,\n title: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.string,\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Icon from '../Icon';\n\nfunction SearchCategory({ label, icon }) {\n return (\n \n \n

    {label}

    \n \n );\n}\n\nSearchCategory.propTypes = {\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n icon: PropTypes.string.isRequired,\n};\n\nexport default SearchCategory;\n","import React from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nfunction SearchListItem({ children }) {\n return (\n \n {children}\n \n );\n}\n\nexport default SearchListItem;\n","export const trimSpacesFromString = str => {\n let output = str;\n if (str && typeof str === 'string') {\n // Trim spaces at the start and end of string\n output = str.trim();\n } else {\n // Throw a warning if input is not a string\n console.warn(`[trimSpacesFromString]: input is not a string`);\n }\n // Gracefully return output, even if it's not a string\n return output;\n};\n","import React, { useContext, useEffect, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { autocompleteHitsPerMode, autocompleteMinLength } from './config';\n// Contexts\nimport { LanguageContext, SearchContext, YearDataContext } from '../../../contexts';\n// Primitives\nimport SearchInput from './SearchInput';\nimport SearchCategory from './SearchCategory';\nimport SearchListItem from './SearchListItem';\nimport Icon from '../../primitives/Icon';\n// Content modules\nimport Lang from '../../content/Language/Lang';\n// Utils\nimport { isNotEmptyArray, isNotEmptyObject } from '../../../utils/isEmptyUtil';\nimport { lang } from '../../../utils/langUtil';\nimport { trimSpacesFromString } from '../../../utils/trimSpacesFromStringUtil';\n\nconst SearchAutocomplete = () => {\n const [isSearching, setIsSearching] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const {\n autocompleteData,\n setAutocompleteSearchString,\n autocompleteMatches,\n searchValueGlobal,\n setSearchValueGlobal,\n setAutocompleteMatches,\n setSearchOverlay,\n setSearchSelectedRealEstate,\n setSearchSelectedInfrastructure,\n setSearchResultLimit,\n setSearchItemInvestmentName,\n } = useContext(SearchContext);\n const { language } = useContext(LanguageContext);\n const { yearData } = useContext(YearDataContext);\n\n // We need the 'raw' language to build the object below, so we get the data directly\n const langObj = yearData?.s?.language;\n\n const handleSearchStatus = ({ type, name }) => {\n setSearchItemInvestmentName(name);\n // If we're handling real-estate results, set name of company to context so that we can fill the input field in /investments/real-estate\n type === 'real-estate' && setSearchSelectedRealEstate(name);\n // If we're handling infrastructure results, set name of company to context so that we can fill the input field in /investments/infrastructure\n type === 'infrastructure' && setSearchSelectedInfrastructure(name);\n setIsSearching(!isSearching);\n !isSearching ? setSearchOverlay(true) : setSearchOverlay(false);\n };\n\n useEffect(() => {\n // Set the amount of hits the response shall return when doing a search\n setSearchResultLimit(autocompleteHitsPerMode);\n // Reset search page data and search string in context\n setSearchValueGlobal('');\n // If the search input value is empty reset search matches, else, if user is searching again, previous results are shown before the new ones are listed\n if (!searchValue) {\n setAutocompleteSearchString('');\n setAutocompleteMatches({});\n }\n\n const timer = setTimeout(() => {\n if (searchValue && searchValue.length >= autocompleteMinLength) {\n // Set the auto complete search string in context\n setAutocompleteSearchString(trimSpacesFromString(searchValue));\n // Set the global search string, this is used by the api call url function in wrapper (const dataApiSearch)\n setSearchValueGlobal(trimSpacesFromString(searchValue));\n } else {\n // Reset\n setAutocompleteSearchString('');\n setSearchValueGlobal('');\n }\n }, 250);\n return () => clearInterval(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchValue]);\n\n useEffect(() => {\n // Use 'searchValueGlobal' to find matches within 'autocompleteData'\n // If any are found, build the object that's rendered in 'renderMatches'\n if (autocompleteData && isNotEmptyObject(autocompleteData)) {\n setAutocompleteMatches(autocompleteData);\n } else {\n // Reset\n setAutocompleteMatches({});\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autocompleteData]);\n\n const LinkElement = item => {\n return (\n \n handleSearchStatus({ type: item.type, name: item.i })}\n >\n \n {item.i}\n \n \n \n \n );\n };\n\n const renderMatches = () => {\n const {\n eq: equities,\n fi: fixedIncome,\n re: realEstate,\n is: infrastructure,\n totals,\n } = autocompleteMatches;\n const outputEquities = [];\n const outputFixedIncome = [];\n const outputRealEstate = [];\n const outputInfrastructure = [];\n\n if (equities && isNotEmptyArray(equities)) {\n equities\n .slice(0, autocompleteHitsPerMode)\n .map(item => outputEquities.push());\n }\n if (fixedIncome && isNotEmptyArray(fixedIncome)) {\n fixedIncome\n .slice(0, autocompleteHitsPerMode)\n .map(item =>\n outputFixedIncome.push(),\n );\n }\n if (realEstate && isNotEmptyArray(realEstate)) {\n realEstate\n .slice(0, autocompleteHitsPerMode)\n .map(item =>\n outputRealEstate.push(),\n );\n }\n if (infrastructure && isNotEmptyArray(infrastructure)) {\n infrastructure\n .slice(0, autocompleteHitsPerMode)\n .map(item =>\n outputInfrastructure.push(),\n );\n }\n return (\n <>\n {searchValueGlobal && searchValueGlobal.length >= autocompleteMinLength && (\n <>\n {/* Items matching Equities category */}\n {outputEquities && isNotEmptyArray(outputEquities) && (\n <>\n } icon=\"InvestmentEquities\" />\n
      {outputEquities}
    \n \n )}\n {/* Items matching Fixed income category */}\n {outputFixedIncome && isNotEmptyArray(outputFixedIncome) && (\n <>\n } icon=\"InvestmentFixedIncome\" />\n
      {outputFixedIncome}
    \n \n )}\n {/* Items matching Real Estate category */}\n {outputRealEstate && isNotEmptyArray(outputRealEstate) && (\n <>\n } icon=\"InvestmentRealEstate\" />\n
      {outputRealEstate}
    \n \n )}\n {/* Items matching Infrastructure category */}\n {outputInfrastructure && isNotEmptyArray(outputInfrastructure) && (\n <>\n }\n icon=\"InvestmentInfrastructure\"\n />\n
      {outputInfrastructure}
    \n \n )}\n {/* Show complete search result list page button */}\n {totals && (\n \n \n \n ({totals.all}) \n \n \n \n \n )}\n \n )}\n \n );\n };\n\n return (\n <>\n {/* This will show \"search\" in header and transform into a search field / autosuggest when clicked on */}\n \n {!isSearching && (\n \n