define([], function () { return function (distributor) { var container = document.createElement("ul"); container.classList.add("filters"); var div = document.createElement("div"); function render(el) { el.appendChild(div); } function filtersChanged(filters) { while (container.firstChild) { container.removeChild(container.firstChild); } filters.forEach(function (d) { var li = document.createElement("li"); var div = document.createElement("div"); container.appendChild(li); li.appendChild(div); d.render(div); var button = document.createElement("button"); button.textContent = ""; button.onclick = function () { distributor.removeFilter(d); }; li.appendChild(button); }); if (container.parentNode === div && filters.length === 0) { div.removeChild(container); } else if (filters.length > 0) { div.appendChild(container); } } return { render: render, filtersChanged: filtersChanged }; }; });