/* jshint esversion: 6 */ function htmlEscape(text) { const p = document.createElement("p"); p.innerText = text; return p.innerHTML; } let $select = $(".multi-select"); let setSelected = (files) => { $(".multi-files-value").val(JSON.stringify(files.map((f) => f.name))); if (files.length == 0) { $(".multi-files").html( `
  • No files selected
  • ` ); return; } $(".multi-files").html( files .map((f) => { return `
  • ${htmlEscape(f.name)} ${ f.type == "directory" ? `` : `${filesize( f.size )}` }
  • `; }) .join("") ); const hasDirectory = files.reduce( (a, f) => a || f.type == "directory", false ); const totalSize = files.map((f) => f.size).reduce((a, b) => a + b); if (hasDirectory) { $(".multi-files-total").val(""); } else { $(".multi-files-total").val(filesize(totalSize)); } }; const updateSelected = () => { let $selected = $(".multi-select:checked"); let files = []; $selected.each((i, ele) => { files.push({ name: $(ele).data("select"), type: $(ele).data("select-type"), size: $(ele).data("select-size"), }); }); setSelected(files); }; $select.on("change", updateSelected); updateSelected();