diff --git a/dist/css/custom.css b/dist/css/custom.css index 3baa39d..2680e41 100644 --- a/dist/css/custom.css +++ b/dist/css/custom.css @@ -7083,15 +7083,17 @@ a.text-dark:hover, a.text-dark:focus { width: 100%; height: 100%; position: absolute; - transform: translateZ(-880px) rotateY(-100deg); + transform: translateZ(-800px) rotateY(100deg); transform-style: preserve-3d; transition: transform 1s; } .carousel__cell { position: absolute; - width: 45vw; + width: 75vw; height: auto; - bottom: 0px; } + bottom: 0px; + pointer-events: auto; + transition: width 0.5s; } @media (min-width: 768px) { .carousel__cell { width: 20vw; } } @@ -7101,45 +7103,53 @@ a.text-dark:hover, a.text-dark:focus { .carousel__cell:nth-child(1) { transform: rotateY(0deg) translateZ(60vw); } } .carousel__cell:nth-child(2) { - transform: rotateY(20deg) translateZ(130vw); } - @media (min-width: 768px) { - .carousel__cell:nth-child(2) { - transform: rotateY(20deg) translateZ(60vw); } } - .carousel__cell:nth-child(3) { transform: rotateY(40deg) translateZ(130vw); } @media (min-width: 768px) { - .carousel__cell:nth-child(3) { + .carousel__cell:nth-child(2) { transform: rotateY(40deg) translateZ(60vw); } } - .carousel__cell:nth-child(4) { - transform: rotateY(60deg) translateZ(130vw); } - @media (min-width: 768px) { - .carousel__cell:nth-child(4) { - transform: rotateY(60deg) translateZ(60vw); } } - .carousel__cell:nth-child(5) { + .carousel__cell:nth-child(3) { transform: rotateY(80deg) translateZ(130vw); } @media (min-width: 768px) { - .carousel__cell:nth-child(5) { + .carousel__cell:nth-child(3) { transform: rotateY(80deg) translateZ(60vw); } } - .carousel__cell:nth-child(6) { - transform: rotateY(100deg) translateZ(130vw); } - @media (min-width: 768px) { - .carousel__cell:nth-child(6) { - transform: rotateY(100deg) translateZ(60vw); } } - .carousel__cell:nth-child(7) { + .carousel__cell:nth-child(4) { transform: rotateY(120deg) translateZ(130vw); } @media (min-width: 768px) { - .carousel__cell:nth-child(7) { + .carousel__cell:nth-child(4) { transform: rotateY(120deg) translateZ(60vw); } } - .carousel__cell:nth-child(8) { - transform: rotateY(140deg) translateZ(130vw); } - @media (min-width: 768px) { - .carousel__cell:nth-child(8) { - transform: rotateY(140deg) translateZ(60vw); } } - .carousel__cell:nth-child(9) { + .carousel__cell:nth-child(5) { transform: rotateY(160deg) translateZ(130vw); } @media (min-width: 768px) { - .carousel__cell:nth-child(9) { + .carousel__cell:nth-child(5) { transform: rotateY(160deg) translateZ(60vw); } } + .carousel__cell:nth-child(6) { + transform: rotateY(200deg) translateZ(130vw); } + @media (min-width: 768px) { + .carousel__cell:nth-child(6) { + transform: rotateY(200deg) translateZ(60vw); } } + .carousel__cell:nth-child(7) { + transform: rotateY(240deg) translateZ(130vw); } + @media (min-width: 768px) { + .carousel__cell:nth-child(7) { + transform: rotateY(240deg) translateZ(60vw); } } + .carousel__cell:nth-child(8) { + transform: rotateY(280deg) translateZ(130vw); } + @media (min-width: 768px) { + .carousel__cell:nth-child(8) { + transform: rotateY(280deg) translateZ(60vw); } } + .carousel__cell:nth-child(9) { + transform: rotateY(320deg) translateZ(130vw); } + @media (min-width: 768px) { + .carousel__cell:nth-child(9) { + transform: rotateY(320deg) translateZ(60vw); } } + +.disabled { + pointer-events: none; + opacity: 0.0; } + +.higlight { + width: 30vw; + transition: width 0.5s; } .grid { display: flex; diff --git a/dist/js/index.js b/dist/js/index.js index 1ccc531..756b329 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){"use strict";n.r(t),n.d(t,"setup",function(){return s});var r,o=0,a=0,i="76561198250223174";function s(){r=document.querySelector(".carousel"),$.getJSON("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+i+"&format=json",JSON,function(e){if(0!=e.response.total_count){for(var t=[],n=0;n-1){var t=new(n(1))("account").get("steam");return null!=t?t:"76561198250223174"}return console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),"76561198250223174"}(),$.get("https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+e+"&include_appinfo=1&include_played_free_games=1&appids_filter=&format=json",function(e){for(var t=[],n=0;n-1?new e("Games").get("games"):(console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),null));i();for(var r=document.getElementById("library"),o=function(){var e=t[a],n="

"+e.name+"

",o=document.createElement("div");o.className="game",o.onclick=function(){var t;t=e,console.log(t.name)},e.isInstalled&&(n+=''),o.innerHTML=n,null!=r&&r.appendChild(o)},a=0;a Settings"}}),n(2),n(0)},function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0Nhcm91c2VsLnRzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvR2FtZS50cyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvR2FtZUxvYWRlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvVG9rZW5NYW5hZ2VyLnRzIiwid2VicGFjazovLy8uL3NyYy90cy9MaWJyYXJ5LnRzIiwid2VicGFjazovLy8uL3NyYy90cy9pbmRleC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJlbGVjdHJvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJmc1wiIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsInNldHVwIiwiY2Fyb3VzZWwiLCJzZWxlY3RlZEluZGV4IiwiYW5nbGUiLCJjbGllbnRUb2tlbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIiQiLCJnZXRKU09OIiwiSlNPTiIsImRhdGEiLCJyZXNwb25zZSIsInRvdGFsX2NvdW50IiwiU2VsZWN0ZWRSZWNlbnRHYW1lcyIsImlfMSIsImdhbWVzIiwibGVuZ3RoIiwiZ2FtZSIsIkdhbWVNZXRhIiwiQXBwSWQiLCJpbWdfaWNvbl91cmwiLCJjb25zb2xlIiwibG9nIiwic3RyaW5naWZ5IiwibGlzdCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJzcmMiLCJ0aHVtYiIsImRhdGFzZXQiLCJpZCIsInRvU3RyaW5nIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJvdGF0ZUNhcm91c2VsIiwiZXZlbnQiLCJ0YXJnZXQiLCJzdHlsZSIsInRyYW5zZm9ybSIsInRoaXMiLCJlbGVjdHJvbiIsInBhdGgiLCJmcyIsIltvYmplY3QgT2JqZWN0XSIsImpvaW4iLCJhcHAiLCJyZW1vdGUiLCJnZXRQYXRoIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJyZWFkRmlsZSIsIndyaXRlRmlsZVN5bmMiLCJsYXVuY2hlciIsIkdhbWUiLCJhcHBpZCIsInRodW1ibmFpbCIsImxhdW5jaGVySUQiLCJpc0luc3RhbGxlZCIsImxvY2FsUGF0aCIsIlN0b3JlIiwiVXBkYXRlR2FtZXNKU09OIiwic3RlYW1Ub2tlbiIsInVzZXJBZ2VudCIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInRrbiIsImdldFN0ZWFtVG9rZW4iLCJnYW1lX2NvdW50IiwiZ2FtZURhdGEiLCJTdGVhbSIsInN0b3JlIiwic2V0IiwicG9wdWxhdGVHcmlkIiwiZ3JpZCIsImdldEVsZW1lbnRCeUlkIiwiX2xvb3BfMSIsImdyaWRIdG1sIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbmNsaWNrIiwiZ2FtZUNsaWNrZWQiLCJpbm5lckhUTUwiLCJhcHBlbmRDaGlsZCIsIl9DYXJvdXNlbF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX0xpYnJhcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsImhvbWUiLCJsb2FkIiwiaW5wdXQiLCJmb2N1cyIsInJlcXVpcmUiXSwibWFwcGluZ3MiOiJhQUNBLElBQUFBLEVBQUEsR0FHQSxTQUFB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QyxjQUNBb0IsR0FBQSwrR0FDQUMsRUFBQUssVUFBQU4sRUFDQSxNQUFBSCxHQUNBQSxFQUFBVSxZQUFBTixJQUVBN0csRUFBQSxFQUFtQkEsRUFBQWdELEVBQUFDLE9BQWtCakQsSUFDckMyRyxJQWxCQS9HLEVBQUFVLEVBQUEwQixFQUFBLGlDQUFBd0UsdUVDQUE1RyxFQUFBa0IsRUFBQWtCLEdBQUEsSUFBQW9GLEVBQUF4SCxFQUFBLEdBQUF5SCxFQUFBekgsRUFBQSxHQVNBLFNBQUEwSCxJQUNBOUUsRUFBQSxZQUFBK0UsS0FBQSxpQ0FDUTdHLE9BQUEwRyxFQUFBLE1BQUExRyxHQUNBQSxPQUFBMkcsRUFBQSxhQUFBM0csS0FFUjRCLFNBQUFvRSxlQUFBLFNBQUFRLFVBQUEsTUFYQTFFLEVBQUEsV0FDQThFLElBQ0FoRixTQUFBb0UsZUFBQSxTQUFBTSxRQUFBLFdBQTRETSxLQUM1RGhGLFNBQUFvRSxlQUFBLGFBQUFNLFFBQUEsV0FVQSxJQUNBUSxLQUFBbEYsU0FBQW9FLGVBQUEsZ0JBQ0F6RixNQUFBLEdBQ0F1RyxFQUFBQyxTQVpBbkYsU0FBQW9FLGVBQUEsZUFBQU0sUUFBQSxXQWVBeEUsRUFBQSxZQUFBK0UsS0FBQSx3Q0FFQWpGLFNBQUFvRSxlQUFBLFNBQUFRLFVBQUEsc0RBRUF0SCxFQUFRLEdBQ1JBLEVBQVEsa0JDM0JSRyxFQUFBRCxRQUFBNEgsUUFBQSwyQkNBQTNILEVBQUFELFFBQUE0SCxRQUFBLHVCQ0FBM0gsRUFBQUQsUUFBQTRILFFBQUEiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMyk7XG4iLCJ2YXIgc2VsZWN0ZWRJbmRleCA9IDA7XG52YXIgY2Fyb3VzZWw7XG52YXIgYW5nbGUgPSAwO1xudmFyIGNsaWVudFRva2VuID0gXCI3NjU2MTE5ODI1MDIyMzE3NFwiO1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIGNhcm91c2VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jYXJvdXNlbFwiKTtcbiAgICAkLmdldEpTT04oXCJodHRwOi8vYXBpLnN0ZWFtcG93ZXJlZC5jb20vSVBsYXllclNlcnZpY2UvR2V0UmVjZW50bHlQbGF5ZWRHYW1lcy92MDAwMS8/a2V5PTdDMjE4RThEMTM0N0MzQ0Q2Q0I4MTE3RTVFRDUzM0JDJnN0ZWFtaWQ9XCIgKyBjbGllbnRUb2tlbiArIFwiJmZvcm1hdD1qc29uXCIsIEpTT04sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLnJlc3BvbnNlLnRvdGFsX2NvdW50ID09IDApIHsgLy8gbnVsbCBjaGVjayB0byBwcmV2ZW50IGVycm9yXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vIHJlY2VudCBwbGF5ZWQgZ2FtZXNcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIFNlbGVjdGVkUmVjZW50R2FtZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaV8xID0gMDsgaV8xIDwgZGF0YS5yZXNwb25zZS5nYW1lcy5sZW5ndGg7IGlfMSsrKSB7XG4gICAgICAgICAgICB2YXIgZ2FtZSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV8xXTtcbiAgICAgICAgICAgIFNlbGVjdGVkUmVjZW50R2FtZXNbaV8xXSA9IG5ldyBHYW1lTWV0YShnYW1lLkFwcElkLCBnYW1lLm5hbWUsIGdhbWUuaW1nX2ljb25fdXJsKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNhcm91c2VsX19jZWxsXCIpOyAvL2FzIGFueSBiZWNhdXNlIHdlIHdhbnQgYSBIVE1MaW1hZ2UgY29sbGVjdGlvbiBhbmQgaHRtbGVsZW1lbnQgaXMgbm90IGdlbmVyaWNcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSAvL2xvb3AgaW50byBjYXJvdXNlbF9jZWxsIHRvIGFkZCBldmVudCBsaXN0ZW5lclxuICAgICAgICAge1xuICAgICAgICAgICAgbGlzdFtpXS5zcmMgPSBTZWxlY3RlZFJlY2VudEdhbWVzW2ldLnRodW1iO1xuICAgICAgICAgICAgbGlzdFtpXS5kYXRhc2V0LmdhbWUgPSBTZWxlY3RlZFJlY2VudEdhbWVzW2ldLkFwcElkO1xuICAgICAgICAgICAgbGlzdFtpXS5pZCA9IGkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGxpc3RbaV0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXYgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgcm90YXRlQ2Fyb3VzZWwoZXYpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcm90YXRlQ2Fyb3VzZWwodGFyZ2V0KSB7XG4gICAgYW5nbGUgPSAoc2VsZWN0ZWRJbmRleCAtIHRhcmdldC5pZCkgKiAyMCArIGFuZ2xlOyAvLyoyMCB0byBjb252ZXJ0IGluIGFuZ2xlXG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPT0gdGFyZ2V0LmlkKSB7XG4gICAgICAgIExhdW5jaEdhbWUodGFyZ2V0LmRhdGFzZXQuZ2FtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2Fyb3VzZWwuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGVaKC04ODBweCkgcm90YXRlWShcIiArIGFuZ2xlICsgXCJkZWcpXCI7XG4gICAgc2VsZWN0ZWRJbmRleCA9IHRhcmdldC5pZDtcbn1cbmZ1bmN0aW9uIExhdW5jaEdhbWUoZ2FtZSkge1xuICAgIGNvbnNvbGUubG9nKGdhbWUpO1xufVxudmFyIEdhbWVNZXRhID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdhbWVNZXRhKEFwcElkLCBuYW1lLCB0aHVtYikge1xuICAgICAgICB0aGlzLkFwcElkID0gQXBwSWQ7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMudGh1bWIgPSB0aHVtYjtcbiAgICB9XG4gICAgcmV0dXJuIEdhbWVNZXRhO1xufSgpKTtcbiIsImNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XG5cbmNsYXNzIFN0b3JlXG57ICAgIFxuICAgIGNvbnN0cnVjdG9yKG5hbWUpXG4gICAge1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oKGVsZWN0cm9uLmFwcCB8fCBlbGVjdHJvbi5yZW1vdGUuYXBwKS5nZXRQYXRoKFwidXNlckRhdGFcIiksIG5hbWUgKyBcIi5qc29uXCIpO1xuICAgICAgICB0aGlzLmRhdGEgPSByZWFkRmlsZSh0aGlzLnBhdGgpO1xuICAgIH1cblxuICAgIGdldChrZXkpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW2tleV07XG4gICAgfVxuXG4gICAgc2V0KGtleSwgdmFsdWUpXG4gICAge1xuICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMucGF0aCwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkRmlsZShwYXRoKVxue1xuICAgIHRyeVxuICAgIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGgpKTtcbiAgICB9XG4gICAgY2F0Y2hcbiAgICB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3RvcmU7IiwidmFyIEdhbWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gR2FtZShuYW1lLCBhcHBpZCwgdGh1bWJuYWlsLCBsYXVuY2hlciwgbGF1bmNoZXJJRCwgaXNJbnN0YWxsZWQsIGxvY2FsUGF0aCkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmFwcGlkID0gYXBwaWQ7XG4gICAgICAgIHRoaXMudGh1bWJuYWlsID0gdGh1bWJuYWlsO1xuICAgICAgICB0aGlzLmxhdW5jaGVyID0gbGF1bmNoZXI7XG4gICAgICAgIHRoaXMubGF1bmNoZXJJRCA9IGxhdW5jaGVySUQ7XG4gICAgICAgIHRoaXMuaXNJbnN0YWxsZWQgPSBpc0luc3RhbGxlZDtcbiAgICAgICAgdGhpcy5sb2NhbFBhdGggPSBsb2NhbFBhdGg7XG4gICAgfVxuICAgIHJldHVybiBHYW1lO1xufSgpKTtcbmV4cG9ydCB7IEdhbWUgfTtcbmV4cG9ydCB2YXIgbGF1bmNoZXI7XG4oZnVuY3Rpb24gKGxhdW5jaGVyKSB7XG4gICAgbGF1bmNoZXJbbGF1bmNoZXJbXCJMb2NhbE9ubHlcIl0gPSAwXSA9IFwiTG9jYWxPbmx5XCI7XG4gICAgbGF1bmNoZXJbbGF1bmNoZXJbXCJTdGVhbVwiXSA9IDFdID0gXCJTdGVhbVwiO1xufSkobGF1bmNoZXIgfHwgKGxhdW5jaGVyID0ge30pKTtcbiIsInZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcbmltcG9ydCAqIGFzIFRva2VuTWFuYWdlciBmcm9tIFwiLi9Ub2tlbk1hbmFnZXJcIjtcbmltcG9ydCB7IEdhbWUsIGxhdW5jaGVyIH0gZnJvbSBcIi4vR2FtZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIExvYWRHYW1lcygpIHtcbiAgICB2YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XG4gICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgICB2YXIgaXNFbGVjdHJvbiA9IHVzZXJBZ2VudC5pbmRleE9mKFwiIGVsZWN0cm9uL1wiKSA+IC0xO1xuICAgIGlmIChpc0VsZWN0cm9uKSB7XG4gICAgICAgIHZhciBzdG9yZSA9IG5ldyBTdG9yZShcIkdhbWVzXCIpO1xuICAgICAgICByZXR1cm4gc3RvcmUuZ2V0KFwiZ2FtZXNcIik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFHRU5UIElTIE5PVCBFTEVDVFJPTiwgTk8gSEFORExJTkcgRk9SIE5PV1wiKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIFVwZGF0ZUdhbWVzSlNPTigpIHtcbiAgICBBZGRTdGVhbUdhbWVzKCk7XG59XG4vLyNyZWdpb24gU3RlYW1SZXF1ZXN0c1xuZnVuY3Rpb24gQWRkU3RlYW1HYW1lcygpIHtcbiAgICB2YXIgc3RlYW1Ub2tlbiA9IFRva2VuTWFuYWdlci5nZXRTdGVhbVRva2VuKCk7XG4gICAgJC5nZXQoXCJodHRwczovL2FwaS5zdGVhbXBvd2VyZWQuY29tL0lQbGF5ZXJTZXJ2aWNlL0dldE93bmVkR2FtZXMvdjEvXCIgK1xuICAgICAgICBcIj9rZXk9N0MyMThFOEQxMzQ3QzNDRDZDQjgxMTdFNUVENTMzQkNcIiArXG4gICAgICAgIFwiJnN0ZWFtaWQ9XCIgKyBzdGVhbVRva2VuICtcbiAgICAgICAgXCImaW5jbHVkZV9hcHBpbmZvPTFcIiArXG4gICAgICAgIFwiJmluY2x1ZGVfcGxheWVkX2ZyZWVfZ2FtZXM9MVwiICtcbiAgICAgICAgXCImYXBwaWRzX2ZpbHRlcj0mZm9ybWF0PWpzb25cIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIGdhbWVzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5yZXNwb25zZS5nYW1lX2NvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBnYW1lRGF0YSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV07XG4gICAgICAgICAgICB2YXIgdGh1bWJuYWlsID0gXCJodHRwczovL3N0ZWFtY2RuLWEuYWthbWFpaGQubmV0L3N0ZWFtL2FwcHMvXCIgKyBnYW1lRGF0YS5hcHBpZCArIFwiL2hlYWRlci5qcGdcIjtcbiAgICAgICAgICAgIGdhbWVzW2ldID0gbmV3IEdhbWUoZ2FtZURhdGEubmFtZSwgZ2FtZURhdGEuYXBwaWQsIHRodW1ibmFpbCwgbGF1bmNoZXIuU3RlYW0sIG51bGwsIHRydWUsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIC8vU2hvdWxkIHVzZSBhIGNvb2tpZSBpZiB0aGUgdXNlciBpcyBpbiB0aGUgYnJvd3NlclxuICAgICAgICB2YXIgc3RvcmUgPSBuZXcgU3RvcmUoXCJHYW1lc1wiKTtcbiAgICAgICAgc3RvcmUuc2V0KFwiZ2FtZXNcIiwgZ2FtZXMpOyAvL1NIT1VMRE4nVCBETyBJVCBMSUtFIFRIQVQsIEl0IG92ZXJyaWRlIGV2ZXJ5IGdhbWVzIGluIHRoZSBqc29uLlxuICAgIH0pO1xufVxuLy8jZW5kcmVnaW9uXG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0U3RlYW1Ub2tlbigpIHtcbiAgICB2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnNvbGUubG9nKFwiQWdlbnQ6IFwiICsgdXNlckFnZW50KTtcbiAgICB2YXIgaXNFbGVjdHJvbiA9IHVzZXJBZ2VudC5pbmRleE9mKFwiIGVsZWN0cm9uL1wiKSA+IC0xO1xuICAgIGlmIChpc0VsZWN0cm9uKSB7XG4gICAgICAgIHZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcbiAgICAgICAgdmFyIHRrblN0b3JlID0gbmV3IFN0b3JlKFwiYWNjb3VudFwiKTtcbiAgICAgICAgdmFyIHRrbiA9IHRrblN0b3JlLmdldChcInN0ZWFtXCIpO1xuICAgICAgICByZXR1cm4gdGtuICE9IG51bGwgPyB0a24gOiBcIjc2NTYxMTk4MjUwMjIzMTc0XCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkFHRU5UIElTIE5PVCBFTEVDVFJPTiwgTk8gSEFORExJTkcgRk9SIE5PV1wiKTtcbiAgICAgICAgcmV0dXJuIFwiNzY1NjExOTgyNTAyMjMxNzRcIjsgLy9BIGRlZmF1bHQgc3RlYW0gY2xpZW50IGlkIChmb3IgdGVzdGluZyBvbmx5KVxuICAgIH1cbn1cbiIsImltcG9ydCB7IExvYWRHYW1lcywgVXBkYXRlR2FtZXNKU09OIH0gZnJvbSBcIi4vR2FtZUxvYWRlclwiO1xuZXhwb3J0IGZ1bmN0aW9uIHBvcHVsYXRlR3JpZCgpIHtcbiAgICB2YXIgZ2FtZXMgPSBMb2FkR2FtZXMoKTtcbiAgICBVcGRhdGVHYW1lc0pTT04oKTtcbiAgICB2YXIgZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGlicmFyeVwiKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGdhbWUgPSBnYW1lc1tpXTtcbiAgICAgICAgdmFyIGdyaWRIdG1sID0gXCI8aW1nIHNyYz0nXCIgKyBnYW1lLnRodW1ibmFpbCArIFwiJy8+IDxwPlwiICsgZ2FtZS5uYW1lICsgXCI8L3A+XCI7XG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBcImdhbWVcIjtcbiAgICAgICAgZWxlbWVudC5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBvbkdhbWVDbGljayhnYW1lKTsgfTtcbiAgICAgICAgaWYgKGdhbWUuaXNJbnN0YWxsZWQpXG4gICAgICAgICAgICBncmlkSHRtbCArPSAnPGltZyBzcmM9XCIuLi8uLi9kaXN0L2RyYXdhYmxlcy9pbnN0YWxsZWQuc3ZnXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IHBhZGRpbmc6IDVweDtcIi8+JztcbiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBncmlkSHRtbDtcbiAgICAgICAgaWYgKGdyaWQgIT0gbnVsbClcbiAgICAgICAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdhbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIF9sb29wXzEoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBvbkdhbWVDbGljayhnYW1lQ2xpY2tlZCkge1xuICAgIGNvbnNvbGUubG9nKGdhbWVDbGlja2VkLm5hbWUpO1xufVxuIiwiLy8gaW1wb3J0ICQgZnJvbSBcImpxdWVyeVwiOyAvL1VzaW5nIGdsb2JhbCBzY29wZSBqcXVlcnkgaW5zdGVhZCBiZWFjYXVzZSBpdCBtYWtlIGEgaHVnZSBmaWxlIGlmIHdlIHVzZSB0aGlzLlxuaW1wb3J0IHsgc2V0dXAgfSBmcm9tIFwiLi9DYXJvdXNlbFwiO1xuaW1wb3J0IHsgcG9wdWxhdGVHcmlkIH0gZnJvbSBcIi4vTGlicmFyeVwiO1xuJChmdW5jdGlvbiAoKSB7XG4gICAgaG9tZSgpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgaG9tZSgpOyB9O1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2VhcmNoQnRuXCIpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG9wZW5TZWFyY2goKTsgfTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNldHRpbmdzQnRuXCIpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG9wZW5TZXR0aW5ncygpOyB9O1xufSk7XG5mdW5jdGlvbiBob21lKCkge1xuICAgICQoXCIjY29udGVudFwiKS5sb2FkKFwiZnJhZ21lbnRzL2hvbWUuaHRtbFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldHVwKCk7XG4gICAgICAgIHBvcHVsYXRlR3JpZCgpO1xuICAgIH0pO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCJFQVVcIjtcbn1cbmZ1bmN0aW9uIG9wZW5TZWFyY2goKSB7XG4gICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hJbnB1dFwiKTtcbiAgICBpbnB1dC52YWx1ZSA9IFwiXCI7XG4gICAgaW5wdXQuZm9jdXMoKTtcbn1cbmZ1bmN0aW9uIG9wZW5TZXR0aW5ncygpIHtcbiAgICAkKFwiI2NvbnRlbnRcIikubG9hZChcImZyYWdtZW50cy9zZXR0aW5ncy5odG1sXCIsIGZ1bmN0aW9uICgpIHtcbiAgICB9KTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRpdGxlXCIpLmlubmVySFRNTCA9IFwiPGkgY2xhc3M9J2ljb24gZmFzIGZhLWFycm93LWxlZnQnPjwvaT4gIFNldHRpbmdzXCI7XG59XG5yZXF1aXJlKFwiLi9MaWJyYXJ5XCIpO1xucmVxdWlyZShcIi4vQ2Fyb3VzZWxcIik7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZzXCIpOyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +!function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){"use strict";n.r(t),n.d(t,"setup",function(){return c});var a,r,o=5,i=0,s="76561198196430655";function c(){o=0,a=document.querySelector(".carousel"),$.getJSON("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+s+"&format=json",JSON,function(e){if(0!=e.response.total_count)for(var t=[],n=0;n-1){var t=new(n(1))("account").get("steam");return null!=t?t:"76561198250223174"}return console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),"76561198250223174"}(),$.get("https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+e+"&include_appinfo=1&include_played_free_games=1&appids_filter=&format=json",function(e){for(var t=[],n=0;n-1?new e("Games").get("games"):(console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),null));i();for(var a=document.getElementById("library"),r=function(){var e=t[o],n="

"+e.name+"

",r=document.createElement("div");r.className="game",r.onclick=function(){var t;t=e,console.log(t.name)},e.isInstalled&&(n+=''),r.innerHTML=n,null!=a&&a.appendChild(r)},o=0;o Settings"}}),n(2),n(0)},function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0Nhcm91c2VsLnRzIiwid2VicGFjazovLy8uL3NyYy9qcy9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvR2FtZS50cyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvR2FtZUxvYWRlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvdHMvVG9rZW5NYW5hZ2VyLnRzIiwid2VicGFjazovLy8uL3NyYy90cy9MaWJyYXJ5LnRzIiwid2VicGFjazovLy8uL3NyYy90cy9pbmRleC50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJlbGVjdHJvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJmc1wiIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsInNldHVwIiwiY2Fyb3VzZWwiLCJsYXN0c2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiYW5nbGUiLCJjbGllbnRUb2tlbiIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIiQiLCJnZXRKU09OIiwiSlNPTiIsImRhdGEiLCJyZXNwb25zZSIsInRvdGFsX2NvdW50IiwiU2VsZWN0ZWRSZWNlbnRHYW1lcyIsImdhbWUiLCJnYW1lcyIsIkdhbWVNZXRhIiwiYXBwaWQiLCJpbWdfbG9nb191cmwiLCJpbmlDYWxsYmFjayIsImNvbnNvbGUiLCJsb2ciLCJsaXN0IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImxlbmd0aCIsInNyYyIsIkFwcElkIiwiZGF0YXNldCIsImlkIiwidG9TdHJpbmciLCJhZGRFdmVudExpc3RlbmVyIiwicm90YXRlQ2Fyb3VzZWwiLCJldmVudCIsInRhcmdldCIsImNsYXNzTGlzdCIsImFkZCIsImVsIiwiY3JlYXRlRWxlbWVudCIsIk1hdGgiLCJyb3VuZCIsInJlbW92ZSIsImJ5cGFzcyIsInN0eWxlIiwidHJhbnNmb3JtIiwidGh1bWIiLCJ0aGlzIiwiZWxlY3Ryb24iLCJwYXRoIiwiZnMiLCJbb2JqZWN0IE9iamVjdF0iLCJqb2luIiwiYXBwIiwicmVtb3RlIiwiZ2V0UGF0aCIsInBhcnNlIiwicmVhZEZpbGVTeW5jIiwicmVhZEZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwic3RyaW5naWZ5IiwibGF1bmNoZXIiLCJHYW1lIiwidGh1bWJuYWlsIiwibGF1bmNoZXJJRCIsImlzSW5zdGFsbGVkIiwibG9jYWxQYXRoIiwiU3RvcmUiLCJVcGRhdGVHYW1lc0pTT04iLCJzdGVhbVRva2VuIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwidGtuIiwiZ2V0U3RlYW1Ub2tlbiIsImdhbWVfY291bnQiLCJnYW1lRGF0YSIsIlN0ZWFtIiwic3RvcmUiLCJzZXQiLCJwb3B1bGF0ZUdyaWQiLCJncmlkIiwiZ2V0RWxlbWVudEJ5SWQiLCJfbG9vcF8xIiwiZ3JpZEh0bWwiLCJlbGVtZW50IiwiY2xhc3NOYW1lIiwib25jbGljayIsImdhbWVDbGlja2VkIiwiaW5uZXJIVE1MIiwiYXBwZW5kQ2hpbGQiLCJfQ2Fyb3VzZWxfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9MaWJyYXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18i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LGdCQUNBbEcsTUFBQSxHQUNBK0csRUFBQUMsU0FaQTFGLFNBQUE0RSxlQUFBLGVBQUFLLFFBQUEsV0FlQS9FLEVBQUEsWUFBQXNGLEtBQUEsd0NBRUF4RixTQUFBNEUsZUFBQSxTQUFBTyxVQUFBLHNEQUVBOUgsRUFBUSxHQUNSQSxFQUFRLGtCQzNCUkcsRUFBQUQsUUFBQW9JLFFBQUEsMkJDQUFuSSxFQUFBRCxRQUFBb0ksUUFBQSx1QkNBQW5JLEVBQUFELFFBQUFvSSxRQUFBIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDMpO1xuIiwidmFyIHNlbGVjdGVkSW5kZXggPSA1O1xyXG52YXIgY2Fyb3VzZWw7XHJcbnZhciBhbmdsZSA9IDA7XHJcbnZhciBjbGllbnRUb2tlbiA9IFwiNzY1NjExOTgxOTY0MzA2NTVcIjtcclxudmFyIFNlbGVjdGVkUmVjZW50R2FtZXMgPSBbXTtcclxudmFyIGxhc3RzZWxlY3RlZDtcclxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKCkge1xyXG4gICAgc2VsZWN0ZWRJbmRleCA9IDA7XHJcbiAgICAvL0dldCByZWNlbnQgcGxheWVkIGdhbWUgZnJvbSBzdGVhbS8vXHJcbiAgICBjYXJvdXNlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2Fyb3VzZWxcIik7XHJcbiAgICAkLmdldEpTT04oXCJodHRwOi8vYXBpLnN0ZWFtcG93ZXJlZC5jb20vSVBsYXllclNlcnZpY2UvR2V0UmVjZW50bHlQbGF5ZWRHYW1lcy92MDAwMS8/a2V5PTdDMjE4RThEMTM0N0MzQ0Q2Q0I4MTE3RTVFRDUzM0JDJnN0ZWFtaWQ9XCIgKyBjbGllbnRUb2tlbiArIFwiJmZvcm1hdD1qc29uXCIsIEpTT04sIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgaWYgKGRhdGEucmVzcG9uc2UudG90YWxfY291bnQgPT0gMCkgeyAvLyBudWxsIGNoZWNrIHRvIHByZXZlbnQgZXJyb3IgdGhlcmUgaXMgbm8gcmVjZW50IGdhbWVcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJubyByZWNlbnQgcGxheWVkIGdhbWVzXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBTZWxlY3RlZFJlY2VudEdhbWVzID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLnJlc3BvbnNlLnRvdGFsX2NvdW50OyBpKyspIC8vT2JqZWN0LmtleXMoZGF0YS5yZXNwb25zZS5nYW1lc1swXSkgY29tcHRlIGxlIG5vbWJyZSBkZSBjbMOpIGEgcGFydGlyIGRlIDBcclxuICAgICAgICAge1xyXG4gICAgICAgICAgICB2YXIgZ2FtZSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV07XHJcbiAgICAgICAgICAgIFNlbGVjdGVkUmVjZW50R2FtZXNbaV0gPSBuZXcgR2FtZU1ldGEoZ2FtZS5hcHBpZCwgZ2FtZS5uYW1lLCBnYW1lLmltZ19sb2dvX3VybCk7XHJcbiAgICAgICAgICAgIGlmIChpICsgMSA9PSBkYXRhLnJlc3BvbnNlLnRvdGFsX2NvdW50KSB7XHJcbiAgICAgICAgICAgICAgICBpbmlDYWxsYmFjayhTZWxlY3RlZFJlY2VudEdhbWVzKTtcclxuICAgICAgICAgICAgfSAvL2xhdW5jaCBzY3JpcHQgdXNlciB2YXJpYWJsZSBhZnRlciBhbGwgY2FsbGJhY2tzIGFyZSBmaW5pc2hlZFxyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGluaUNhbGxiYWNrKFNlbGVjdGVkUmVjZW50R2FtZXMpIHtcclxuICAgIC8vQWRkIHJlY2VudCBwbGF5ZWQgZ2FtZSB0byBjYXJvdXNlbC8vXHJcbiAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjYXJvdXNlbF9fY2VsbFwiKTsgLy9hcyBhbnkgYmVjYXVzZSB3ZSB3YW50IGEgSFRNTGltYWdlIGNvbGxlY3Rpb24gYW5kIGh0bWxlbGVtZW50IGlzIG5vdCBnZW5lcmljXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIC8vbG9vcCBpbnRvIGNhcm91c2VsX2NlbGwgdG8gYWRkIGV2ZW50IGxpc3RlbmVyICsgdGh1bWJcclxuICAgICB7XHJcbiAgICAgICAgaWYgKGkgPCBTZWxlY3RlZFJlY2VudEdhbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsaXN0W2ldLnNyYyA9IFwiaHR0cHM6Ly9zdGVhbWNkbi1hLmFrYW1haWhkLm5ldC9zdGVhbS9hcHBzL1wiICsgU2VsZWN0ZWRSZWNlbnRHYW1lc1tpXS5BcHBJZCArIFwiL2hlYWRlci5qcGdcIjtcclxuICAgICAgICAgICAgbGlzdFtpXS5kYXRhc2V0LmdhbWUgPSBTZWxlY3RlZFJlY2VudEdhbWVzW2ldLkFwcElkO1xyXG4gICAgICAgICAgICBsaXN0W2ldLmlkID0gaS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICBsaXN0W2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXYgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgICAgICByb3RhdGVDYXJvdXNlbChldiwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxpc3RbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ1VzZWxlc3MtZGl2Jyk7XHJcbiAgICBlbC5pZCA9IE1hdGgucm91bmQoU2VsZWN0ZWRSZWNlbnRHYW1lcy5sZW5ndGggLyAyKS50b1N0cmluZygpOyAvLyB0cmljayB0aGUgY2Fyb3VzZWxyb2F0ZSB0byB3b3JrIGV2ZW4gd2lob3V0IGEgVGFyZ2V0RXZlbnQgcmVmZXJlbmNlXHJcbiAgICByb3RhdGVDYXJvdXNlbChlbCwgZmFsc2UpO1xyXG4gICAgZWwucmVtb3ZlO1xyXG59XHJcbmZ1bmN0aW9uIHJvdGF0ZUNhcm91c2VsKHRhcmdldCwgYnlwYXNzKSB7XHJcbiAgICBpZiAobGFzdHNlbGVjdGVkID09IG51bGwpIHtcclxuICAgICAgICBsYXN0c2VsZWN0ZWQgPSB0YXJnZXQ7XHJcbiAgICB9XHJcbiAgICBpZiAobGFzdHNlbGVjdGVkICE9IHRhcmdldCkge1xyXG4gICAgICAgIGxhc3RzZWxlY3RlZC5jbGFzc0xpc3QucmVtb3ZlKFwiaGlnbGlnaHRcIik7XHJcbiAgICB9XHJcbiAgICBhbmdsZSA9IChzZWxlY3RlZEluZGV4IC0gdGFyZ2V0LmlkKSAqIDQwICsgYW5nbGU7IC8vKjQwIHRvIGNvbnZlcnQgaW4gYW5nbGUgc3RlcFxyXG4gICAgLy9MYXVuY2ggdGhlIGdhbWUgb24gdGhlIGZyb250IG9mIHRoZSBjYXJvdXNlbFxyXG4gICAgaWYgKHNlbGVjdGVkSW5kZXggPT0gdGFyZ2V0LmlkICYmIGJ5cGFzcyA9PSBmYWxzZSkgLy8gdGhlIGJ5cGFzcyBpcyBmb3IgaW5pXHJcbiAgICAge1xyXG4gICAgICAgIExhdW5jaEdhbWUodGFyZ2V0LmRhdGFzZXQuZ2FtZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJoaWdsaWdodFwiKTsgLy8gbWFrZSB0aGUgY2VudHJhbCBjZWxsIGJpZ2dlclxyXG4gICAgY29uc29sZS5sb2coXCJsYXN0IHNlbGVjdGVkIFwiICsgbGFzdHNlbGVjdGVkLmlkKTtcclxuICAgIGNhcm91c2VsLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlWigtMTAwMHB4KSByb3RhdGVZKFwiICsgYW5nbGUgKyBcImRlZylcIjtcclxuICAgIHNlbGVjdGVkSW5kZXggPSB0YXJnZXQuaWQ7XHJcbiAgICBsYXN0c2VsZWN0ZWQgPSB0YXJnZXQ7XHJcbn1cclxuZnVuY3Rpb24gTGF1bmNoR2FtZShnYW1lKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImxhdW5jaCBnYW1lXCIgKyBnYW1lKTtcclxufVxyXG52YXIgR2FtZU1ldGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBHYW1lTWV0YShBcHBJZCwgbmFtZSwgdGh1bWIpIHtcclxuICAgICAgICB0aGlzLkFwcElkID0gQXBwSWQ7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLnRodW1iID0gdGh1bWI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gR2FtZU1ldGE7XHJcbn0oKSk7XHJcbiIsImNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5cclxuY2xhc3MgU3RvcmVcclxueyAgICBcclxuICAgIGNvbnN0cnVjdG9yKG5hbWUpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKChlbGVjdHJvbi5hcHAgfHwgZWxlY3Ryb24ucmVtb3RlLmFwcCkuZ2V0UGF0aChcInVzZXJEYXRhXCIpLCBuYW1lICsgXCIuanNvblwiKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSByZWFkRmlsZSh0aGlzLnBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldChrZXkpXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVtrZXldO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChrZXksIHZhbHVlKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLnBhdGgsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkRmlsZShwYXRoKVxyXG57XHJcbiAgICB0cnlcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aCkpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2hcclxuICAgIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gU3RvcmU7IiwidmFyIEdhbWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBHYW1lKG5hbWUsIGFwcGlkLCB0aHVtYm5haWwsIGxhdW5jaGVyLCBsYXVuY2hlcklELCBpc0luc3RhbGxlZCwgbG9jYWxQYXRoKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmFwcGlkID0gYXBwaWQ7XHJcbiAgICAgICAgdGhpcy50aHVtYm5haWwgPSB0aHVtYm5haWw7XHJcbiAgICAgICAgdGhpcy5sYXVuY2hlciA9IGxhdW5jaGVyO1xyXG4gICAgICAgIHRoaXMubGF1bmNoZXJJRCA9IGxhdW5jaGVySUQ7XHJcbiAgICAgICAgdGhpcy5pc0luc3RhbGxlZCA9IGlzSW5zdGFsbGVkO1xyXG4gICAgICAgIHRoaXMubG9jYWxQYXRoID0gbG9jYWxQYXRoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEdhbWU7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEdhbWUgfTtcclxuZXhwb3J0IHZhciBsYXVuY2hlcjtcclxuKGZ1bmN0aW9uIChsYXVuY2hlcikge1xyXG4gICAgbGF1bmNoZXJbbGF1bmNoZXJbXCJMb2NhbE9ubHlcIl0gPSAwXSA9IFwiTG9jYWxPbmx5XCI7XHJcbiAgICBsYXVuY2hlcltsYXVuY2hlcltcIlN0ZWFtXCJdID0gMV0gPSBcIlN0ZWFtXCI7XHJcbn0pKGxhdW5jaGVyIHx8IChsYXVuY2hlciA9IHt9KSk7XHJcbiIsInZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcclxuaW1wb3J0ICogYXMgVG9rZW5NYW5hZ2VyIGZyb20gXCIuL1Rva2VuTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBHYW1lLCBsYXVuY2hlciB9IGZyb20gXCIuL0dhbWVcIjtcclxuZXhwb3J0IGZ1bmN0aW9uIExvYWRHYW1lcygpIHtcclxuICAgIHZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcclxuICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB2YXIgaXNFbGVjdHJvbiA9IHVzZXJBZ2VudC5pbmRleE9mKFwiIGVsZWN0cm9uL1wiKSA+IC0xO1xyXG4gICAgaWYgKGlzRWxlY3Ryb24pIHtcclxuICAgICAgICB2YXIgc3RvcmUgPSBuZXcgU3RvcmUoXCJHYW1lc1wiKTtcclxuICAgICAgICByZXR1cm4gc3RvcmUuZ2V0KFwiZ2FtZXNcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkFHRU5UIElTIE5PVCBFTEVDVFJPTiwgTk8gSEFORExJTkcgRk9SIE5PV1wiKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gVXBkYXRlR2FtZXNKU09OKCkge1xyXG4gICAgQWRkU3RlYW1HYW1lcygpO1xyXG59XHJcbi8vI3JlZ2lvbiBTdGVhbVJlcXVlc3RzXHJcbmZ1bmN0aW9uIEFkZFN0ZWFtR2FtZXMoKSB7XHJcbiAgICB2YXIgc3RlYW1Ub2tlbiA9IFRva2VuTWFuYWdlci5nZXRTdGVhbVRva2VuKCk7XHJcbiAgICAkLmdldChcImh0dHBzOi8vYXBpLnN0ZWFtcG93ZXJlZC5jb20vSVBsYXllclNlcnZpY2UvR2V0T3duZWRHYW1lcy92MS9cIiArXHJcbiAgICAgICAgXCI/a2V5PTdDMjE4RThEMTM0N0MzQ0Q2Q0I4MTE3RTVFRDUzM0JDXCIgK1xyXG4gICAgICAgIFwiJnN0ZWFtaWQ9XCIgKyBzdGVhbVRva2VuICtcclxuICAgICAgICBcIiZpbmNsdWRlX2FwcGluZm89MVwiICtcclxuICAgICAgICBcIiZpbmNsdWRlX3BsYXllZF9mcmVlX2dhbWVzPTFcIiArXHJcbiAgICAgICAgXCImYXBwaWRzX2ZpbHRlcj0mZm9ybWF0PWpzb25cIiwgZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICB2YXIgZ2FtZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEucmVzcG9uc2UuZ2FtZV9jb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBnYW1lRGF0YSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV07XHJcbiAgICAgICAgICAgIHZhciB0aHVtYm5haWwgPSBcImh0dHBzOi8vc3RlYW1jZG4tYS5ha2FtYWloZC5uZXQvc3RlYW0vYXBwcy9cIiArIGdhbWVEYXRhLmFwcGlkICsgXCIvaGVhZGVyLmpwZ1wiO1xyXG4gICAgICAgICAgICBnYW1lc1tpXSA9IG5ldyBHYW1lKGdhbWVEYXRhLm5hbWUsIGdhbWVEYXRhLmFwcGlkLCB0aHVtYm5haWwsIGxhdW5jaGVyLlN0ZWFtLCBudWxsLCB0cnVlLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9TaG91bGQgdXNlIGEgY29va2llIGlmIHRoZSB1c2VyIGlzIGluIHRoZSBicm93c2VyXHJcbiAgICAgICAgdmFyIHN0b3JlID0gbmV3IFN0b3JlKFwiR2FtZXNcIik7XHJcbiAgICAgICAgc3RvcmUuc2V0KFwiZ2FtZXNcIiwgZ2FtZXMpOyAvL1NIT1VMRE4nVCBETyBJVCBMSUtFIFRIQVQsIEl0IG92ZXJyaWRlIGV2ZXJ5IGdhbWVzIGluIHRoZSBqc29uLlxyXG4gICAgfSk7XHJcbn1cclxuLy8jZW5kcmVnaW9uXHJcbiIsImV4cG9ydCBmdW5jdGlvbiBnZXRTdGVhbVRva2VuKCkge1xyXG4gICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnNvbGUubG9nKFwiQWdlbnQ6IFwiICsgdXNlckFnZW50KTtcclxuICAgIHZhciBpc0VsZWN0cm9uID0gdXNlckFnZW50LmluZGV4T2YoXCIgZWxlY3Ryb24vXCIpID4gLTE7XHJcbiAgICBpZiAoaXNFbGVjdHJvbikge1xyXG4gICAgICAgIHZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcclxuICAgICAgICB2YXIgdGtuU3RvcmUgPSBuZXcgU3RvcmUoXCJhY2NvdW50XCIpO1xyXG4gICAgICAgIHZhciB0a24gPSB0a25TdG9yZS5nZXQoXCJzdGVhbVwiKTtcclxuICAgICAgICByZXR1cm4gdGtuICE9IG51bGwgPyB0a24gOiBcIjc2NTYxMTk4MjUwMjIzMTc0XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkFHRU5UIElTIE5PVCBFTEVDVFJPTiwgTk8gSEFORExJTkcgRk9SIE5PV1wiKTtcclxuICAgICAgICByZXR1cm4gXCI3NjU2MTE5ODI1MDIyMzE3NFwiOyAvL0EgZGVmYXVsdCBzdGVhbSBjbGllbnQgaWQgKGZvciB0ZXN0aW5nIG9ubHkpXHJcbiAgICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgTG9hZEdhbWVzLCBVcGRhdGVHYW1lc0pTT04gfSBmcm9tIFwiLi9HYW1lTG9hZGVyXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBwb3B1bGF0ZUdyaWQoKSB7XHJcbiAgICB2YXIgZ2FtZXMgPSBMb2FkR2FtZXMoKTtcclxuICAgIFVwZGF0ZUdhbWVzSlNPTigpO1xyXG4gICAgdmFyIGdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImxpYnJhcnlcIik7XHJcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgZ2FtZSA9IGdhbWVzW2ldO1xyXG4gICAgICAgIHZhciBncmlkSHRtbCA9IFwiPGltZyBzcmM9J1wiICsgZ2FtZS50aHVtYm5haWwgKyBcIicvPiA8cD5cIiArIGdhbWUubmFtZSArIFwiPC9wPlwiO1xyXG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IFwiZ2FtZVwiO1xyXG4gICAgICAgIGVsZW1lbnQub25jbGljayA9IGZ1bmN0aW9uICgpIHsgb25HYW1lQ2xpY2soZ2FtZSk7IH07XHJcbiAgICAgICAgaWYgKGdhbWUuaXNJbnN0YWxsZWQpXHJcbiAgICAgICAgICAgIGdyaWRIdG1sICs9ICc8aW1nIHNyYz1cIi4uLy4uL2Rpc3QvZHJhd2FibGVzL2luc3RhbGxlZC5zdmdcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgcGFkZGluZzogNXB4O1wiLz4nO1xyXG4gICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gZ3JpZEh0bWw7XHJcbiAgICAgICAgaWYgKGdyaWQgIT0gbnVsbClcclxuICAgICAgICAgICAgZ3JpZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuICAgIH07XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdhbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgX2xvb3BfMSgpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIG9uR2FtZUNsaWNrKGdhbWVDbGlja2VkKSB7XHJcbiAgICBjb25zb2xlLmxvZyhnYW1lQ2xpY2tlZC5uYW1lKTtcclxufVxyXG4iLCIvLyBpbXBvcnQgJCBmcm9tIFwianF1ZXJ5XCI7IC8vVXNpbmcgZ2xvYmFsIHNjb3BlIGpxdWVyeSBpbnN0ZWFkIGJlYWNhdXNlIGl0IG1ha2UgYSBodWdlIGZpbGUgaWYgd2UgdXNlIHRoaXMuXHJcbmltcG9ydCB7IHNldHVwIH0gZnJvbSBcIi4vQ2Fyb3VzZWxcIjtcclxuaW1wb3J0IHsgcG9wdWxhdGVHcmlkIH0gZnJvbSBcIi4vTGlicmFyeVwiO1xyXG4kKGZ1bmN0aW9uICgpIHtcclxuICAgIGhvbWUoKTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgaG9tZSgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hCdG5cIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgb3BlblNlYXJjaCgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZXR0aW5nc0J0blwiKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBvcGVuU2V0dGluZ3MoKTsgfTtcclxufSk7XHJcbmZ1bmN0aW9uIGhvbWUoKSB7XHJcbiAgICAkKFwiI2NvbnRlbnRcIikubG9hZChcImZyYWdtZW50cy9ob21lLmh0bWxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNldHVwKCk7XHJcbiAgICAgICAgcG9wdWxhdGVHcmlkKCk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCJFQVVcIjtcclxufVxyXG5mdW5jdGlvbiBvcGVuU2VhcmNoKCkge1xyXG4gICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hJbnB1dFwiKTtcclxuICAgIGlucHV0LnZhbHVlID0gXCJcIjtcclxuICAgIGlucHV0LmZvY3VzKCk7XHJcbn1cclxuZnVuY3Rpb24gb3BlblNldHRpbmdzKCkge1xyXG4gICAgJChcIiNjb250ZW50XCIpLmxvYWQoXCJmcmFnbWVudHMvc2V0dGluZ3MuaHRtbFwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCI8aSBjbGFzcz0naWNvbiBmYXMgZmEtYXJyb3ctbGVmdCc+PC9pPiAgU2V0dGluZ3NcIjtcclxufVxyXG5yZXF1aXJlKFwiLi9MaWJyYXJ5XCIpO1xyXG5yZXF1aXJlKFwiLi9DYXJvdXNlbFwiKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmc1wiKTsiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/src/js/LocalGameSearch.js b/src/js/LocalGameSearch.js index c98c04f..a62024c 100644 --- a/src/js/LocalGameSearch.js +++ b/src/js/LocalGameSearch.js @@ -81,39 +81,31 @@ function GetLibrary(err, data) } function AnalyseLibrary(err, data) - { - - //on hard code la request pour le moment https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid=76561198250223174&include_appinfo=1&include_played_free_games=1&appids_filter= - - //Look into steam libraries folders for acf file - for(let i=0;i < data.length; i++ ) - { - - let files = fs.readdirSync(path.normalize(data[i] + "\\steamapps")); +{ + //Look into steam libraries folders for acf file + for(let i=0;i < data.length; i++ ) + { + let files = fs.readdirSync(path.normalize(data[i] + "\\steamapps")); - //only select acf file - for(let o = 0; o < files.length; o++) - { - if(path.extname(files[o]) === '.acf') + //only select acf file + for(let o = 0; o < files.length; o++) + { + if(path.extname(files[o]) === '.acf') { - rl.oneline(data[i] + "\\steamapps\\" + files[o] ,7, function(err,str){//note change to cut dirname - let Game = new GameMeta(null, Cutter(str)); - - rl.oneline(data[i] + "\\steamapps\\" + files[o] ,3, function(err,str_) - { - Game.AppId = Cutter(str_); - let store_ = new store("SteamGamesMetas"); - store_.set(Game.AppId, Game); - }); - - } ); - - } + rl.oneline(data[i] + "\\steamapps\\" + files[o] ,7, function(err,str){//note change to cut dirname + let Game = new GameMeta(null, Cutter(str)); + rl.oneline(data[i] + "\\steamapps\\" + files[o] ,3, function(err,str_) + { + Game.AppId = Cutter(str_); + let store_ = new store("SteamGamesMetas"); + store_.set(Game.AppId, Game); + }); + }); } } - } +} function Cutter (str) { diff --git a/src/scss/fragments/carousel.scss b/src/scss/fragments/carousel.scss index 3b61160..c778bf3 100644 --- a/src/scss/fragments/carousel.scss +++ b/src/scss/fragments/carousel.scss @@ -14,7 +14,7 @@ width: 100%; height: 100%; position: absolute; - transform: translateZ(-880px) rotateY(-100deg); + transform: translateZ(-800px) rotateY(100deg); transform-style: preserve-3d; transition: transform 1s; } @@ -22,10 +22,11 @@ .carousel__cell { position: absolute; - width: 45vw; + width: 75vw; height: auto; bottom: 0px; - + pointer-events:auto; + transition: width 0.5s; @include media-breakpoint-up(md) { @@ -36,12 +37,21 @@ { &:nth-child(#{$i + 1}) { - transform: rotateY($i * 20deg) translateZ(130vw); + transform: rotateY($i * 40deg) translateZ(130vw); @include media-breakpoint-up(md) { - transform: rotateY($i * 20deg) translateZ(60vw); + transform: rotateY($i * 40deg) translateZ(60vw); } } } } +.disabled { + pointer-events: none; + opacity: 0.0; +} +.higlight +{ + width: 30vw; + transition: width 0.5s; +} diff --git a/src/ts/Carousel.ts b/src/ts/Carousel.ts index c89bd1d..0e79e12 100644 --- a/src/ts/Carousel.ts +++ b/src/ts/Carousel.ts @@ -2,64 +2,92 @@ import { type } from "os"; //import {Game} from "./Library" import { Game } from "./Game"; -var selectedIndex = 0; +var selectedIndex = 5; var carousel: any; var angle = 0; -var clientToken = "76561198250223174"; +var clientToken = "76561198196430655"; +var SelectedRecentGames = [] as any; +var lastselected :any; export function setup() { + selectedIndex = 0; + //Get recent played game from steam// carousel = document.querySelector(".carousel"); $.getJSON("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+ clientToken +"&format=json", - JSON ,(data)=>{ - - if(data.response.total_count ==0){ // null check to prevent error + JSON ,(data:any)=>{ + + if(data.response.total_count ==0){ // null check to prevent error there is no recent game console.log("no recent played games"); return; } - var SelectedRecentGames= []; - for(let i = 0 ; i< data.response.games.length; i++) + let SelectedRecentGames= []; + for(let i = 0 ; i < data.response.total_count; i++) //Object.keys(data.response.games[0]) compte le nombre de clé a partir de 0 { - let game = data.response.games[i]; - SelectedRecentGames[i] = new GameMeta(game.AppId, game.name, game.img_icon_url); + var game = data.response.games[i]; + SelectedRecentGames[i] = new GameMeta(game.appid, game.name, game.img_logo_url); + if(i+1 == data.response.total_count){ iniCallback(SelectedRecentGames); }//launch script user variable after all callbacks are finished } - - console.log(JSON.stringify(data)); - var list = document.getElementsByClassName("carousel__cell") as any; //as any because we want a HTMLimage collection and htmlelement is not generic + }); +} - for (var i = 0; i < list.length; i++)//loop into carousel_cell to add event listener +function iniCallback(SelectedRecentGames : GameMeta[]) +{ + + //Add recent played game to carousel// + var list = document.getElementsByClassName("carousel__cell") as any; //as any because we want a HTMLimage collection and htmlelement is not generic + for (var i = 0; i < list.length; i++)//loop into carousel_cell to add event listener + thumb + { + if(i < SelectedRecentGames.length ) { - list[i].src = SelectedRecentGames[i].thumb; - list[i].dataset.game = SelectedRecentGames[i].AppId; + list[i].src = "https://steamcdn-a.akamaihd.net/steam/apps/"+SelectedRecentGames[i].AppId+"/header.jpg"; + list[i].dataset.game = SelectedRecentGames[i].AppId; list[i].id= i.toString(); list[i].addEventListener("click", () => { var ev = event.target ; - rotateCarousel(ev); - - }); - }; - }); - - + rotateCarousel(ev,false); + }); + }else + { + list[i].classList.add("disabled"); + } + } + let el = document.createElement('Useless-div'); + el.id = Math.round(SelectedRecentGames.length/2).toString(); // trick the carouselroate to work even wihout a TargetEvent reference + rotateCarousel(el,false) + el.remove; } -function rotateCarousel(target: any) -{ - - angle = (selectedIndex - target.id) * 20 + angle; //*20 to convert in angle - if (selectedIndex == target.id) +function rotateCarousel(target: any, bypass: boolean) +{ + if(lastselected ==null) + { + lastselected = target; + } + if(lastselected != target) + { + lastselected.classList.remove("higlight"); + } + + angle = (selectedIndex - target.id) * 40 + angle; //*40 to convert in angle step + + //Launch the game on the front of the carousel + if (selectedIndex == target.id && bypass == false) // the bypass is for ini { LaunchGame(target.dataset.game); return; } - carousel.style.transform = "translateZ(-880px) rotateY(" + angle + "deg)"; - selectedIndex = target.id; + target.classList.add("higlight");// make the central cell bigger + console.log("last selected " +lastselected.id); + carousel.style.transform = "translateZ(-1000px) rotateY(" + angle + "deg)"; + selectedIndex = target.id; + lastselected= target; } function LaunchGame(game: any) { - console.log(game); + console.log("launch game"+ game); } class GameMeta