{"version":3,"file":"uploader-BsENxitA.js","sources":["../../../app/javascript/shared/uploader.js"],"sourcesContent":["let token;\ndocument.addEventListener('DOMContentLoaded',()=>{\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"],"names":["token","tmp_request","handle_tmp_request","request","experiment","global_then","r","add_global_then","f","tmp_global_then","isSuccess","s","request_xml","o","url","method","then","success","error","progressCallback","handler","Uploader","form","param","global_params","e","loaded","total","percent_complete","oldThen","args","oldSuccess","oldError","c","oldProgressCallback","request_json","m","path","newpath"],"mappings":"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"}