ngx-diagrams
Version:
> Light Weight, Modular, Typed Diagram Engine for Angular
37 lines • 5.15 kB
JavaScript
import { PortModel } from '../../models/port.model';
import { DefaultLinkModel } from './default-link.model';
export class DefaultPortModel extends PortModel {
constructor({ isInput = true, name = 'port', type = 'default', id = null, label = null, linkType = 'default', maximumLinks = null } = {}) {
super(name, type, id, null, linkType);
this.in = isInput;
this.label = label || name;
if (this.in) {
this.setCanCreateLinks(false);
}
else {
this.setMaximumLinks(maximumLinks);
this.setMagnetic(false);
}
}
link(port) {
if (super.getCanCreateLinks()) {
const link = new DefaultLinkModel({ type: this.getLinkType() });
link.setSourcePort(this);
link.setTargetPort(port);
return link;
}
return null;
}
createLinkModel() {
if (super.getCanCreateLinks()) {
return new DefaultLinkModel({ type: this.getLinkType() });
}
}
canLinkToPort(port) {
if (port instanceof DefaultPortModel) {
return this.in !== port.in;
}
return true;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wb3J0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL2xpYnMvbmd4LWRpYWdyYW1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZWZhdWx0cy9tb2RlbHMvZGVmYXVsdC1wb3J0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVl4RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQUs3QyxZQUFZLEVBQ1YsT0FBTyxHQUFHLElBQUksRUFDZCxJQUFJLEdBQUcsTUFBTSxFQUNiLElBQUksR0FBRyxTQUFTLEVBQ2hCLEVBQUUsR0FBRyxJQUFJLEVBQ1QsS0FBSyxHQUFHLElBQUksRUFDWixRQUFRLEdBQUcsU0FBUyxFQUNwQixZQUFZLEdBQUcsSUFBSSxLQUNPLEVBQUU7UUFDNUIsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQWU7UUFDbEIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUM3QixPQUFPLElBQUksZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBZTtRQUMzQixJQUFJLElBQUksWUFBWSxnQkFBZ0IsRUFBRTtZQUNwQyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUM1QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlua01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xpbmsubW9kZWwnO1xuaW1wb3J0IHsgUG9ydE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnQubW9kZWwnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IERlZmF1bHRMaW5rTW9kZWwgfSBmcm9tICcuL2RlZmF1bHQtbGluay5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFBvcnRNb2RlbENvbmZpZyB7XG4gIGlkPzogc3RyaW5nO1xuICBpc0lucHV0PzogYm9vbGVhbjtcbiAgbmFtZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGxpbmtUeXBlPzogc3RyaW5nO1xuICBtYXhpbXVtTGlua3M/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0UG9ydE1vZGVsIGV4dGVuZHMgUG9ydE1vZGVsIHtcbiAgaW46IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbmtzOiBIYXNoTWFwPGFueT47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGlzSW5wdXQgPSB0cnVlLFxuICAgIG5hbWUgPSAncG9ydCcsXG4gICAgdHlwZSA9ICdkZWZhdWx0JyxcbiAgICBpZCA9IG51bGwsXG4gICAgbGFiZWwgPSBudWxsLFxuICAgIGxpbmtUeXBlID0gJ2RlZmF1bHQnLFxuICAgIG1heGltdW1MaW5rcyA9IG51bGxcbiAgfTogRGVmYXVsdFBvcnRNb2RlbENvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIobmFtZSwgdHlwZSwgaWQsIG51bGwsIGxpbmtUeXBlKTtcbiAgICB0aGlzLmluID0gaXNJbnB1dDtcbiAgICB0aGlzLmxhYmVsID0gbGFiZWwgfHwgbmFtZTtcblxuICAgIGlmICh0aGlzLmluKSB7XG4gICAgICB0aGlzLnNldENhbkNyZWF0ZUxpbmtzKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRNYXhpbXVtTGlua3MobWF4aW11bUxpbmtzKTtcbiAgICAgIHRoaXMuc2V0TWFnbmV0aWMoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGxpbmsocG9ydDogUG9ydE1vZGVsKTogTGlua01vZGVsIHtcbiAgICBpZiAoc3VwZXIuZ2V0Q2FuQ3JlYXRlTGlua3MoKSkge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBEZWZhdWx0TGlua01vZGVsKHsgdHlwZTogdGhpcy5nZXRMaW5rVHlwZSgpIH0pO1xuICAgICAgbGluay5zZXRTb3VyY2VQb3J0KHRoaXMpO1xuICAgICAgbGluay5zZXRUYXJnZXRQb3J0KHBvcnQpO1xuICAgICAgcmV0dXJuIGxpbms7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjcmVhdGVMaW5rTW9kZWwoKSB7XG4gICAgaWYgKHN1cGVyLmdldENhbkNyZWF0ZUxpbmtzKCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGVmYXVsdExpbmtNb2RlbCh7IHR5cGU6IHRoaXMuZ2V0TGlua1R5cGUoKSB9KTtcbiAgICB9XG4gIH1cblxuICBjYW5MaW5rVG9Qb3J0KHBvcnQ6IFBvcnRNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmIChwb3J0IGluc3RhbmNlb2YgRGVmYXVsdFBvcnRNb2RlbCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW4gIT09IHBvcnQuaW47XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=