JSFiddle - React, Tailwind, and code Playground
by Ivin Raj S
HTML
<div id="container">
<div>
<input type="file" id="file_input" webkitdirectory directory />
<ul id="dir-tree"></ul>
</div>
<button OnServerClick="btnupload_click" id="btnupload" type="button">Upload</button>
JavaScript
(function () {
var cache = {};
this.tmpl = function tmpl(str, data) {
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(str) ?
cache[str] = cache[str] ||
tmpl(document.getElementById(str).innerHTML) :
// Generate a reusable function that will serve as a template
// generator (and which will be cached).
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
// Introduce the data as local variables using with(){}
"with(obj){p.push('" +
// Convert the template into pure JavaScript
str
.replace(/[\r\t\n]/g, " ")
.replace(/\t=(.*?)%>/g, "',$1,'")
.split("\t").join("');")
.split("%>").join("p.push('")
.split("\r").join("\\'")
+ "');}return p.join('');");
// Provide some basic currying to the user
return data ? fn(data) : fn;
};
})();
window.URL = window.URL ? window.URL :
window.webkitURL ? window.webkitURL : window;
function Tree(selector) {
this.$el = $(selector);
this.fileList = [];
var html_ = [];
var tree_ = {};
var pathList_ = [];
var self = this;
this.render = function (object) {
if (object) {
for (var folder in object) {
if (!object[folder]) { // file's will have a null value
html_.push('<li><a href="#" data-type="file">', folder, '</a></li>');
} else {
html_.push('<li><a href="#">', folder, '</a>');
html_.push('<ul>');
self.render(object[folder]);
html_.push('</ul>');
...