tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ui.js (1846B)


      1 const UI = {
      2  createElement: config => {
      3    if (!config) return document.createElement("div");
      4    const elementType = config.element || "div";
      5    const element = document.createElement(elementType);
      6 
      7    Object.keys(config).forEach(property => {
      8      const value = config[property];
      9      switch (property.toLowerCase()) {
     10        case "id":
     11        case "src":
     12        case "style":
     13        case "placeholder":
     14        case "title":
     15          element.setAttribute(property, value);
     16          return;
     17        case "classname":
     18          element.setAttribute("class", value);
     19          return;
     20        case "text":
     21          element.innerText = value;
     22          return;
     23        case "html":
     24          element.innerHTML = value;
     25          return;
     26        case "onclick":
     27          element.onclick = value.bind(element);
     28          return;
     29        case "onchange":
     30          element.onchange = value.bind(element);
     31          return;
     32        case "onkeydown":
     33          element.onkeydown = value.bind(element);
     34          return;
     35        case "type":
     36          if (elementType === "input") element.setAttribute("type", value);
     37          return;
     38        case "children":
     39          if (value instanceof Array) {
     40            value.forEach(child =>
     41              element.appendChild(
     42                child instanceof Element ? child : UI.createElement(child)
     43              )
     44            );
     45          } else {
     46            element.appendChild(
     47              value instanceof Element ? value : UI.createElement(value)
     48            );
     49          }
     50          return;
     51        case "disabled":
     52          if (value) element.setAttribute("disabled", true);
     53          return;
     54      }
     55    });
     56    return element;
     57  },
     58  getElement: id => {
     59    return document.getElementById(id);
     60  },
     61  getRoot: () => {
     62    return document.getElementsByTagName("body")[0];
     63  }
     64 };