{"version":3,"sources":["webpack:///./app/javascript/shared/modular_messages.js","webpack:///./app/javascript/packs/stylesheets/projects.scss?148b","webpack:///./app/javascript/packs/stylesheets/projects.scss","webpack:///./app/javascript/packs/projects.js","webpack:///./app/javascript/projects/general.js","webpack:///./app/javascript/projects/toolbar.js","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///./app/javascript/packs/images/icons/fontawesome/plus-circle.svg","webpack:///./app/javascript/packs/images/icons/fontawesome/rename.svg","webpack:///./app/javascript/shared/uploader.js","webpack:///./app/javascript/shared/user.js","webpack:///./app/javascript/shared/modular_popin.js","webpack:///./app/javascript/packs/images/icons/fontawesome/clone.svg","webpack:///./app/javascript/packs/images/icons/fontawesome/external-link-alt.svg","webpack:///./app/javascript/packs/images/icons/fontawesome/trash-dark.svg","webpack:///./app/javascript/packs/images/icons/mime/lock_brown.svg","webpack:///./app/javascript/packs/images/icons/mime/lock_green.svg","webpack:///./app/javascript/packs/images/icons/mime/sys.svg"],"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","api","__esModule","default","module","i","options","exports","locals","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","push","relation","a","b","order","test","find","data","Number","sort_projects","by","sorted","sort","detach","document","on","User","onlogin","window","location","reload","onlogout","this","hasClass","removeClass","className","split","e","target","text","innerText","length","match","each","indexOf","parents","hide","show","focus","keydown","key","blur","toolbar","currentExp","ontoolbar","width","css","link","top","offset","left","linkWidth","transform","display","experiment","createElement","setAttribute","slug","style","body","appendChild","removeChild","name","duplicateExp","element","Modular","deleteExp","confirmation_delete","size","Uploader","request_json","then","user","usersize","cached_size","JSON","parse","init","stopPropagation","preventDefault","newname","oldname","removeAttr","rename","success","tryToRename","undefined","url","slice","hash","needQuotes","concat","token","tmp_request","handle_tmp_request","request","send","global_then","r","isSuccess","s","request_xml","o","method","progressCallback","handler","path","XMLHttpRequest","responseType","form","FormData","param","global_params","Array","upload","addEventListener","loaded","total","status","response","open","setRequestHeader","f","oldThen","Function","oldSuccess","oldError","c","oldProgressCallback","headers","stringify","fetch","json","tmp_global_then","defineProperty","get","set","newpath","logincallbacks","logoutcallbacks","u","newlogin","map","call","quotaPercent","Math","round","quota","empty","removeData","href","assign","xpsize","trunc","logout","login","user_data","xp_data","difference","close_modular","id","show_modular","firstinput","mousedown","visiblemodulars","nodeName","parentElement","keys","currentEntry","shift","toUpperCase","action"],"mappings":"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","file":"js/projects-d0d77bc9519648ee6404.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","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!./projects.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../images/icons/fontawesome/plus-circle.svg\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../images/icons/mime/lock_brown.svg\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../images/icons/mime/lock_green.svg\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../images/icons/mime/sys.svg\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = require(\"../images/icons/fontawesome/external-link-alt.svg\");\nvar ___CSS_LOADER_URL_IMPORT_5___ = require(\"../images/icons/fontawesome/trash-dark.svg\");\nvar ___CSS_LOADER_URL_IMPORT_6___ = require(\"../images/icons/fontawesome/rename.svg\");\nvar ___CSS_LOADER_URL_IMPORT_7___ = require(\"../images/icons/fontawesome/clone.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(true);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\nexports.push([module.id, \".modular #confirmation-delete{text-align:center}.modular #confirmation-delete p,.modular #confirmation-delete button{font-size:1.5em}#main-container{display:flex;flex-direction:column}#main-container h2{text-align:center;width:100%;margin-top:1.5em;margin-bottom:0.25em}#main-container .new_project{width:100vw;text-align:center}#main-container .new_project a{display:block;font-size:2em;font-weight:bold;width:4em;height:4em;line-height:4em;border:dotted 1px gray;border-radius:0.5em;cursor:pointer;margin:0.5em auto;color:transparent;text-decoration:none;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-size:75%;background-position:50%;background-repeat:no-repeat}#main-container .new_project a:hover{background-color:floralwhite}#main-container .tmp{text-align:center;font-size:1.5em;margin:1em}#main-container .tmp a{color:#444444;text-decoration:none}#main-container .tmp a:hover{color:#4444BB;text-decoration:underline}#main-container .title{font-size:2em;font-weight:bold;text-align:center}#main-container .projectsbrowser{display:flex;flex-direction:row;flex-wrap:nowrap;width:100vw;overflow-y:hidden;margin:1em}#main-container .projectsbrowser .projects{display:flex;flex-direction:column;height:100%;flex-grow:1;margin-top:1em;width:100%;position:relative}#main-container .projectsbrowser .projects h3{font-size:1.66em;width:100%}#main-container .projectsbrowser .projects .filter{width:100%;font-style:italic;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:2.75em;cursor:text}#main-container .projectsbrowser .projects .filter:before{content:\\\"Name must contain...\\\";color:gray}#main-container .projectsbrowser .projects .filter.editable:before{content:\\\"\\\"}#main-container .projectsbrowser .projects .sortby{display:flex;width:80%}#main-container .projectsbrowser .projects .sortby .sorts{display:flex;justify-content:space-between;flex-grow:1}#main-container .projectsbrowser .projects .sortby .sorts .name{margin-left:1em}#main-container .projectsbrowser .projects .sortby .sorts .size{margin-right:2em}#main-container .projectsbrowser .projects .sortby .sorts span:hover{cursor:pointer}#main-container .projectsbrowser .projects .sortby .sorts span:before{content:\\\"\\\\25BE\\\";visibility:hidden}#main-container .projectsbrowser .projects .sortby .sorts .down:before{content:\\\"\\\\25BE\\\";visibility:visible}#main-container .projectsbrowser .projects .sortby .sorts .up:before{content:\\\"\\\\25B4\\\";visibility:visible}#main-container .projectsbrowser .projects ul{width:80%;height:100%;overflow:hidden scroll}#main-container .projectsbrowser .projects ul li{position:relative;width:100%;list-style:none;font-size:1.5em;padding:0.5em}#main-container .projectsbrowser .projects ul li a{text-decoration:none;width:95%;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#main-container .projectsbrowser .projects ul li a:hover{text-decoration:underline}#main-container .projectsbrowser .projects ul li .size{position:relative;top:-0.25em;font-size:0.75em;font-feature-settings:\\\"sups\\\";font-variant:super;font-weight:bold}#main-container .projectsbrowser .projects ul li .size:after{content:\\\"MB\\\"}#main-container .projectsbrowser .projects ul li:nth-child(odd){background-color:#c4c4c4}#main-container .projectsbrowser .projects ul li:nth-child(odd){background-color:#e8e8e8}#main-container .projectsbrowser .projects.private ul li a{width:calc(100% - 6em)}#main-container .projectsbrowser .projects.private .statuses{display:inline-flex;flex-direction:column;transform:translateY(-0.66em)}@-webkit-keyframes rotating{from{transform:rotate(0deg);transform-origin:50% 50%}to{transform:rotate(360deg);transform-origin:50% 50%}}@keyframes rotating{from{transform:rotate(0deg);transform-origin:50% 50%}to{transform:rotate(360deg);transform-origin:50% 50%}}#main-container .projectsbrowser .projects.private .statuses #layer1{-webkit-animation:rotating 6s linear infinite;animation:rotating 6s linear infinite}#main-container .projectsbrowser .projects.private .statuses span{display:inline-block;width:0.75em;height:0.75em}#main-container .projectsbrowser .projects.private .statuses span.private{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}#main-container .projectsbrowser .projects.private .statuses span.public{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}#main-container .projectsbrowser .projects.private .statuses span.dev{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \")}#main-container .projectsbrowser .projects.private .statuses span svg{position:absolute}#main-container .projectsbrowser .projects.public li{display:flex}#main-container .projectsbrowser .projects.public li a:first-child{width:1em;height:1em;margin-right:0.25em;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}#main-container .projectsbrowser .projects.public li a:first-child:hover{filter:invert(40%)}#main-container #toolbar-experiment{display:flex;flex-direction:row;position:absolute;padding:0.5em;background-color:#222222dd}#main-container #toolbar-experiment div{color:lightgray;margin:0.25em}#main-container #toolbar-experiment div:hover{color:white;text-decoration:underline;cursor:pointer}#main-container #toolbar-experiment div:before{content:'';background-size:contain;background-repeat:no-repeat;width:1em;height:1em;display:inline-block;filter:invert(100%)}#main-container #toolbar-experiment .delete:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \")}#main-container #toolbar-experiment .rename:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \")}#main-container #toolbar-experiment .duplicate:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \")}#main-container #toolbar-experiment .tryit:before{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \")}\\n\", \"\",{\"version\":3,\"sources\":[\"/myapp/app/javascript/packs/stylesheets/projects.scss\"],\"names\":[],\"mappings\":\"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\",\"file\":\"projects.scss\",\"sourcesContent\":[\".modular {\\n #confirmation-delete { \\n text-align: center;\\n p, button { font-size: 1.5em; }\\n }\\n}\\n\\n#main-container {\\n display: flex;\\n flex-direction: column;\\n h2 { \\n text-align: center;\\n width: 100%; \\n margin-top: 1.5em;\\n margin-bottom: 0.25em;\\n }\\n .new_project {\\n width: 100vw;\\n text-align: center;\\n a {\\n display: block;\\n font-size: 2em;\\n font-weight: bold;\\n width: 4em;\\n height: 4em;\\n line-height: 4em;\\n border: dotted 1px gray;\\n border-radius: 0.5em;\\n cursor: pointer;\\n margin: 0.5em auto;\\n color: transparent;\\n text-decoration: none;\\n background-image: url('../images/icons/fontawesome/plus-circle.svg');\\n background-size: 75%;\\n background-position: 50%;\\n background-repeat: no-repeat;\\n }\\n a:hover { background-color: floralwhite; } \\n }\\n\\n .tmp {\\n text-align: center;\\n font-size: 1.5em;\\n margin: 1em;\\n a {\\n color: #444444;\\n text-decoration: none;\\n }\\n a:hover {\\n color: #4444BB;\\n text-decoration: underline;\\n }\\n }\\n\\n .title{ \\n font-size: 2em; \\n font-weight: bold;\\n text-align: center;;\\n }\\n\\n .projectsbrowser {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n width: 100vw;\\n overflow-y: hidden;\\n margin: 1em;\\n .projects {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n flex-grow: 1;\\n margin-top: 1em;\\n width: 100%;\\n position: relative;\\n // overflow-y: scroll;\\n h3 { \\n font-size: 1.66em;\\n width: 100%; \\n }\\n .filter {\\n width: 100%;\\n font-style: italic;\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n height: 2.75em;\\n cursor: text;\\n &:before {\\n content: \\\"Name must contain...\\\";\\n color: gray;\\n }\\n &.editable:before { content: \\\"\\\"; }\\n }\\n .sortby {\\n display: flex;\\n width: 80%;\\n .sorts {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n .name {\\n margin-left: 1em;\\n }\\n .size{\\n margin-right: 2em;\\n }\\n span {\\n &:hover {\\n cursor: pointer;\\n }\\n &:before{\\n content: \\\"\\\\25BE\\\";\\n visibility: hidden;\\n }\\n }\\n .down:before {\\n content: \\\"\\\\25BE\\\";\\n visibility: visible;\\n }\\n .up:before {\\n content: \\\"\\\\25B4\\\";\\n visibility: visible;\\n }\\n }\\n }\\n ul {\\n width: 80%;\\n // margin: auto;\\n // display: flex;\\n // justify-content: space-evenly;\\n // flex-wrap: wrap;\\n height: 100%;\\n overflow: hidden scroll;\\n li { \\n position: relative;\\n width: 100%;\\n list-style: none;\\n font-size: 1.5em; \\n padding: 0.5em;\\n // font-size: 2em; \\n // margin: 1em;\\n a{\\n text-decoration: none;\\n width: 95%;\\n display: inline-block;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n }\\n a:hover {\\n text-decoration: underline;\\n }\\n .size {\\n position: relative;\\n top: -0.25em;\\n font-size: 0.75em;\\n font-variant: super;\\n font-weight: bold;\\n }\\n .size:after{\\n content: \\\"MB\\\";\\n }\\n // .description {\\n // display: none;\\n // position: absolute;\\n // max-width: 80%;\\n // color: white;\\n // background-color: #000000cc;\\n // font-size: 0.75em;\\n // margin-left: 0.25em;\\n // padding: 0.25em;\\n // }\\n // &:hover .description { display: inline-block; }\\n }\\n li:nth-child(odd){\\n background-color: #c4c4c4;\\n }\\n li:nth-child(odd){\\n background-color: #e8e8e8;\\n }\\n }\\n &.private {\\n ul li a {\\n width: calc(100% - 6em);\\n }\\n .statuses{\\n display: inline-flex;\\n flex-direction: column;\\n transform: translateY(-0.66em);\\n @keyframes rotating {\\n from {\\n transform: rotate(0deg);\\n transform-origin: 50% 50%;\\n }\\n to {\\n transform: rotate(360deg);\\n transform-origin: 50% 50%;\\n }\\n }\\n #layer1 {\\n animation: rotating 6s linear infinite;\\n }\\n span {\\n display: inline-block;\\n width: 0.75em;\\n height: 0.75em;\\n &.private{\\n background-image: url(\\\"../images/icons/mime/lock_brown.svg\\\");\\n }\\n &.public{\\n background-image: url(\\\"../images/icons/mime/lock_green.svg\\\");\\n }\\n &.dev{\\n background-image: url(\\\"../images/icons/mime/sys.svg\\\");\\n }\\n svg {\\n position: absolute;\\n }\\n // &.prod{\\n // background-image: url(\\\"../images/icons/mime/prod.svg\\\");\\n // }\\n }\\n }\\n }\\n &.public {\\n li {\\n display: flex;\\n a:first-child {\\n width: 1em;\\n height: 1em;\\n margin-right: 0.25em;\\n background-image: url(\\\"../images/icons/fontawesome/external-link-alt.svg\\\");\\n &:hover {\\n filter: invert(40%);\\n }\\n }\\n }\\n }\\n }\\n }\\n \\n #toolbar-experiment {\\n display: flex;\\n flex-direction: row;\\n position: absolute;\\n padding: 0.5em;\\n background-color: #222222dd;\\n div {\\n color: lightgray;\\n margin: 0.25em;\\n }\\n div:hover {\\n color: white;\\n text-decoration: underline;\\n cursor: pointer;\\n }\\n div:before {\\n content:'';\\n background-size: contain;\\n background-repeat: no-repeat;\\n width: 1em;\\n height: 1em;\\n display: inline-block;\\n filter: invert(100%);\\n }\\n .delete:before { background-image: url(\\\"../images/icons/fontawesome/trash-dark.svg\\\"); }\\n .rename:before { background-image: url(\\\"../images/icons/fontawesome/rename.svg\\\"); }\\n // .edit:before { background-image: url(\\\"../images/icons/fontawesome/edit.svg\\\"); }\\n .duplicate:before { background-image: url(\\\"../images/icons/fontawesome/clone.svg\\\"); }\\n .tryit:before { background-image: url(\\\"../images/icons/fontawesome/external-link-alt.svg\\\"); }\\n }\\n}\\n\"]}]);\n// Exports\nmodule.exports = exports;\n","import \"./stylesheets/projects.scss\";\n\nimport \"../projects/general\";\nimport \"../projects/toolbar\";\n","import { User } from '../shared/user';\n\nconst relation = (a,b,attr,order) => {\n let test;\n if (order==\"up\") test = ($(a).find('a').data(attr) > $(b).find('a').data(attr));\n else test = $(a).find('a').data(attr) < $(b).find('a').data(attr);\n return 2*Number(test==true) - 1;\n}\nconst sort_projects = (by,order) => {\n console.log(\"sort projects\", by, order);\n let sorted;\n switch (by){\n case 'name':\n sorted = $(\".private li\").sort( (a,b) => relation(a,b,'name',order) );\n break;\n case 'lastedit':\n sorted = $(\".private li\").sort( (a,b) => relation(a,b,'updatedAt',order) );\n break;\n case 'size':\n sorted = $(\".private li\").sort( (a,b) => relation(a,b,'size',order) );\n break;\n }\n $(\".private li\").detach();\n $(\".private ul\").append(sorted);\n}\n\n\n$(document).on('turbolinks:load', ()=>{\n console.log(\"User:\", $(\"#user\").data());\n User.onlogin( ()=> { console.log(\"reloading\"); window.location.reload() } );\n User.onlogout( ()=> { console.log(\"logout\"); window.location.reload() } );\n\n $(\".sorts span\").click( function(){\n if ($(this).hasClass(\"down\")) $(this).removeClass(\"down\").addClass(\"up\");\n else if ($(this).hasClass(\"up\")) $(this).removeClass(\"up\").addClass(\"down\");\n else {\n $(\".sorts .up, .sorts .down\").removeClass(\"up\").removeClass(\"down\");\n $(this).addClass(\"down\");\n }\n sort_projects(...this.className.split(\" \"));\n } );\n\n $(\".filter\").on(\"input\", e=>{\n $(e.target).addClass(\"editable\");\n const text = e.target.innerText.replace(/[\\n\\r]/g,'');\n if (text.length==0 || !text.match(/\\S/)){\n $(e.target).removeClass(\"editable\");\n $(\".projects.private li\").show();\n }\n else\n $(\".projects.private li a\").each( function(){\n if (this.text.indexOf(text)<0)\n $(this).parents(\"li\").hide();\n else\n $(this).parents(\"li\").show();\n });\n }).focus( e=> $(e.target).addClass(\"editable\") ).keydown(e=>{\n if (e.key==\"Escape\"){\n $(\".projects.private li\").show();\n $(e.target).removeClass(\"editable\").text(\"\");\n }\n else if (e.key==\"Enter\") return false;\n }).blur(e=>{\n const text = e.target.innerText.replace(/[\\n\\r]/g,'');\n if (text.length==0 || !text.match(/\\S/)){\n $(e.target).removeClass(\"editable\");\n $(\".projects.private li\").show();\n }\n });\n});\n","import { Uploader } from '../shared/uploader';\nimport { Modular } from '../shared/modular_popin';\nimport { Message } from '../shared/modular_messages';\nimport { User } from '../shared/user';\n\nlet toolbar, currentExp;\n\n\nlet tryToRename = element => {\n let newname = element.html(), oldname = element.data().name;\n element.removeAttr('contenteditable');\n if (newname == oldname)\n return;\n else if ($(`.projects.private li a[data-name='${newname}']`).length){\n Message.error(`There already is another experiment named ${newname}`);\n element.html(oldname);\n }\n else\n Uploader.request_json({rename: newname}, '/experiments/'+element.data().slug)\n .success( m => {\n element.html(m.newname);\n element.data('name', m.newname);\n Message.log(`Experiment ${oldname} successfully renamed ${m.newname}` , 'experimentStatus' );\n })\n .error( m => {\n Message.log(`There was a problem renaming the experiment: ${m.error||m.message}`) \n element.html(oldname);\n });\n return false;\n};\n\n\nlet editExpName = element => {\n toolbar.css('display','none');\n element.attr(\"contenteditable\", true);\n element.focus();\n};\n\n\nconst tryExp = experiment => {\n const link = document.createElement('a');\n link.setAttribute('href', `/r/${experiment.slug}/experiment.html?test=true`);\n link.setAttribute('target', '_blank');\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n}\n\nlet duplicateExp = experiment => {\n toolbar.css('display','none');\n let link = `/experiments/new?from=${experiment.slug}&name=${experiment.name}_copy`;\n window.location.replace( link );\n};\n\n\nlet deleteExp = experiment => {\n toolbar.css('display','none');\n const element = $(\"#modulars #confirmationdelete\"), name = experiment.name;\n element.find(\".warning p\").html( `Are you sure you want to delete the experiment named ${name}?` );\n Modular.show( 'confirmationdelete' );\n};\n\n\n$(document).on('turbolinks:load', ()=>{\n toolbar = $(\"#toolbar-experiment\");\n let ontoolbar = false;\n let width = toolbar.width();\n toolbar.css('display', 'none');\n\n $(document).on('mouseenter', '.projects.private li', function(){\n const link = $(this).find('a');\n if (link.length && link.attr(\"contenteditable\")) return;\n let top = $(this).offset().top, \n left = link.offset().left,\n linkWidth = link.width(),\n xoverflow = width+left-$('body').width();\n toolbar.css({\n // top: `calc(${offset.top}px + 0.75em`,\n top: `calc(${top}px + 0.5em)`,\n // left: offset.left - (xoverflow>0?10+xoverflow:0),\n left: left + linkWidth + 16,\n // right: `calc(${offset.left + $(this).width()}px)`,\n 'margin-left': '0.5em',\n transform: 'translate(0%, -100%)',\n display: 'flex'\n });\n currentExp = $(this).find('a');\n })\n\n $(document).on('mouseleave', '.projects, .projects.private ul', function(){\n if (!ontoolbar)\n toolbar.css('display','none');\n });\n\n $(document).on('mouseenter', '#toolbar-experiment', ()=>{ontoolbar=true; toolbar.css('display','flex')})\n .on('mouseleave', '#toolbar-experiment', ()=>ontoolbar=false);\n\n toolbar.find(\".tryit\").on('click', e => tryExp(currentExp.data()) );\n toolbar.find(\".duplicate\").on('click', e => duplicateExp(currentExp.data()) );\n toolbar.find(\".rename\").on('click', e=> editExpName( currentExp ) );\n toolbar.find(\".delete\").on('click', e=> deleteExp( currentExp.data() ) );\n const confirmation_delete = $(\"#modulars #confirmationdelete\");\n confirmation_delete.find(\"button[name='yes']\").click( ()=> {\n const slug = currentExp.data(\"slug\"), size = currentExp.data(\"size\"), name = currentExp.data(\"name\");\n Modular.close();\n Uploader.request_json( {} , '/experiments/'+slug , 'DELETE' )\n .then( m => {\n $(`.projects.private li[slug='${slug}']`).remove();\n if (currentExp.data().slug == slug)\n toolbar.css(\"display\",\"none\"); \n Message.log( `Experiment ${name} has been successfully deleted` ); \n if (m.user) {\n const usersize = $(\"#user\").data().cached_size;\n m.user = JSON.parse( m.user );\n $(\"#user\").data( m.user );\n console.log(\"m.user.cached_size\", m.user.cached_size, \"usersize\", usersize, \"xpsize\", size);\n if (m.user.cached_size != usersize-size)\n Message.warning( \"Some resources might have been transfered to another experiment, refresh this page for an accurate estimation of the size of the other experiments\" );\n }\n User.init( $(\"#user\").data() );\n } );\n });\n confirmation_delete.find(\"button[name='no']\").click( () => Modular.close() );\n $(\".projects.private li a\").on('keydown', function(e) {\n e.stopPropagation();\n if (e.key == \"Enter\"){\n e.preventDefault();\n tryToRename($(this));\n }\n else if (e.key==\"Escape\")\n $(this).blur();\n console.log(\"key\",e.key);\n }).on('blur', function(e){ $(this).removeAttr(\"contenteditable\"); $(this).html($(this).data().name); })\n .on('click', function(){ return $(this).attr(\"contenteditable\")===undefined; });\n});\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","export default __webpack_public_path__ + \"media/packs/images/icons/fontawesome/plus-circle-2b2138f3af2701eec3e6655191d37f4f.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/fontawesome/rename-02365108d311bf107ef13839ace94e7a.svg\";","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 let user_data = null;\n try {\n user_data = JSON.parse(response.user);\n } catch {\n user_data = response.user;\n }\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","export default __webpack_public_path__ + \"media/packs/images/icons/fontawesome/clone-18168fc6091f1a2dba70661e9b1b7394.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/fontawesome/external-link-alt-1be02d8efdf573908019b3edda673d79.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/fontawesome/trash-dark-762fa71bd93692ced8981bba810ae1a1.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/mime/lock_brown-d9572074f8aeca2ca0d7ccb921cd8788.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/mime/lock_green-b90c643ddc7fd30e23818bb4d74b2840.svg\";","export default __webpack_public_path__ + \"media/packs/images/icons/mime/sys-85225cebc7dba3b42346b18c29e5a2d0.svg\";"],"sourceRoot":""}