ngx-diagrams
Version:
> Light Weight, Modular, Typed Diagram Engine for Angular
62 lines • 8.01 kB
JavaScript
import { BaseEntity } from '../base.entity';
import { PaintedEvent, ParentChangeEvent, SelectionEvent } from '../interfaces/event.interface';
import { createValueState } from '../state/state';
export class BaseModel extends BaseEntity {
constructor(type, id, logPrefix = '[Base]') {
super(id, logPrefix);
this.parent$ = createValueState(null, this.entityPipe('ParentsChange'));
this.selected$ = createValueState(false, this.entityPipe('SelectedChange'));
this.hovered$ = createValueState(false, this.entityPipe('HoveredChange'));
this.painted$ = createValueState(false, this.entityPipe('PaintedChange'));
this._type = type;
}
serialize() {
return Object.assign(Object.assign({}, super.serialize()), { type: this.getType() });
}
getParent() {
return this.parent$.value;
}
setParent(parent) {
this.parent$.set(parent).emit();
}
parentChanges() {
return this.parent$.select((p) => new ParentChangeEvent(this, p));
}
getPainted() {
return this.painted$.value;
}
setPainted(painted = true) {
this.painted$.set(painted).emit();
}
getHovered() {
return this.hovered$.value;
}
setHovered(painted = true) {
this.hovered$.set(painted).emit();
}
selectHovered() {
return this.hovered$.value$;
}
paintChanges() {
return this.painted$.select((p) => new PaintedEvent(this, p));
}
getType() {
return this._type;
}
getSelected() {
return this.selected$.value;
}
selectSelected() {
return this.selected$.select();
}
setSelected(selected = true) {
this.selected$.set(selected).emit();
}
selectionChanges() {
return this.selected$.select((selected) => new SelectionEvent(this, selected));
}
getSelectedEntities() {
return this.getSelected() ? [this] : [];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9saWJzL25neC1kaWFncmFtcy9zcmMvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2Jhc2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsTUFBTSxPQUFPLFNBQTZDLFNBQVEsVUFBVTtJQVExRSxZQUFZLElBQWEsRUFBRSxFQUFXLEVBQUUsU0FBUyxHQUFHLFFBQVE7UUFDMUQsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5iLFlBQU8sR0FBRyxnQkFBZ0IsQ0FBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBVSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDaEYsYUFBUSxHQUFHLGdCQUFnQixDQUFVLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsYUFBUSxHQUFHLGdCQUFnQixDQUFVLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFJdEYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVM7UUFDUCx1Q0FDSyxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQ3BCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQ3BCO0lBQ0osQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBUztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUk7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUk7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBUSxHQUFHLElBQUk7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5IH0gZnJvbSAnLi4vYmFzZS5lbnRpdHknO1xuaW1wb3J0IHsgUGFpbnRlZEV2ZW50LCBQYXJlbnRDaGFuZ2VFdmVudCwgU2VsZWN0aW9uRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBjcmVhdGVWYWx1ZVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvc3RhdGUnO1xuXG5leHBvcnQgY2xhc3MgQmFzZU1vZGVsPEUgZXh0ZW5kcyBCYXNlRW50aXR5ID0gQmFzZUVudGl0eT4gZXh0ZW5kcyBCYXNlRW50aXR5IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90eXBlOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHBhcmVudCQgPSBjcmVhdGVWYWx1ZVN0YXRlPEU+KG51bGwsIHRoaXMuZW50aXR5UGlwZSgnUGFyZW50c0NoYW5nZScpKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkJCA9IGNyZWF0ZVZhbHVlU3RhdGU8Ym9vbGVhbj4oZmFsc2UsIHRoaXMuZW50aXR5UGlwZSgnU2VsZWN0ZWRDaGFuZ2UnKSk7XG4gIHByb3RlY3RlZCBob3ZlcmVkJCA9IGNyZWF0ZVZhbHVlU3RhdGU8Ym9vbGVhbj4oZmFsc2UsIHRoaXMuZW50aXR5UGlwZSgnSG92ZXJlZENoYW5nZScpKTtcbiAgcHJvdGVjdGVkIHBhaW50ZWQkID0gY3JlYXRlVmFsdWVTdGF0ZTxib29sZWFuPihmYWxzZSwgdGhpcy5lbnRpdHlQaXBlKCdQYWludGVkQ2hhbmdlJykpO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGlkPzogc3RyaW5nLCBsb2dQcmVmaXggPSAnW0Jhc2VdJykge1xuICAgIHN1cGVyKGlkLCBsb2dQcmVmaXgpO1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgc2VyaWFsaXplKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5zZXJpYWxpemUoKSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZSgpXG4gICAgfTtcbiAgfVxuXG4gIGdldFBhcmVudCgpOiBFIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQkLnZhbHVlO1xuICB9XG5cbiAgc2V0UGFyZW50KHBhcmVudDogRSk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50JC5zZXQocGFyZW50KS5lbWl0KCk7XG4gIH1cblxuICBwYXJlbnRDaGFuZ2VzKCk6IE9ic2VydmFibGU8UGFyZW50Q2hhbmdlRXZlbnQ8RT4+IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQkLnNlbGVjdCgocCkgPT4gbmV3IFBhcmVudENoYW5nZUV2ZW50KHRoaXMsIHApKTtcbiAgfVxuXG4gIGdldFBhaW50ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFpbnRlZCQudmFsdWU7XG4gIH1cblxuICBzZXRQYWludGVkKHBhaW50ZWQgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5wYWludGVkJC5zZXQocGFpbnRlZCkuZW1pdCgpO1xuICB9XG5cbiAgZ2V0SG92ZXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ob3ZlcmVkJC52YWx1ZTtcbiAgfVxuXG4gIHNldEhvdmVyZWQocGFpbnRlZCA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLmhvdmVyZWQkLnNldChwYWludGVkKS5lbWl0KCk7XG4gIH1cblxuICBzZWxlY3RIb3ZlcmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmhvdmVyZWQkLnZhbHVlJDtcbiAgfVxuXG4gIHBhaW50Q2hhbmdlcygpOiBPYnNlcnZhYmxlPFBhaW50ZWRFdmVudD4ge1xuICAgIHJldHVybiB0aGlzLnBhaW50ZWQkLnNlbGVjdCgocCkgPT4gbmV3IFBhaW50ZWRFdmVudCh0aGlzLCBwKSk7XG4gIH1cblxuICBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBnZXRTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCQudmFsdWU7XG4gIH1cblxuICBzZWxlY3RTZWxlY3RlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZCQuc2VsZWN0KCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZChzZWxlY3RlZCA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkJC5zZXQoc2VsZWN0ZWQpLmVtaXQoKTtcbiAgfVxuXG4gIHNlbGVjdGlvbkNoYW5nZXMoKTogT2JzZXJ2YWJsZTxTZWxlY3Rpb25FdmVudD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkJC5zZWxlY3QoKHNlbGVjdGVkKSA9PiBuZXcgU2VsZWN0aW9uRXZlbnQodGhpcywgc2VsZWN0ZWQpKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkRW50aXRpZXMoKTogQmFzZU1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGVkKCkgPyBbdGhpc10gOiBbXTtcbiAgfVxufVxuIl19