export class DrawerAggregator { constructor(drawer, geometricObject, konvaObject, elementClass) { this.drawer = drawer; this.genericObject = geometricObject; this.konvaObject = konvaObject; this.aggregators = []; this.visible = true; if (elementClass != undefined) this.elementClass = elementClass; else { if ( konvaObject.attrs != undefined && konvaObject.attrs.class != undefined ) this.elementClass = konvaObject.attrs.class; } } setGeometricObject(genericObject) { this.genericObject = genericObject; } setDrawer(drawer) { this.drawer = drawer; } setKonvaObject(konvaObject) { this.konvaObject = konvaObject; } setElementClass(elementClass) { this.elementClass = elementClass; } addAggregator(aggregator) { if (!this.aggregators.includes(aggregator)) { this.aggregators.push(aggregator); this.genericObject.dependentsOnThis.push(aggregator.genericObject); } } update(e) { this.drawer.update(this, e); this.updateAggregators(this.aggregators, e); } updateAggregators(aggregators, e) { aggregators.forEach(aggregator => { aggregator.drawer.update(aggregator, e); if ( aggregator.aggregators == undefined || aggregator.aggregators.length == 0 ) { return; } this.updateAggregators(aggregator.aggregators, e); }); } }