define([], function () { return function () { var self = this var tabs = document.createElement("ul") tabs.classList.add("tabs") var container = document.createElement("div") function gotoTab(li) { for (var i = 0; i < tabs.children.length; i++) tabs.children[i].classList.remove("visible") while (container.firstChild) container.removeChild(container.firstChild) li.classList.add("visible") var tab = document.createElement("div") tab.classList.add("tab") container.appendChild(tab) li.child.render(tab) } function switchTab() { gotoTab(this) return false } self.add = function (title, d) { var li = document.createElement("li") li.textContent = title li.onclick = switchTab li.child = d tabs.appendChild(li) var anyVisible = false for (var i = 0; i < tabs.children.length; i++) if (tabs.children[i].classList.contains("visible")) { anyVisible = true break } if (!anyVisible) gotoTab(li) } self.render = function (el) { el.appendChild(tabs) el.appendChild(container) } return self } })