{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/compiled-icons/xAxis.js","webpack:///./src/compiled-icons/arrow-down.js","webpack:///./src/compiled-icons/yAxis.js","webpack:///./src/compiled-icons/arrow-left.js","webpack:///./src/compiled-icons/share.js","webpack:///./src/compiled-icons/menu-close.js","webpack:///./src/compiled-icons/size.js","webpack:///./src/compiled-icons/arrow-right.js","webpack:///./src/compiled-icons/icon-twitter.js","webpack:///./src/App.vue?c67e","webpack:///src/App.vue","webpack:///./src/App.vue?60d0","webpack:///./src/App.vue?315a","webpack:///./src/plugins/tvaMq.js","webpack:///./src/plugins/globalVariables.js","webpack:///./src/utilities/router.js","webpack:///./src/utilities/store/modules/ui.js","webpack:///./src/utilities/dataHelpers/dataHelper.js","webpack:///./src/utilities/store/modules/data.js","webpack:///./src/utilities/store/modules/scroller.js","webpack:///./src/utilities/store/index.js","webpack:///./src/utilities/language.js","webpack:///./src/main.js","webpack:///./src/App.vue?db16","webpack:///./src/compiled-icons/menu.js","webpack:///./src/compiled-icons/mobile-indicator.js","webpack:///./src/compiled-icons/swipe-pointer.js","webpack:///./src/compiled-icons/index.js","webpack:///./src/compiled-icons/download.js","webpack:///./src/compiled-icons/arrow-up.js","webpack:///./src/mixins/bgColor.js","webpack:///./src/compiled-icons/icon-facebook.js","webpack:///./src/compiled-icons/icon-linkedin.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","icon","require","register","width","height","viewBox","_vm","this","_h","$createElement","_c","_self","class","$tvaMq","style","backgroundImage","backGroundColor","attrs","version","$route","params","path","staticRenderFns","mixins","beforeCreate","lang","$i18n","locale","toLowerCase","mounted","setVHProperty","loadConfig","loadData","watch","to","setIndexFromMenu","methods","mapActions","component","install","Vue","options","mixin","device","breakpoints","mobile","tablet","desktop","large","Infinity","created","checkDevice","addEventListener","innerWidth","computed","$retina","devicePixelRatio","$touchDevice","documentElement","$baseUrl","process","use","Router","base","routes","redirect","alias","state","config","mainSource","source","dataType","geoArea","selectedCountryId","isMenuOpen","isModalOpen","modalContent","previousLink","isDrillDownOpen","activeGraphic","scatterIndex","hoveredStacked","legendRadius","mutations","setMainSource","setSource","setDataType","setConfig","setGeoArea","setSelectedCountryId","toggleMenu","toggleModal","setModalContent","setPreviousLink","toggleDrillDown","digitalData","pageEvent","eventInfo","eventDetail","contentTitle","contentWidget","contentURL","location","ctaLabel","setActiveGraphic","setScatterIndex","setHoveredStacked","setLegendRadius","getters","mainSourcesRegistry","mainSources","currentSourceConfig","find","x","geoAreas","dataSource","uom","uoms","metadata","currentSelectionLabel","mapStyle","sourceColor","index","colorName","actions","commit","_config","log","namespaced","DataHelper","rootGetters","dataKey","map","parseFloat","replace","toFixed","split","filterValue","filterDatasetByProp","res","shallowFilter","filter","includes","dataKey_sum","dataKey_group","counts","reduce","prev","curr","count","set","Map","currentYear","previousYearIndex","previousYear","delta","QTY","DELTA_VALUE_PERC","REFERENCE_YEARS","YEAR","item","circleSize","countryRegistry","COORDS","id","ID","geometry","coordinates","properties","RADIUS_TARGET","RADIUS_CURRENT","country","COUNTRY","slugify","longitude","latitude","dataset","dataSets","timeSerie","totalShare","top5","oilQualityTrend","oilQualityPreviousYear","oilQualityPercentage","lastUpdated","growth","ENICountries","isNoData","setDataset","payload","setTimeSerie","setTotalShare","setTop5","setOilQualityTrend","setOilQualityPreviousYear","setOilQualityPercentage","setLastUpdated","setGrowth","setIsNoData","getDataset","field","getTimeSerie","getTotalShare","getTop5","getOilQualityTrend","getOilQualityPercentage","getOilQualityPreviousYear","getLastUpdated","getGrowth","getEniCountries","dispatch","loadTimeSerie","parsedData","dh","parseNumericValues","timeSeriesData","loadTotalShare","totalShareData","parsePercValues","loadTop5","top5Data","filterAwayZeroOrNull","loadOilQualityTrend","oilQualityConfig","year","loadOilQualityPercentage","loadOilQualityPreviousYear","previuos_year_fields","calcData","excludeTotalShare","filters","getFiltersState","filterByMainSource","filterByGeoArea","filterBySource","filterByDataType","sumByPropery","_orderBy","MAX_QTY","_maxBy","calcMaxSize","Math","min","max","circleSizeRange","scale_QTY","d3Scale","domain","range","values","GEOITEM","getCountryGeoCoords","countries","RANK","GEO","parseInt","latest","delta_1","calcQTYPercChangeByDeltaYear","diff","filteredData","onlyUnique","self","indexOf","series","TYPE","label","xAxis","years","tmp","forEach","sort","a","b","PERC","localeCompare","scatterData","size","PRODUCTION","sulphur","SULPHUR","api","API","landingIndex","autoScroll","isWheelListenerInitialized","direction","increment","decrement","setWheelListener","toggleAutoScroll","setDirection","Vuex","Store","ui","scroller","VueI18n","messages","en","contentEn","i18n","fallbackLocale","tvaMq","globalVariables","productionTip","Vue2TouchEvents","SocialSharing","VueSVGIcon","router","store","render","h","App","$mount","updateBackgroundColor","mapGetters","_color"],"mappings":"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","file":"js/app.d450eb73.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-1f5d56c5\":\"087017fe\",\"chunk-4e834632\":\"b3cc7468\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-1f5d56c5\":1,\"chunk-4e834632\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-1f5d56c5\":\"ba06815d\",\"chunk-4e834632\":\"dfbaa64e\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/en-IT/infographics/world-energy-review-highlights/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'xAxis': {\n width: 17,\n height: 18,\n viewBox: '0 0 17 18',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'arrow-down': {\n width: 43,\n height: 43,\n viewBox: '0 0 43 43',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'yAxis': {\n width: 18,\n height: 17,\n viewBox: '0 0 18 17',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'arrow-left': {\n width: 27,\n height: 26,\n viewBox: '0 0 27 26',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'share': {\n width: 21,\n height: 21,\n viewBox: '0 0 21 21',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'menu-close': {\n width: 42,\n height: 42,\n viewBox: '0 0 42 42',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'size': {\n width: 14,\n height: 14,\n viewBox: '0 0 14 14',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'arrow-right': {\n width: 27,\n height: 26,\n viewBox: '0 0 27 26',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'icon-twitter': {\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n data: ''\n }\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.$tvaMq],style:({\n backgroundImage: _vm.backGroundColor,\n }),attrs:{\"id\":\"app\",\"version\":_vm.version}},[[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view',{key:_vm.$route.params.path})],1)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7f469af6&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const install = function (Vue, options) {\n Vue.mixin({\n data() {\n return {\n device: '',\n breakpoints: {\n mobile: 320,\n tablet: 720,\n desktop: 1024,\n large: Infinity,\n },\n };\n },\n created() {\n if (options) this.breakpoints = options;\n\n this.device = this.checkDevice();\n\n window.addEventListener('resize', () => {\n this.device = this.checkDevice();\n });\n },\n methods: {\n checkDevice() {\n return window.innerWidth <= this.breakpoints.mobile\n ? 'mobile'\n : window.innerWidth <= this.breakpoints.tablet\n ? 'tablet'\n : window.innerWidth <= this.breakpoints.desktop\n ? 'desktop'\n : 'large';\n },\n },\n computed: {\n $tvaMq() {\n return this.device;\n },\n },\n });\n};\n\nexport default install;\n","const install = function (Vue) {\n Vue.mixin({\n computed: {\n $retina: () => window.devicePixelRatio > 1,\n $touchDevice: () => 'ontouchstart' in document.documentElement,\n $baseUrl: () => process.env.BASE_URL\n },\n });\n};\n\nexport default install;\n","import Vue from 'vue';\nimport Router from 'vue-router';\n\nVue.use(Router);\n\nexport default new Router({\n mode: process.env.VUE_APP_RENDER === 'prerender' ? 'history' : '',\n base: process.env.VUE_APP_PATH,\n routes: [\n {\n path: '/',\n redirect: '/landing'\n },\n {\n path: '/landing',\n alias: '/index.html',\n name: 'landing',\n component: () => import('@/views/Landing.vue'),\n \n },\n {\n path: '/:source',\n alias: '/',\n name: '',\n component: () => import('@/views/SourcePage.vue'),\n \n },\n\n ]\n});","//this file mange ui filters logic and take care to call dataAction to trigger data update (dataAction) when necessary\nimport _config from \"@/assets/config/sourcesConfig.json\";\n\nconst state = {\n config: null,\n mainSource: null,\n source: null,\n dataType: null,\n geoArea: null,\n selectedCountryId: null,\n isMenuOpen: false,\n isModalOpen: false,\n modalContent: null,\n previousLink: null,\n isDrillDownOpen: null,\n activeGraphic: null,\n scatterIndex: null,\n hoveredStacked: null,\n legendRadius: null,\n};\n\nconst mutations = {\n setMainSource(state, value) {\n state.mainSource = value;\n },\n setSource(state, value) {\n state.source = value;\n },\n setDataType(state, value) {\n state.dataType = value;\n },\n setConfig(state, value) {\n state.config = value;\n },\n setGeoArea(state, value) {\n state.geoArea = value;\n },\n setSelectedCountryId(state, value) {\n state.selectedCountryId = value;\n },\n toggleMenu(state, value) {\n state.isMenuOpen = value;\n },\n toggleModal(state, value) {\n state.isModalOpen = value;\n },\n setModalContent(state, value) {\n state.modalContent = value;\n },\n setPreviousLink(state, value) {\n state.previousLink = value;\n },\n toggleDrillDown(state, value) {\n if (value)\n window.digitalData.push({\n event: \"click-cta\",\n pageEvent: {\n eventInfo: {\n eventDetail: \"opened drill down\",\n contentTitle: \"Oil-Production quality\",\n contentWidget: \"wer\",\n contentURL: window.location.href,\n ctaLabel: \"Oil-Production quality\",\n },\n },\n });\n state.isDrillDownOpen = value;\n },\n setActiveGraphic(state, value) {\n state.activeGraphic = value;\n },\n setScatterIndex(state, value) {\n state.scatterIndex = value;\n },\n setHoveredStacked(state, value) {\n state.hoveredStacked = value;\n },\n setLegendRadius(state, value) {\n state.legendRadius = value;\n },\n};\n\nconst getters = {\n mainSource: (state) => state.mainSource,\n source: (state) => state.source,\n dataType: (state) => state.dataType,\n\n mainSourcesRegistry: (state) => state.config.mainSources,\n currentSourceConfig: (state) => {\n return state.config.mainSources.find((x) => x.key === state.mainSource);\n },\n geoAreas: (state) => state.config.geoAreas,\n geoArea: (state) => state.geoArea,\n\n dataSource: (state, getters) => {\n if (getters.currentSourceConfig) {\n return getters.currentSourceConfig.dataSource;\n }\n },\n uom: (state, getters) => {\n if (getters.currentSourceConfig) {\n return getters.currentSourceConfig.uoms;\n }\n },\n metadata: (state, getters) => {\n if (getters.currentSourceConfig) {\n return getters.currentSourceConfig.metadata;\n }\n },\n currentSelectionLabel: (state, getters) => {\n const dataType = getters.dataType;\n return dataType\n ? `${getters.mainSource} ${getters.dataType}`\n : `${getters.mainSource}`;\n },\n selectedCountryId: (state) => state.selectedCountryId,\n mapStyle: (state, getters) => {\n if (getters.currentSourceConfig) {\n return getters.currentSourceConfig.mapStyle;\n }\n },\n sourceColor:\n (state, getters) =>\n (index = null) => {\n if (index != null) {\n if (index === -1) {\n return \"main\";\n } else {\n return getters.mainSourcesRegistry[index].colorName;\n }\n } else if (getters.currentSourceConfig) {\n return getters.currentSourceConfig.colorName;\n }\n },\n isMenuOpen: (state) => state.isMenuOpen,\n isModalOpen: (state) => state.isModalOpen,\n modalContent: (state) => state.modalContent,\n isDrillDownOpen: (state) => state.isDrillDownOpen,\n activeGraphic: (state) => state.activeGraphic,\n scatterIndex: (state) => state.scatterIndex,\n hoveredStacked: (state) => state.hoveredStacked,\n legendRadius: (state) => state.legendRadius,\n previousLink: state => state.previousLink\n};\n\n// const dataAction = { root: true };\nconst actions = {\n loadConfig({ commit }) {\n commit(\"setConfig\", _config);\n },\n setMainSource({ commit }, value) {\n commit(\"setMainSource\", value);\n },\n setSource({ commit }, value) {\n commit(\"setSource\", value);\n },\n setDataType({ commit }, value) {\n commit(\"setDataType\", value);\n },\n setGeoArea({ commit }, value) {\n commit(\"setGeoArea\", value);\n },\n setSelectedCountryId({ commit }, value) {\n commit(\"setSelectedCountryId\", value);\n },\n toggleMenu({ commit }, value) {\n commit(\"toggleMenu\", value);\n },\n toggleModal({ commit }, value) {\n commit(\"toggleModal\", value);\n },\n setModalContent({ commit }, value) {\n commit(\"setModalContent\", value);\n },\n setPreviousLink({ commit }, value) {\n commit(\"setPreviousLink\", value);\n },\n toggleDrillDown({ commit }, value) {\n commit(\"toggleDrillDown\", value);\n },\n setActiveGraphic({ commit }, value) {\n commit(\"setActiveGraphic\", value);\n },\n setScatterIndex({ commit }, value) {\n commit(\"setScatterIndex\", value);\n },\n setHoveredStacked({ commit }, value) {\n commit(\"setHoveredStacked\", value);\n },\n setLegendRadius({ commit }, value) {\n console.log(typeof value);\n commit(\"setLegendRdius\", value);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","// import _ from \"lodash\";\n// import * as d3Scale from \"d3-scale\";\nimport slugify from 'slugify'\n\nexport default class DataHelper {\n constructor(name) {\n this.name = name;\n }\n\n static getFiltersState(rootGetters) {\n return {\n mainSource: rootGetters[\"ui/mainSource\"],\n source: rootGetters[\"ui/source\"],\n dataType: rootGetters[\"ui/dataType\"],\n geoArea: rootGetters[\"ui/geoArea\"],\n currentSourceConfig: rootGetters[\"ui/currentSourceConfig\"],\n };\n }\n\n //DATA UTILS\n static parseNumericValues(data, dataKey) {\n return data.map((x) => {\n return {\n ...x,\n [dataKey]:\n parseFloat(parseFloat(x[dataKey].replace(\",\", \".\")).toFixed(2)) || 0,\n };\n });\n }\n static parsePercValues(data, dataKey) {\n return data.map((x) => {\n return {\n ...x,\n [dataKey]: parseFloat(x[dataKey].split(\"%\")[0].replace(\",\", \".\")) || 0,\n };\n });\n }\n\n static filterByMainSource(data, filterValue) {\n return this.filterDatasetByProp(data, filterValue, \"MAINSOURCE\");\n }\n\n static filterByGeoArea(data, filterValue) {\n //[NB] check on geoArea is with includes, not equal because in the data we have \"North Americas\" and \"Central South Americas\"\n return this.filterDatasetByProp(data, filterValue, \"AREA\", true);\n }\n\n static filterBySource(data, filterValue) {\n let res = data;\n if (filterValue) {\n res = this.filterDatasetByProp(data, filterValue, \"SOURCE\");\n }\n return res;\n }\n static filterByDataType(data, filterValue) {\n let res = data;\n if (filterValue) {\n return this.filterDatasetByProp(data, filterValue, \"TYPE\");\n }\n return res;\n }\n\n static filterDatasetByProp(data, value, dataKey, shallowFilter = false) {\n if (!shallowFilter) {\n return data.filter((x) => x[dataKey] === value);\n } else {\n return data.filter(\n (x) =>\n x[dataKey].includes(value) ||\n x[dataKey].split(\" \")[0].includes(value.split(\" \")[0])\n );\n }\n }\n\n static sumByPropery(data, dataKey_sum, dataKey_group) {\n // first, convert data into a Map with reduce\n const counts = data.reduce((prev, curr) => {\n let count = prev.get(curr[dataKey_group]) || 0;\n prev.set(curr[dataKey_group], curr[dataKey_sum] + count);\n return prev;\n }, new Map());\n\n // then, map your counts object back to an array\n const res = [...counts].map(([key, value]) => {\n return {\n [dataKey_group]: key,\n [dataKey_sum]: value,\n };\n });\n\n return res;\n }\n\n static calcQTYPercChangeByDeltaYear(data, currentYear, previousYearIndex) {\n const previousYear = data[previousYearIndex]\n\n if (previousYear) {\n const delta = (currentYear.QTY / previousYear.QTY) * 100;\n return {\n DELTA_VALUE_PERC: (delta - 100),\n REFERENCE_YEARS: [currentYear.YEAR, previousYear.YEAR],\n };\n } else {\n return null;\n }\n }\n\n static getCountryGeoCoords(item, circleSize, countryRegistry) {\n let COORDS = {\n type: \"Feature\",\n id: item.ID,\n geometry: {\n type: \"Point\",\n coordinates: [],\n },\n properties: {\n QTY: item.QTY,\n RADIUS_TARGET: circleSize,\n RADIUS_CURRENT: 0,\n country: item.COUNTRY,\n },\n };\n\n const c = countryRegistry.find((x) => slugify(x.country) === slugify(item.COUNTRY));\n\n if (c) {\n COORDS.geometry.coordinates = [c.longitude, c.latitude];\n } else {\n console.log(\"COUNTRY COORDS NOT FOUND FOR\", item.COUNTRY);\n COORDS.geometry.coordinates = null;\n }\n\n return COORDS;\n }\n\n static filterAwayZeroOrNull(dataset, dataKey) {\n return dataset.filter((x) => x[dataKey] > 0 && x[dataKey] !== \"\");\n }\n}\n","import dh from \"../../dataHelpers/dataHelper\";\nimport ENICountries from \"@/assets/config/ENICountries.json\";\n\nimport * as d3Scale from \"d3-scale\";\nimport { orderBy as _orderBy, maxBy as _maxBy } from \"lodash\";\n\nimport timeSeriesData from \"@/assets/data/timeSeries.json\";\nimport totalShareData from \"@/assets/data/shareOnTotalWorld.json\";\nimport top5Data from \"@/assets/data/Top5.json\";\nimport countries from \"@/assets/data/countries.json\";\nimport oilQualityTrend from \"@/assets/data/OilQualityTrend.json\";\nimport oilQualityPreviousYear from \"@/assets/data/OilQualityPreviousYear.json\";\nimport oilQualityPercentage from \"@/assets/data/OilQualityPercentage.json\";\nimport oilQualityConfig from \"@/assets/data/OilQualityConfig.json\";\n\nconst state = {\n // loaded datasets\n dataSets: {\n timeSerie: null,\n totalShare: null,\n top5: null,\n oilQualityTrend: null,\n oilQualityPreviousYear: null,\n oilQualityPercentage: null,\n },\n // properties ready for components\n timeSerie: null,\n totalShare: null,\n top5: null,\n oilQualityTrend: null,\n oilQualityPreviousYear: null,\n oilQualityPercentage: null,\n lastUpdated: null,\n growth: null,\n ENICountries: ENICountries,\n isNoData: false,\n};\n\nconst mutations = {\n setDataset(state, payload) {\n state.dataSets[payload.dataset] = payload.data;\n },\n setTimeSerie(state, { data }) {\n state.timeSerie = data;\n },\n setTotalShare(state, { data }) {\n state.totalShare = data;\n },\n setTop5(state, { data }) {\n state.top5 = data;\n },\n setOilQualityTrend(state, { data }) {\n state.oilQualityTrend = data;\n },\n setOilQualityPreviousYear(state, { data }) {\n state.oilQualityPreviousYear = data;\n },\n setOilQualityPercentage(state, { data }) {\n state.oilQualityPercentage = data;\n },\n setLastUpdated(state, data) {\n state.lastUpdated = data;\n },\n setGrowth(state, { data }) {\n state.growth = data;\n },\n setIsNoData(state, data) {\n state.isNoData = data;\n },\n};\n\nconst getters = {\n getDataset: (state) => (field) => {\n return state.dataSets[field];\n },\n getTimeSerie: (state) => {\n return state.timeSerie;\n },\n getTotalShare: (state) => {\n return state.totalShare;\n },\n getTop5: (state) => {\n return state.top5;\n },\n getOilQualityTrend: (state) => state.oilQualityTrend,\n getOilQualityPercentage: (state) => state.oilQualityPercentage,\n getOilQualityPreviousYear: (state) => state.oilQualityPreviousYear,\n getLastUpdated: (state) => {\n return state.lastUpdated;\n },\n getGrowth: (state) => {\n return state.growth;\n },\n getEniCountries: (state) => {\n return state.ENICountries;\n },\n isNoData: (state) => {\n return state.isNoData;\n },\n};\n\n// const dataAction = { root: true };\nconst actions = {\n loadData({ dispatch }) {\n // import and parse datasets\n dispatch(\"loadTimeSerie\");\n dispatch(\"loadTotalShare\");\n dispatch(\"loadTop5\");\n dispatch(\"loadOilQualityTrend\");\n dispatch(\"loadOilQualityPercentage\");\n dispatch(\"loadOilQualityPreviousYear\");\n },\n loadTimeSerie({ commit }) {\n const parsedData = dh.parseNumericValues(timeSeriesData, \"QTY\");\n\n commit(\"setDataset\", { data: parsedData, dataset: \"timeSerie\" });\n },\n loadTotalShare({ commit }) {\n let parsedData = dh.parseNumericValues(totalShareData, \"QTY\");\n parsedData = dh.parsePercValues(parsedData, \"QTY%\");\n\n commit(\"setDataset\", { data: parsedData, dataset: \"totalShare\" });\n },\n loadTop5({ commit }) {\n let parsedData = dh.parseNumericValues(top5Data, \"QTY\");\n parsedData = dh.parseNumericValues(parsedData, \"RANK\");\n parsedData = dh.parsePercValues(parsedData, \"QTY%\");\n parsedData = dh.filterAwayZeroOrNull(parsedData, \"QTY\");\n\n commit(\"setDataset\", { data: parsedData, dataset: \"top5\" });\n },\n loadOilQualityTrend({ commit }) {\n let parsedData = [];\n\n for (const year of oilQualityConfig.map((o) => o[\"YEARS\"])) {\n parsedData = dh.parseNumericValues(oilQualityTrend, year);\n parsedData = dh.filterAwayZeroOrNull(parsedData, year);\n }\n\n commit(\"setDataset\", { data: parsedData, dataset: \"oilQualityTrend\" });\n },\n loadOilQualityPercentage({ commit }) {\n let parsedData = [];\n\n parsedData = dh.parsePercValues(oilQualityPercentage, \"PERC\");\n parsedData = dh.filterAwayZeroOrNull(parsedData, \"PERC\");\n\n commit(\"setDataset\", { data: parsedData, dataset: \"oilQualityPercentage\" });\n },\n loadOilQualityPreviousYear({ commit }) {\n let parsedData = [];\n for (const field of oilQualityConfig\n .map((o) => o.previuos_year_fields)\n .filter((o) => o !== \"\")) {\n parsedData = dh.parseNumericValues(oilQualityPreviousYear, field);\n parsedData = dh.filterAwayZeroOrNull(parsedData, field);\n }\n commit(\"setDataset\", {\n data: parsedData,\n dataset: \"oilQualityPreviousYear\",\n });\n },\n calcData({ dispatch }, payload = {}) {\n // no need to update totalShare when only area is changed\n const excludeTotalShare = payload.excludeTotalShare || false;\n if (!excludeTotalShare) {\n dispatch(\"getTotalShare\");\n }\n\n dispatch(\"getTimeSerie\");\n dispatch(\"getTop5\");\n dispatch(\"getGrowth\");\n dispatch(\"getOilQualityTrend\");\n dispatch(\"getOilQualityPercentage\");\n dispatch(\"getOilQualityPreviousYear\");\n },\n getTimeSerie({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"timeSerie\");\n\n dataset = dh.filterByMainSource(dataset, filters.mainSource);\n dataset = dh.filterByGeoArea(dataset, filters.geoArea);\n dataset = dh.filterBySource(dataset, filters.source);\n dataset = dh.filterByDataType(dataset, filters.dataType);\n\n if (filters.geoArea === \"Americas\") {\n // when Americas sum QTY by year because in data we have \"North Americas\" and \"Central South Americas\" in the data but just \"Americas\" in the chips\n dataset = dh.sumByPropery(dataset, \"QTY\", \"YEAR\");\n }\n\n // get last updated year dynamically\n // check if dataset length isn't zero\n\n const lastUpdated =\n dataset.length !== 0 && _orderBy(dataset, [\"YEAR\"], [\"desc\"])[0].YEAR;\n\n // console.log('timeSerie!', dataset);\n\n commit(\"setLastUpdated\", lastUpdated);\n commit(\"setTimeSerie\", { data: dataset });\n },\n getTotalShare({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"totalShare\");\n\n dataset = dh.filterByMainSource(dataset, filters.mainSource);\n dataset = dh.filterBySource(dataset, filters.source);\n dataset = dh.filterByDataType(dataset, filters.dataType);\n dataset = _orderBy(dataset, [\"QTY%\"], [\"desc\"]);\n\n commit(\"setTotalShare\", { data: dataset });\n },\n getTop5({ commit, rootGetters, getters }) {\n // TOP5 AND MAP SHARES DATA\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"top5\");\n\n dataset = dh.filterByMainSource(dataset, filters.mainSource);\n dataset = dh.filterBySource(dataset, filters.source);\n dataset = dh.filterByDataType(dataset, filters.dataType);\n\n // SCALE CIRCLE RADIUS PARAMS\n // calc MAX_QTY here before filering geoArea make a more accurate MAX and shared by the views of same sources\n if (dataset.length > 0) {\n const MAX_QTY = _maxBy(dataset, \"QTY\").QTY;\n\n // console.log(\"MAX_QTY\", MAX_QTY);\n\n // Add dynamic radius range related to viewport width\n let width = window.innerWidth * 0.03;\n const calcMaxSize = Math.min(Math.max(20, width), 60);\n\n const circleSizeRange = [0, calcMaxSize]; // MIN AND MAX CIRCLE SIZES\n const scale_QTY = d3Scale\n .scaleSqrt()\n .domain([0, MAX_QTY])\n .range(circleSizeRange);\n\n dataset = dh.filterByGeoArea(dataset, filters.geoArea);\n\n // filter by unique country\n dataset = [\n ...new Map(dataset.map((item) => [item[\"COUNTRY\"], item])).values(),\n ];\n\n // get country coords\n dataset = dataset.map((x, index) => {\n //MAP components needs datapoint to have a numeric(?) id to assign style to each circle on hover\n // this is used alsp used to make top5 component to communicate with map component\n\n x.ID = index;\n\n const circleSize = scale_QTY(x.QTY);\n const GEOITEM = dh.getCountryGeoCoords(x, circleSize, countries);\n\n return {\n COUNTRY: x.COUNTRY,\n RANK: x.RANK,\n \"QTY%\": x[\"QTY%\"],\n GEO: GEOITEM,\n ID: x.ID, // Same ID as COORDS so that MAP and Top5 components can communicate\n };\n });\n }\n\n // console.log(\"TOP5\", dataset);\n dataset = _orderBy(dataset, [\"RANK\"], [\"asc\"]);\n\n if (dataset.length === 0) {\n commit(\"setIsNoData\", true);\n } else {\n commit(\"setIsNoData\", false);\n }\n\n commit(\"setTop5\", { data: dataset });\n },\n getGrowth({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"timeSerie\"); //[NB] this is based on timeSerie dataset\n\n dataset = dh.filterByMainSource(dataset, filters.mainSource);\n dataset = dh.filterByGeoArea(dataset, filters.geoArea);\n dataset = dh.filterBySource(dataset, filters.source);\n dataset = dh.filterByDataType(dataset, filters.dataType);\n\n if (filters.geoArea === \"Americas\") {\n // when Americas sum QTY by year because in data we have \"North Americas\" and \"Central South Americas\" in the data but just \"Americas\" in the chips\n dataset = dh.sumByPropery(dataset, \"QTY\", \"YEAR\");\n }\n\n // console.log(\"GROWTH\", dataset);\n\n dataset = dataset.map((x) => {\n return {\n YEAR: parseInt(x.YEAR),\n QTY: x.QTY,\n };\n });\n let res = [];\n\n dataset = _orderBy(dataset, [\"YEAR\"], [\"desc\"]);\n const latest = dataset[0];\n\n const delta_1 = dh.calcQTYPercChangeByDeltaYear(dataset, latest, 1);\n if (delta_1) {\n res.push(delta_1);\n }\n\n const diff = dh.calcQTYPercChangeByDeltaYear(\n dataset,\n latest,\n dataset.length - 1\n );\n if (diff) res.push(diff);\n\n commit(\"setGrowth\", { data: res });\n },\n getOilQualityTrend({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let filteredData = getters.getDataset(\"oilQualityTrend\");\n\n filteredData = dh.filterByGeoArea(filteredData, filters.geoArea);\n\n function onlyUnique(value, index, self) {\n return self.indexOf(value) === index;\n }\n // CONFIG for tva charts\n let config = {};\n const series = filteredData.map((o) => o.TYPE).filter(onlyUnique);\n config.series = series.map((o) => {\n return {\n key: o,\n label: o,\n };\n });\n config.xAxis = \"year\";\n\n // DATASET for tva charts\n const years = oilQualityConfig.map((o) => o[\"YEARS\"]);\n let dataset = years.map((year) => {\n let tmp = {};\n config.series.forEach((o) => {\n tmp[o.key] = +filteredData.find((l) => l[\"TYPE\"] === o.key)[year];\n });\n\n return {\n ...tmp,\n ...{ year },\n };\n });\n\n commit(\"setOilQualityTrend\", { data: { dataset, config } });\n },\n getOilQualityPercentage({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"oilQualityPercentage\");\n\n dataset = dh.filterByGeoArea(dataset, filters.geoArea);\n dataset = dataset.sort((a, b) => b.PERC - a.PERC);\n commit(\"setOilQualityPercentage\", { data: dataset });\n },\n getOilQualityPreviousYear({ commit, rootGetters, getters }) {\n const filters = dh.getFiltersState(rootGetters);\n let dataset = getters.getDataset(\"oilQualityPreviousYear\");\n\n dataset = dh.filterByGeoArea(dataset, filters.geoArea);\n dataset = dataset.sort((a, b) => a.COUNTRY.localeCompare(b.COUNTRY));\n\n // Config for tva charts\n let config = {\n xAxis: \"sulphur\",\n series: [\n {\n key: \"api\",\n label: \"API Degree\",\n },\n ],\n };\n\n // Config for tva charts\n let scatterData = dataset.map((o) => {\n return {\n label: o.COUNTRY,\n size: +o.PRODUCTION,\n sulphur: +o.SULPHUR,\n api: +o.API,\n };\n });\n\n commit(\"setOilQualityPreviousYear\", {\n data: { dataset, config, scatterData },\n });\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","const state = {\n landingIndex: -1,\n autoScroll: true,\n isWheelListenerInitialized: false,\n direction: \"rtl\",\n};\n\nconst mutations = {\n increment(state, n) {\n if (state.landingIndex < 5) {\n state.landingIndex += n;\n state.direction = \"rtl\";\n }\n },\n decrement(state, n) {\n if (state.landingIndex >= 0) {\n state.landingIndex -= n;\n state.direction = \"ltr\";\n }\n },\n setIndexFromMenu(state, value) {\n state.landingIndex = value;\n },\n setWheelListener(state, value) {\n state.isWheelListenerInitialized = value;\n },\n toggleAutoScroll(state, value) {\n state.autoScroll = value;\n },\n setDirection(state, value) {\n state.direction = value;\n },\n};\n\nconst getters = {\n landingIndex: (state) => parseInt(state.landingIndex),\n isWheelListenerInitialized: (state) => state.isWheelListenerInitialized,\n direction: (state) => state.direction,\n autoScroll: (state) => state.autoScroll,\n};\n\nconst actions = {\n increment({ commit }) {\n commit(\"increment\", 1);\n },\n decrement({ commit }) {\n commit(\"decrement\", 1);\n },\n setIndexFromMenu({ commit }, value) {\n commit(\"setIndexFromMenu\", value);\n },\n setWheelListener({ commit }, value) {\n commit(\"setWheelListener\", value);\n },\n setDirection({ commit }, value) {\n commit(\"setDirection\", value);\n },\n toggleAutoScroll({ commit }, value) {\n commit(\"toggleAutoScroll\", value);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n};\n","import Vuex from \"vuex\";\nimport Vue from \"vue\";\nimport ui from \"./modules/ui\";\nimport data from \"./modules/data\";\nimport scroller from \"./modules/scroller\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n modules: {\n ui,\n data,\n scroller,\n },\n});\n","import Vue from \"vue\";\nimport VueI18n from \"vue-i18n\";\nimport contentEn from \"@/assets/content/content_EN.json\";\n\nVue.use(VueI18n);\n/**\n * An object containing the languages and their translations,\n * you can import the json for each translation and associate it\n * to its relative initials (we will mostly use english and italian,\n * but you can find the correct initials here\n * https://meta.wikimedia.org/wiki/Template:List_of_language_names_ordered_by_code\n */\nconst messages = {\n en: contentEn,\n};\n\n/**\n * i18n will automatically generate an array with all the available languages\n * by reading the \"messages\" object\n */\nconst i18n = new VueI18n({\n locale: \"en\", // set locale\n fallbackLocale: \"en\",\n messages, // set locale messages\n});\n\nexport default i18n;\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\n\n// Plugins\nimport tvaMq from \"./plugins/tvaMq\";\nVue.use(tvaMq, {\n mobile: 500,\n tablet: 1279,\n desktop: Infinity,\n large: Infinity,\n});\n\nimport globalVariables from \"./plugins/globalVariables\";\nVue.use(globalVariables);\n\n// Json viewer\n\nVue.config.productionTip = false;\n\n// Svg icon\nimport VueSVGIcon from \"vue-svgicon\";\nimport \"vue-svgicon/dist/polyfill\";\nimport \"@/compiled-icons\";\n\n// Vue3 touch events\nimport Vue2TouchEvents from \"vue2-touch-events\";\nVue.use(Vue2TouchEvents);\n\nimport router from \"./utilities/router\";\nimport store from \"./utilities/store\";\nimport i18n from \"./utilities/language\";\n// Social sharing\nimport SocialSharing from \"vue-social-sharing\";\nVue.use(SocialSharing);\n\nVue.use(VueSVGIcon);\nnew Vue({\n router,\n store,\n i18n,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'menu': {\n width: 42,\n height: 42,\n viewBox: '0 0 42 42',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'mobile-indicator': {\n width: 20,\n height: 21,\n viewBox: '0 0 20 21',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'swipe-pointer': {\n width: 32,\n height: 32,\n viewBox: '0 0 32 32',\n data: ''\n }\n})\n","/* eslint-disable */\nrequire('./arrow-down')\nrequire('./arrow-left')\nrequire('./arrow-right')\nrequire('./arrow-up')\nrequire('./download')\nrequire('./icon-facebook')\nrequire('./icon-linkedin')\nrequire('./icon-twitter')\nrequire('./menu-close')\nrequire('./menu')\nrequire('./mobile-indicator')\nrequire('./share')\nrequire('./size')\nrequire('./swipe-pointer')\nrequire('./xAxis')\nrequire('./yAxis')\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'download': {\n width: 17,\n height: 17,\n viewBox: '0 0 17 17',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'arrow-up': {\n width: 42,\n height: 43,\n viewBox: '0 0 42 43',\n data: ''\n }\n})\n","import { mapGetters } from \"vuex\";\nexport default {\n mounted() {\n this.updateBackgroundColor();\n },\n data() {\n return {\n backGroundColor: false\n };\n },\n computed: {\n ...mapGetters({\n landingIndex: \"scroller/landingIndex\",\n _color: \"ui/sourceColor\",\n })\n },\n methods: {\n updateBackgroundColor() {\n const c = this._color(this.landingIndex);\n\n this.backGroundColor = `var(--${c}-gradient)`;\n },\n },\n watch: {\n landingIndex() {\n this.updateBackgroundColor();\n },\n }\n}","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'icon-facebook': {\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n data: ''\n }\n})\n","/* eslint-disable */\nvar icon = require('vue-svgicon')\nicon.register({\n 'icon-linkedin': {\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n data: ''\n }\n})\n"],"sourceRoot":""}