UNPKG

@dooboostore/dom-render

Version:
90 lines 2.77 kB
export class Appender { constructor(...defaultDatas) { this.length = 0; this.keyMap = new Map(); this.isAppender = true; // console.log('defaultDatas', defaultDatas); this.push(...defaultDatas); // (this.childs as any).isAppender = true; } [Symbol.iterator]() { const items = this.getAll(); let idx = 0; return { next(value) { let r = { value: undefined, done: true }; if (items.length > idx) { r = { value: items[idx], done: false }; } idx++; return r; } }; } set(key, ...v) { const o = this.keyMap.get(key); // console.log('set!!', o); if (o !== undefined) { this[o] = v; } else { this.keyMap.set(key, this.length); // console.log('setPush', v) this.push(...v); } } delete(key) { const o = this.keyMap.get(key); if (o !== undefined) { this[o] = []; this.keyMap.delete(key); // this.length--; } } getAll() { return this.getAlls().flat(); } getAlls() { const map = Array.from({ length: this.length }).filter((it, idx) => this[idx]).map((it, idx) => this[idx]); return map; } push(...items) { // console.log('----1>', items, items.length, this.length); if (items && items.length > 0) { items.index = this.length; this[this.length++] = items; // this[this.length] = []; } // console.log('----2>', items, items.length, this.length); // console.log('---22->', this.length) // const appender = this.childs[this.lastIndex]; // appender.values = items; // this.childs.push(new Appender(appender.index + 1)); } // delete(idx: number): void { // // if (idx in this) { // // console.log('---------dele',idx) // // delete this[idx]; // // this.length = this.length - 1; // // } // this.length = this.length - 1; // } // 인덱스 접근을 위한 getter와 setter 추가 // get(index: number): T | undefined { // return this.storage[index]; // } // // set(index: number, value: T): void { // this.storage[index] = value; // this.length = Math.max(this.length, index + 1); // } clear() { // console.log('length', this.length); for (let i = 0; i < this.length; i++) { delete this[i]; } this.keyMap.clear(); this.length = 0; } } //# sourceMappingURL=Appender.js.map