UNPKG

blaze-2d

Version:

A fast and simple WebGL 2 2D game engine written in TypeScript

64 lines (62 loc) 1.82 kB
import BlazeElement from "./element"; const fUHOvJbsFBcF = document.createElement("style"); fUHOvJbsFBcF.textContent = `.blzList { display: flex; flex-direction: column; overflow-y: scroll; padding: 0.5rem; } `; document.head.appendChild(fUHOvJbsFBcF); export default class BlazeList extends BlazeElement { /** * Create a {@link BlazeList}. * * @param autoScroll Wether or not new items should be scrolled into view */ constructor(autoScroll = true) { const element = document.createElement("div"); element.classList.add("blzList"); super(element); this.items = []; this.autoScroll = autoScroll; } /** * Adds the given items to the list. * * @param items The items to add */ addItems(...items) { this.items.push(...items); for (const item of items) { this.element.appendChild(item.element); } const lastItem = items[items.length - 1]; if (this.autoScroll) { if (this.element.scrollHeight - this.element.scrollTop <= this.element.clientHeight + lastItem.element.clientHeight * 6) this.element.scrollTo(0, this.element.scrollHeight); } } removeItem(item) { let index; if (typeof item === "number") { index = item; } else { index = this.items.findIndex((curr) => curr === item); } if (index < 0 || index >= this.items.length) return; this.items[index].element.remove(); this.items.splice(index, 1); } /** * Removes all items from the list. */ clearItems() { this.items.length = 0; this.element.replaceChildren(); } } //# sourceMappingURL=list.js.map