UNPKG

ngx-diagrams

Version:

> Light Weight, Modular, Typed Diagram Engine for Angular

40 lines 5.14 kB
import { createValueState } from '../state/state'; import { BaseModel } from './base.model'; export class PointModel extends BaseModel { constructor(link, coords, id, logPrefix = '[Point]') { super(link.getType(), id, logPrefix); this.coords$ = createValueState(coords, this.entityPipe('coords')); this.setParent(link); } serialize() { return Object.assign(Object.assign({}, super.serialize()), { coords: this.getCoords() }); } isConnectedToPort() { return this.getParent().getPortForPoint(this) !== null; } getLink() { return this.getParent(); } destroy() { if (this.getParent) { this.getParent().removePoint(this); } super.destroy(); } setCoords(newCoords) { this.coords$.set(Object.assign(Object.assign({}, this.getCoords()), newCoords)).emit(); } selectCoords() { return this.coords$.value$; } getCoords() { return this.coords$.value; } selectX() { return this.coords$.select((coords) => coords.x); } selectY() { return this.coords$.select((coords) => coords.y); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vbGlicy9uZ3gtZGlhZ3JhbXMvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9wb2ludC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pDLE1BQU0sT0FBTyxVQUFXLFNBQVEsU0FBb0I7SUFHbEQsWUFBWSxJQUFlLEVBQUUsTUFBYyxFQUFFLEVBQVcsRUFBRSxTQUFTLEdBQUcsU0FBUztRQUM3RSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsU0FBUztRQUNQLHVDQUNLLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFDeEI7SUFDSixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFFRCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUEwQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsaUNBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFLLFNBQVMsRUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vcmRzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb29yZHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRQb2ludE1vZGVsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJpYWxpemF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjcmVhdGVWYWx1ZVN0YXRlLCBWYWx1ZVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvc3RhdGUnO1xuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi9iYXNlLm1vZGVsJztcbmltcG9ydCB7IExpbmtNb2RlbCB9IGZyb20gJy4vbGluay5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBQb2ludE1vZGVsIGV4dGVuZHMgQmFzZU1vZGVsPExpbmtNb2RlbD4ge1xuICBwcm90ZWN0ZWQgY29vcmRzJDogVmFsdWVTdGF0ZTxDb29yZHM+O1xuXG4gIGNvbnN0cnVjdG9yKGxpbms6IExpbmtNb2RlbCwgY29vcmRzOiBDb29yZHMsIGlkPzogc3RyaW5nLCBsb2dQcmVmaXggPSAnW1BvaW50XScpIHtcbiAgICBzdXBlcihsaW5rLmdldFR5cGUoKSwgaWQsIGxvZ1ByZWZpeCk7XG4gICAgdGhpcy5jb29yZHMkID0gY3JlYXRlVmFsdWVTdGF0ZShjb29yZHMsIHRoaXMuZW50aXR5UGlwZSgnY29vcmRzJykpO1xuICAgIHRoaXMuc2V0UGFyZW50KGxpbmspO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRQb2ludE1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuc2VyaWFsaXplKCksXG4gICAgICBjb29yZHM6IHRoaXMuZ2V0Q29vcmRzKClcbiAgICB9O1xuICB9XG5cbiAgaXNDb25uZWN0ZWRUb1BvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50KCkuZ2V0UG9ydEZvclBvaW50KHRoaXMpICE9PSBudWxsO1xuICB9XG5cbiAgZ2V0TGluaygpOiBMaW5rTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmdldFBhcmVudCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5nZXRQYXJlbnQpIHtcbiAgICAgIHRoaXMuZ2V0UGFyZW50KCkucmVtb3ZlUG9pbnQodGhpcyk7XG4gICAgfVxuXG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgc2V0Q29vcmRzKG5ld0Nvb3JkczogUGFydGlhbDxDb29yZHM+KSB7XG4gICAgdGhpcy5jb29yZHMkLnNldCh7IC4uLnRoaXMuZ2V0Q29vcmRzKCksIC4uLm5ld0Nvb3JkcyB9KS5lbWl0KCk7XG4gIH1cblxuICBzZWxlY3RDb29yZHMoKTogT2JzZXJ2YWJsZTxDb29yZHM+IHtcbiAgICByZXR1cm4gdGhpcy5jb29yZHMkLnZhbHVlJDtcbiAgfVxuXG4gIGdldENvb3JkcygpOiBDb29yZHMge1xuICAgIHJldHVybiB0aGlzLmNvb3JkcyQudmFsdWU7XG4gIH1cblxuICBzZWxlY3RYKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuY29vcmRzJC5zZWxlY3QoKGNvb3JkcykgPT4gY29vcmRzLngpO1xuICB9XG5cbiAgc2VsZWN0WSgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmNvb3JkcyQuc2VsZWN0KChjb29yZHMpID0+IGNvb3Jkcy55KTtcbiAgfVxufVxuIl19