{"version":3,"sources":["webpack:///./app/javascript/shared/modular_messages.js","webpack:///./app/javascript/shared/uploader.js","webpack:///./app/javascript/shared/user.js","webpack:///./app/javascript/shared/modular_popin.js","webpack:///./app/javascript/shared/utils.js"],"names":["tagged_messages","message","m","type","tag","Object","new_m","p","console","log","replace","hasOwnProperty","jQuery","remove","container","$","addClass","attr","Date","getHours","String","getMinutes","close","click","content","html","append","Message","error","warning","token","document","on","window","tmp_request","handle_tmp_request","request","experiment","length","data","send","then","global_then","r","isSuccess","s","Number","Uploader","request_xml","o","url","method","success","progressCallback","handler","path","XMLHttpRequest","responseType","form","FormData","param","global_params","Array","upload","addEventListener","e","loaded","total","status","response","open","setRequestHeader","f","oldThen","Function","oldSuccess","oldError","c","oldProgressCallback","request_json","headers","body","JSON","stringify","fetch","json","tmp_global_then","defineProperty","get","match","set","newpath","logincallbacks","logoutcallbacks","init","u","name","newlogin","hide","show","map","call","text","quotaPercent","Math","round","cached_size","quota","empty","css","removeData","location","href","assign","xpsize","trunc","User","logout","login","onlogin","push","onlogout","user_data","parse","user","xp_data","difference","close_modular","id","show_modular","firstinput","find","focus","mousedown","visiblemodulars","stopPropagation","preventDefault","target","this","nodeName","parentElement","fd","keys","split","currentEntry","shift","toUpperCase","action","parents","Modular","Utils","bytes","decimals","parseFloat","toFixed","extensionToMime","safetext","table","'","toString","chr"],"mappings":"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","file":"js/vendors-062588462b3009ccb25d.chunk.js","sourcesContent":["let tagged_messages = {};\n\nlet message = (m,type,tag) => {\n if (typeof(m)!=\"string\" && m instanceof Object){\n let new_m = \"\";\n console.log(\"message\", m);\n for (let p in m)\n new_m += p+\": \"+m[p]+\"
\";\n m = new_m;\n }\n type = type || \"log\";\n m = m.replace(/\\[a\\s([^\\s]+)\\s([^\\]]+)\\]/,\"$2\")\n if (tagged_messages && tagged_messages.hasOwnProperty(tag) && tagged_messages[tag] instanceof jQuery)\n tagged_messages[tag].remove();\n let container = $(\"
\").addClass(\"message\").addClass(type)\n .attr(\"title\",`${(new Date()).getHours()}:${String((new Date()).getMinutes()).replace(/^(\\d)$/,\"0$1\")}`);\n let close = $(\"
X
\").addClass('close').click(()=>container.remove());\n let content = $(\"
\").addClass(\"content\").addClass(type).html(m);\n $('#message-container').append(container.append(close).append(content));\n if (tag)\n tagged_messages[tag] = container;\n return container;\n};\n\nvar Message = {\n log: (m,tag) => message(m,'log',tag),\n error: (m,tag) => message(m,'error',tag),\n warning: (m,tag) => message(m,'warning',tag)\n};\n\nexport { Message };\n","let token;\n$(document).on('turbolinks:load', ()=>{\n token = window.$('meta[name=\"csrf-token\"]').attr('content');\n});\n\n\n// Prevent parallel requests to tmp experiments from creating as many new projects\nlet tmp_request = null;\nlet handle_tmp_request = request => {\n let experiment = $(\"#experiment\");\n if (experiment.length==0 || experiment.data('created_at') != \"\")\n request.send();\n else {\n if (tmp_request)\n tmp_request.then( ()=>request.send() );\n else{\n tmp_request = request;\n request.then( ()=>tmp_request=null );\n request.send();\n } \n }\n}\n\n\nlet global_then = r=>null;\nlet add_global_then = f => {\n if (f instanceof Function){\n let tmp_global_then = global_then;\n global_then = r=>{ tmp_global_then(r); f(r); }\n }\n}\n\n\nlet isSuccess = s => s == \"ok\" || (Number(s) >= 200 && Number(s) <= 299)\n\n\nlet request_xml = (o,url,method) => {\n \n let then = ()=>null;\n let success = ()=>null;\n let error = ()=>null;\n let progressCallback = ()=>null;\n \n let handler = {};\n\n handler.send = ()=>{\n url = url || Uploader.path;\n method = method || \"PATCH\";\n\n let request = new XMLHttpRequest();\n request.responseType = \"json\";\n\n let form = new FormData();\n console.log(\"request xml global params\", global_params);\n for (const param in global_params){\n console.log(\"Adding param\", param, \"with value\", global_params[param]);\n if (global_params[param] instanceof Array)\n form.append( param , ...global_params[param] );\n else\n form.append( param , global_params[param] );\n }\n for (const param in o){\n if (o[param] instanceof Array)\n form.append( param , ...o[param] );\n else\n form.append( param , o[param] );\n }\n // Track progress\n request.upload.addEventListener(\"progress\", e => {\n // Get the loaded amount and total filesize (bytes)\n let loaded = e.loaded;\n let total = e.total;\n // Calculate percent uploaded\n let percent_complete = loaded / total;\n // console.log(\"Progress:\",percent_complete,e);\n progressCallback(percent_complete);\n });\n // request load handler (transfer complete)\n request.addEventListener(\"load\", e=>{\n console.log(\"Upload file response\", request);\n if (!isSuccess(request.status)){\n error(request);\n then(request);\n global_then(request);\n }\n else{\n if (request.response.status && !isSuccess(request.response.status))\n error(request.response);\n else{\n // refresh_slug(request.response);\n success(request.response);\n }\n then(request.response);\n global_then(request.response);\n }\n });\n // request error handler\n request.addEventListener(\"error\", e => console.log(\"Request error\", e) );\n // request abort handler\n request.addEventListener(\"abort\", e => console.log('Request cancelled', e) );\n // Open and send the request\n request.open(method, url);\n request.setRequestHeader('X-CSRF-Token', token );\n request.send(form);\n }\n\n handler.then = f=>{\n let oldThen = then;\n then = (...args) => { if (oldThen instanceof Function) oldThen(...args); f(...args); }\n return handler;\n };\n handler.success = f=>{\n let oldSuccess = success;\n success = (...args) => { if (oldSuccess instanceof Function) oldSuccess(...args); f(...args); }\n return handler;\n };\n handler.error = f=>{\n let oldError = error;\n error = (...args) => { if (oldError instanceof Function) oldError(...args); f(...args); }\n return handler;\n };\n handler.progress = c=>{\n let oldProgressCallback = progressCallback;\n progressCallback = (...args) => { if (oldProgressCallback instanceof Function) oldProgressCallback(...args); c(...args); }\n return handler;\n };\n\n handle_tmp_request( handler );\n return handler;\n};\n\n\nlet request_json = (o,url,method) => {\n\n let then = ()=>null;\n let success = ()=>null;\n let error = ()=>null;\n\n let handler = {};\n\n handler.send = ()=> {\n url = url || Uploader.path;\n console.log(\"url\",url,\"path\", Uploader.path);\n method = method || \"PATCH\";\n let request = {\n method: method,\n headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' , 'X-CSRF-Token': token },\n };\n for (const param in global_params)\n if (!o.hasOwnProperty(param))\n o[param] = global_params[param];\n if (method != \"GET\")\n request.body = JSON.stringify( o );\n\n console.log(\"Sending request\", request);\n fetch(url, request).then( r=>{\n console.log(\"r when updating file\", r);\n r.json().then( m=>{\n if (!isSuccess(r.status) || (m.status && !isSuccess(m.status)))\n error(m);\n else{\n // refresh_slug(m);\n success(m);\n }\n then(m);\n global_then(m);\n });\n });\n };\n\n handler.then = f=>{\n let oldThen = then;\n then = (...args) => { if (oldThen instanceof Function) oldThen(...args); f(...args); }\n return handler;\n };\n handler.success = f=>{\n let oldSuccess = success;\n success = (...args) => { if (oldSuccess instanceof Function) oldSuccess(...args); f(...args); }\n return handler;\n };\n handler.error = f=>{\n let oldError = error;\n error = (...args) => { if (oldError instanceof Function) oldError(...args); f(...args); }\n return handler;\n };\n\n handle_tmp_request( handler );\n return handler;\n};\n\n\nvar Uploader = {\n request_xml: request_xml,\n request_json: request_json,\n then: add_global_then\n};\n\nlet path = \"\";\nObject.defineProperty(Uploader, 'path', {\n get() { \n if (!path.match(/^(\\.(\\/|$)|(https?:)?\\/)/))\n path = '/'+path;\n if (path != '.' && !path.match(/[/]$/))\n path = path+'/';\n return path;\n },\n set(newpath) {\n if (!newpath.match(/^(\\.(\\/|$)|(https?:)?\\/)/))\n newpath = '/'+newpath;\n if (newpath != '.' && !newpath.match(/[/]$/))\n newpath = newpath+'/';\n path = newpath;\n }\n});\n\nlet global_params = {};\nObject.defineProperty(Uploader, 'global_params', {\n get() { \n return global_params;\n }\n});\n\nexport { Uploader };\n","import { Uploader } from '../shared/uploader';\nimport { Message } from '../shared/modular_messages';\n\nconst logincallbacks = [];\nconst logoutcallbacks = [];\n\nlet init = u => {\n var $ = window.$;\n if (u && u.name){\n const newlogin = u.name != $(\"#user\").data(\"name\");\n $(\"#user\").data(u);\n $(\".loggedout\").hide();\n $(\".loggedin\").show();\n if (newlogin)\n logincallbacks.map( f=>f instanceof Function && f.call(null, u) )\n // $(\"#menu .circle .prec\").html(`${Math.trunc(100*u.cached_size/u.quota)}%`);\n // $(\"#menu .username\").empty().html(u.name);\n // $(\"#menu .popin .more .storage\").html(`${Math.round(u.cached_size/1000000,1)}/${u.quota/1000000}MB`);\n // $(\"#menu .popin .more .nxp a\").html(`${u.nexps} Xps`);\n $(\"#home\").text(\"Projects\");\n const quotaPercent = Math.round(100*u.cached_size/u.quota);\n $(\"#percent\").empty().append($(`
${Math.round(u.cached_size/10000)/100}/${u.quota/1000000}MB (${quotaPercent}%)
`))\n .css(\"background\",`linear-gradient(to right, rgb(0,200,0), rgb(${quotaPercent*2},${200-quotaPercent*2},0) ${quotaPercent}%, transparent ${quotaPercent}%)`);\n $(\"#profile\").empty().append($(`
${u.name}
`));\n }\n else{\n logoutcallbacks.map( f=>f instanceof Function && f.call(null, $(\"#user\").data()) )\n $(\"#user\").removeData();\n $(\".loggedout\").show();\n $(\".loggedin\").hide();\n $(\"#home\").text(\"Home\");\n if ($(\"#experiment\").length || window.location.href.match(/\\/profile$/)){\n if ($(\"#experiment\").data(\"user_id\") || window.location.href.match(/\\/profile$/))\n return window.location.assign(\"/\");\n let xpsize = $(\"#experiment\").data('size') || 0;\n console.log(\"Init user with xp size\", xpsize);\n $(\"#menu .circle .prec\").html(`${Math.trunc(100*xpsize/$(\"#Root\").data().quota)}%`);\n $(\"#menu .username\").empty().html(\"Menu\");\n $(\"#menu .popin .more .storage\").html(`

${Math.round(xpsize/1000000)}/${$(\"#Root\").data().quota/1000000}MB

`);\n }\n }\n};\n\nexport var User = {\n init: u=>init(u),\n logout: ()=>init(null),\n login: u=>init(u),\n onlogin: f=>logincallbacks.push(f),\n onlogout: f=>logoutcallbacks.push(f)\n};\n\n$(document).on('turbolinks:load', ()=> {\n init($(\"#user\").data());\n \n if ($(\"#user\").data(\"id\") && $(\"#user\").data(\"email\").length==0)\n Message.warning( \"Please associate an email with this account\" , 'user' );\n else if ($(\"#user\").data(\"id\") && $(\"#user\").data(\"activated_at\").length==0)\n Message.warning( \"Please check your emails to verify this account\" , 'user' );\n\n Uploader.then( response=> {\n console.log(\"response:\",response);\n if (response.hasOwnProperty('user')){\n const user_data = JSON.parse(response.user);\n if (response.hasOwnProperty('experiment') && $(\"#experiment\").length){\n const xp_data = JSON.parse(response.experiment);\n console.log(\"Checking xp_data\", xp_data, $(\"#experiment\").data(\"cached_size\"));\n const difference = $(\"#experiment\").data(\"cached_size\") - xp_data.cached_size;\n user_data.cached_size += difference;\n console.log(\"Now user_data\", user_data);\n }\n init(user_data);\n }\n });\n \n});\n","import { Uploader } from '../shared/uploader';\nimport { Message } from '../shared/modular_messages';\n\nconst close_modular = id => {\n if (typeof id == \"string\" && id.length){\n const modular = $(`#modulars #${id}:visible`);\n if (modular.length) $(\"#modulars, #modulars .modular\").hide();\n }\n else\n $(\"#modulars, #modulars .modular\").hide();\n}\n\n// Move this into a shared module\nconst show_modular = id => {\n $(\"#modulars .modular\").hide();\n $(`#modulars #${id}, #modulars`).show();\n const firstinput = $(`#modulars #${id}`).find(\"input[type=text], input[type=password]\");\n if (firstinput.length) $(firstinput[0]).focus();\n};\n\n$(document).on('turbolinks:load', ()=>{\n $(\"#modulars, #modulars #closemodulars\").mousedown( e => {\n const visiblemodulars = $(`#modulars .modular:visible`);\n if (visiblemodulars.length && visiblemodulars.find(\".warning\").length) return false;\n close_modular();\n });\n $(\"#modulars .modular\").mousedown( e => e.stopPropagation() );\n\n $(\".modular-link\").click(function(e){\n e.preventDefault();\n const target = $(this).attr(\"target\");\n if (target) show_modular(target);\n return false;\n });\n\n $(\".async .submit\").click( e => {\n e.preventDefault();\n let form = e.target;\n while (form.nodeName != \"FORM\" && form.nodeName != \"HTML\") form = form.parentElement;\n if (form.nodeName==\"FORM\"){\n let method = $(form).attr(\"method\");\n const request = {};\n const fd = new FormData( form );\n for (let e of fd){\n let keys = e[0].replace(/\\]/g,'').split('[');\n let currentEntry = request;\n while (keys.length>1){\n if (!currentEntry.hasOwnProperty(keys[0])) currentEntry[keys[0]] = {};\n currentEntry = currentEntry[keys[0]];\n keys.shift();\n }\n currentEntry[keys[0]] = e[1];\n if (currentEntry==request&&keys[0]==\"_method\"&&e[1].match(/patch|put|get|post/i)) method = e[1];\n } \n method = method.toUpperCase()\n console.log(\"request\", request, \"action\", form.action, \"method\", method);\n Uploader.request_json( request , form.action , method ).success( r => {\n const modularParent = $(e.target).parents(\".modular:visible\");\n if (modularParent.length) close_modular();\n if (r.message) Message.log( r.message , form.id );\n }).error( r => (r.message||r.error?Message.error( r.message||r.error , form.id ):null) );\n }\n return false;\n });\n\n});\n\nvar Modular = { show: show_modular , close: close_modular };\n\nexport { Modular };\n","// From https://stackoverflow.com/a/18650828\nvar Utils = {};\n\nUtils.formatBytes = (bytes, decimals = 2) => {\n if (bytes == 0) return 0;\n return parseFloat(bytes / 1000000).toFixed(decimals);\n // if (bytes === 0) return '0B';\n // const k = 1024;\n // const dm = decimals < 0 ? 0 : decimals;\n // const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n // const i = Math.floor(Math.log(bytes) / Math.log(k));\n // return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i];\n};\n\nUtils.extensionToMime = {\n \"aac\": \"audio/aac\",\n \"abw\": \"application/x-abiword\",\n \"arc\": \"application/x-freearc\",\n \"avi\": \"video/x-msvideo\",\n \"azw\": \"application/vnd.amazon.ebook\",\n \"bin\": \"application/octet-stream\",\n \"bmp\": \"image/bmp\",\n \"bz\": \"application/x-bzip\",\n \"bz2\": \"application/x-bzip2\",\n \"csh\": \"application/x-csh\",\n \"css\": \"text/css\",\n \"csv\": \"text/csv\",\n \"doc\": \"application/msword\",\n \"docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"eot\": \"application/vnd.ms-fontobject\",\n \"epub\": \"application/epub+zip\",\n \"gz\": \"application/gzip\",\n \"gif\": \"image/gif\",\n \"htm\": \"text/html\",\n \"html\": \"text/html\",\n \"ico\": \"image/vnd.microsoft.icon\",\n \"ics\": \"text/calendar\",\n \"jar\": \"application/java-archive\",\n \"jpeg\": \"image/jpeg\",\n \"jpg\": \"image/jpeg\",\n \"js\": \"text/javascript\",\n \"json\": \"application/json\",\n \"jsonld\": \"application/ld+json\",\n \"m4a\": \"audio/x-m4a\",\n \"mid\": \"audio/midi\",\n \"midi\": \"audio/midi\",\n \"mjs\": \"text/javascript\",\n \"mp3\": \"audio/mpeg\",\n \"mp3\": \"video/mpeg\",\n \"mpeg\": \"video/mpeg\",\n \"mpg\": \"video/mpeg\",\n \"mpkg\": \"application/vnd.apple.installer+xml\",\n \"mov\": \"video/quicktime\",\n \"odp\": \"application/vnd.oasis.opendocument.presentation\",\n \"ods\": \"application/vnd.oasis.opendocument.spreadsheet\",\n \"odt\": \"application/vnd.oasis.opendocument.text\",\n \"oga\": \"audio/ogg\",\n \"ogg\": \"audio/ogg\",\n \"ogv\": \"video/ogg\",\n \"ogx\": \"application/ogg\",\n \"opus\": \"audio/opus\",\n \"otf\": \"font/otf\",\n \"png\": \"image/png\",\n \"pdf\": \"application/pdf\",\n \"php\": \"application/php\",\n \"ppt\": \"application/vnd.ms-powerpoint\",\n \"pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \"rar\": \"application/vnd.rar\",\n \"rtf\": \"application/rtf\",\n \"sh\": \"application/x-sh\",\n \"svg\": \"image/svg+xml\",\n \"swf\": \"application/x-shockwave-flash\",\n \"tar\": \"application/x-tar\",\n \"tif\": \"image/tiff\",\n \"tiff\": \"image/tiff\",\n \"ts\": \"video/mp2t\",\n \"tsv\": \"text/tsv\",\n \"ttf\": \"font/ttf\",\n \"txt\": \"text/plain\",\n \"vsd\": \"application/vnd.visio\",\n \"wav\": \"audio/wav\",\n \"weba\": \"audio/webm\",\n \"webm\": \"video/webm\",\n \"webp\": \"image/webp\",\n \"wma\": \"audio/webm\",\n \"wmv\": \"video/x-ms-wvm\",\n \"woff\": \"font/woff\",\n \"woff2\": \"font/woff2\",\n \"xhtml\": \"application/xhtml+xml\",\n \"xls\": \"application/vnd.ms-excel\",\n \"xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"xml\": \"application/xml \",\n \"xul\": \"application/vnd.mozilla.xul+xml\",\n \"zip\": \"application/zip\",\n \"3gp\": \"video/3gpp\",\n \"3g2\": \"video/3gpp2\",\n \"7z\": \"application/x-7z-compressed\"\n};\n\nUtils.safetext = function(text){\n\tconst table = {\n\t\t'<': 'lt',\n\t\t'>': 'gt',\n\t\t'\"': 'quot',\n\t\t'\\'': 'apos',\n\t\t'&': 'amp',\n\t\t'\\r': '#10',\n\t\t'\\n': '#13'\n\t};\n\t\n\treturn text.toString().replace(/[<>\"'\\r\\n&]/g, function(chr){\n\t\treturn '&' + table[chr] + ';';\n\t});\n};\n\nexport { Utils };\n"],"sourceRoot":""}