ngx-diagrams
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
283 lines • 14.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/models/port.model.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { BaseModel } from './base.model';
import { BehaviorSubject } from 'rxjs';
var PortModel = /** @class */ (function (_super) {
tslib_1.__extends(PortModel, _super);
function PortModel(name, type, id, maximumLinks, linkType) {
var _this = _super.call(this, type, id) || this;
_this.name = name;
_this.links$ = new BehaviorSubject({});
_this.maximumLinks = maximumLinks;
_this.x$ = new BehaviorSubject(0);
_this.y$ = new BehaviorSubject(0);
_this.height$ = new BehaviorSubject(0);
_this.width$ = new BehaviorSubject(0);
_this.linkType = linkType;
return _this;
}
/**
* @return {?}
*/
PortModel.prototype.getNode = /**
* @return {?}
*/
function () {
return this.getParent();
};
/**
* @return {?}
*/
PortModel.prototype.getName = /**
* @return {?}
*/
function () {
return this.name;
};
/**
* @return {?}
*/
PortModel.prototype.selectX = /**
* @return {?}
*/
function () {
return this.x$.asObservable();
};
/**
* @return {?}
*/
PortModel.prototype.selectY = /**
* @return {?}
*/
function () {
return this.y$.asObservable();
};
/**
* @return {?}
*/
PortModel.prototype.getY = /**
* @return {?}
*/
function () {
return this.y$.getValue();
};
/**
* @return {?}
*/
PortModel.prototype.getX = /**
* @return {?}
*/
function () {
return this.x$.getValue();
};
/**
* @return {?}
*/
PortModel.prototype.getHeight = /**
* @return {?}
*/
function () {
return this.height$.getValue();
};
/**
* @return {?}
*/
PortModel.prototype.getWidth = /**
* @return {?}
*/
function () {
return this.width$.getValue();
};
/**
* @return {?}
*/
PortModel.prototype.getMaximumLinks = /**
* @return {?}
*/
function () {
return this.maximumLinks;
};
/**
* @param {?} maximumLinks
* @return {?}
*/
PortModel.prototype.setMaximumLinks = /**
* @param {?} maximumLinks
* @return {?}
*/
function (maximumLinks) {
this.maximumLinks = maximumLinks;
};
/**
* @return {?}
*/
PortModel.prototype.getLinkType = /**
* @return {?}
*/
function () {
return this.linkType;
};
/**
* @param {?} type
* @return {?}
*/
PortModel.prototype.setLinkType = /**
* @param {?} type
* @return {?}
*/
function (type) {
this.linkType = type;
};
/**
* @param {?} link
* @return {?}
*/
PortModel.prototype.removeLink = /**
* @param {?} link
* @return {?}
*/
function (link) {
/** @type {?} */
var links = this.links$.getValue();
delete links[link.id];
this.links$.next(tslib_1.__assign({}, links));
};
/**
* @param {?} link
* @return {?}
*/
PortModel.prototype.addLink = /**
* @param {?} link
* @return {?}
*/
function (link) {
var _a;
this.links$.next(tslib_1.__assign({}, this.links$.value, (_a = {}, _a[link.id] = link, _a)));
};
/**
* @return {?}
*/
PortModel.prototype.getLinks = /**
* @return {?}
*/
function () {
return this.links$.getValue();
};
/**
* @return {?}
*/
PortModel.prototype.selectLinks = /**
* @return {?}
*/
function () {
return this.links$.asObservable();
};
/**
* @param {?} __0
* @return {?}
*/
PortModel.prototype.updateCoords = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
this.x$.next(x);
this.y$.next(y);
this.width$.next(width);
this.height$.next(height);
};
/**
* @param {?} port
* @return {?}
*/
PortModel.prototype.canLinkToPort = /**
* @param {?} port
* @return {?}
*/
function (port) {
return true;
};
/**
* @return {?}
*/
PortModel.prototype.isLocked = /**
* @return {?}
*/
function () {
return _super.prototype.getLocked.call(this);
};
/**
* @return {?}
*/
PortModel.prototype.createLinkModel = /**
* @return {?}
*/
function () {
/** @type {?} */
var numberOfLinks = Object.keys(this.links$.getValue()).length;
if (this.maximumLinks === 1 && numberOfLinks >= 1) {
/** @type {?} */
var linkToRemove = Object.values(this.links$.getValue())[0];
linkToRemove.destroy();
return null;
}
else if (numberOfLinks >= this.maximumLinks) {
// for the moment we will remove the first link by default
/** @type {?} */
var linkToRemove = Object.values(this.links$.getValue())[0];
linkToRemove.destroy();
return null;
}
return null;
};
return PortModel;
}(BaseModel));
export { PortModel };
if (false) {
/**
* @type {?}
* @private
*/
PortModel.prototype.name;
/**
* @type {?}
* @private
*/
PortModel.prototype.links$;
/**
* @type {?}
* @private
*/
PortModel.prototype.maximumLinks;
/**
* @type {?}
* @private
*/
PortModel.prototype.linkType;
/**
* @type {?}
* @private
*/
PortModel.prototype.x$;
/**
* @type {?}
* @private
*/
PortModel.prototype.y$;
/**
* @type {?}
* @private
*/
PortModel.prototype.width$;
/**
* @type {?}
* @private
*/
PortModel.prototype.height$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kaWFncmFtcy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvcG9ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQ7SUFBK0IscUNBQW9CO0lBV2xELG1CQUFZLElBQVksRUFBRSxJQUFhLEVBQUUsRUFBVyxFQUFFLFlBQXFCLEVBQUUsUUFBaUI7UUFBOUYsWUFDQyxrQkFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBU2Y7UUFSQSxLQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLEtBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLEtBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsS0FBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxLQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsS0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7O0lBQzFCLENBQUM7Ozs7SUFFRCwyQkFBTzs7O0lBQVA7UUFDQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7O0lBRUQsMkJBQU87OztJQUFQO1FBQ0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFFRCwyQkFBTzs7O0lBQVA7UUFDQyxPQUFPLElB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LEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztTQUNaO2FBQU0sSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTs7O2dCQUV4QyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBQ0YsZ0JBQUM7QUFBRCxDQUFDLEFBdEhELENBQStCLFNBQVMsR0FzSHZDOzs7Ozs7O0lBckhBLHlCQUFxQjs7Ozs7SUFDckIsMkJBQTZEOzs7OztJQUM3RCxpQ0FBNkI7Ozs7O0lBQzdCLDZCQUF5Qjs7Ozs7SUFFekIsdUJBQW9DOzs7OztJQUNwQyx1QkFBb0M7Ozs7O0lBQ3BDLDJCQUF3Qzs7Ozs7SUFDeEMsNEJBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi9iYXNlLm1vZGVsJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4vbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBMaW5rTW9kZWwgfSBmcm9tICcuL2xpbmsubW9kZWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBQb3J0TW9kZWwgZXh0ZW5kcyBCYXNlTW9kZWw8Tm9kZU1vZGVsPiB7XG5cdHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXHRwcml2YXRlIGxpbmtzJDogQmVoYXZpb3JTdWJqZWN0PHsgW2lkOiBzdHJpbmddOiBMaW5rTW9kZWwgfT47XG5cdHByaXZhdGUgbWF4aW11bUxpbmtzOiBudW1iZXI7XG5cdHByaXZhdGUgbGlua1R5cGU6IHN0cmluZztcblxuXHRwcml2YXRlIHgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcblx0cHJpdmF0ZSB5JDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG5cdHByaXZhdGUgd2lkdGgkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcblx0cHJpdmF0ZSBoZWlnaHQkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcblxuXHRjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGlkPzogc3RyaW5nLCBtYXhpbXVtTGlua3M/OiBudW1iZXIsIGxpbmtUeXBlPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIodHlwZSwgaWQpO1xuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5saW5rcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcblx0XHR0aGlzLm1heGltdW1MaW5rcyA9IG1heGltdW1MaW5rcztcblx0XHR0aGlzLngkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblx0XHR0aGlzLnkkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblx0XHR0aGlzLmhlaWdodCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApO1xuXHRcdHRoaXMud2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcblx0XHR0aGlzLmxpbmtUeXBlID0gbGlua1R5cGU7XG5cdH1cblxuXHRnZXROb2RlKCkge1xuXHRcdHJldHVybiB0aGlzLmdldFBhcmVudCgpO1xuXHR9XG5cblx0Z2V0TmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5uYW1lO1xuXHR9XG5cblx0c2VsZWN0WCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuXHRcdHJldHVybiB0aGlzLngkLmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0c2VsZWN0WSgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuXHRcdHJldHVybiB0aGlzLnkkLmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0Z2V0WSgpIHtcblx0XHRyZXR1cm4gdGhpcy55JC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0Z2V0WCgpIHtcblx0XHRyZXR1cm4gdGhpcy54JC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0Z2V0SGVpZ2h0KCkge1xuXHRcdHJldHVybiB0aGlzLmhlaWdodCQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdGdldFdpZHRoKCkge1xuXHRcdHJldHVybiB0aGlzLndpZHRoJC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0Z2V0TWF4aW11bUxpbmtzKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMubWF4aW11bUxpbmtzO1xuXHR9XG5cblx0c2V0TWF4aW11bUxpbmtzKG1heGltdW1MaW5rczogbnVtYmVyKSB7XG5cdFx0dGhpcy5tYXhpbXVtTGlua3MgPSBtYXhpbXVtTGlua3M7XG5cdH1cblxuXHRnZXRMaW5rVHlwZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5saW5rVHlwZTtcblx0fVxuXG5cdHNldExpbmtUeXBlKHR5cGU6IHN0cmluZykge1xuXHRcdHRoaXMubGlua1R5cGUgPSB0eXBlO1xuXHR9XG5cblx0cmVtb3ZlTGluayhsaW5rOiBMaW5rTW9kZWwpIHtcblx0XHRjb25zdCBsaW5rcyA9IHRoaXMubGlua3MkLmdldFZhbHVlKCk7XG5cdFx0ZGVsZXRlIGxpbmtzW2xpbmsuaWRdO1xuXHRcdHRoaXMubGlua3MkLm5leHQoeyAuLi5saW5rcyB9KTtcblx0fVxuXG5cdGFkZExpbmsobGluazogTGlua01vZGVsKSB7XG5cdFx0dGhpcy5saW5rcyQubmV4dCh7IC4uLnRoaXMubGlua3MkLnZhbHVlLCBbbGluay5pZF06IGxpbmsgfSk7XG5cdH1cblxuXHRnZXRMaW5rcygpOiB7IFtpZDogc3RyaW5nXTogTGlua01vZGVsIH0ge1xuXHRcdHJldHVybiB0aGlzLmxpbmtzJC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0c2VsZWN0TGlua3MoKTogT2JzZXJ2YWJsZTx7IFtpZDogc3RyaW5nXTogTGlua01vZGVsIH0+IHtcblx0XHRyZXR1cm4gdGhpcy5saW5rcyQuYXNPYnNlcnZhYmxlKCk7XG5cdH1cblxuXHR1cGRhdGVDb29yZHMoeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH06IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0pIHtcblx0XHR0aGlzLngkLm5leHQoeCk7XG5cdFx0dGhpcy55JC5uZXh0KHkpO1xuXHRcdHRoaXMud2lkdGgkLm5leHQod2lkdGgpO1xuXHRcdHRoaXMuaGVpZ2h0JC5uZXh0KGhlaWdodCk7XG5cdH1cblxuXHRjYW5MaW5rVG9Qb3J0KHBvcnQ6IFBvcnRNb2RlbCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0aXNMb2NrZWQoKSB7XG5cdFx0cmV0dXJuIHN1cGVyLmdldExvY2tlZCgpO1xuXHR9XG5cblx0cHVibGljIGNyZWF0ZUxpbmtNb2RlbCgpOiBMaW5rTW9kZWwgfCBudWxsIHtcblx0XHRjb25zdCBudW1iZXJPZkxpbmtzOiBudW1iZXIgPSBPYmplY3Qua2V5cyh0aGlzLmxpbmtzJC5nZXRWYWx1ZSgpKS5sZW5ndGg7XG5cdFx0aWYgKHRoaXMubWF4aW11bUxpbmtzID09PSAxICYmIG51bWJlck9mTGlua3MgPj0gMSkge1xuXHRcdFx0Y29uc3QgbGlua1RvUmVtb3ZlID0gT2JqZWN0LnZhbHVlcyh0aGlzLmxpbmtzJC5nZXRWYWx1ZSgpKVswXTtcblx0XHRcdGxpbmtUb1JlbW92ZS5kZXN0cm95KCk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9IGVsc2UgaWYgKG51bWJlck9mTGlua3MgPj0gdGhpcy5tYXhpbXVtTGlua3MpIHtcblx0XHRcdC8vIGZvciB0aGUgbW9tZW50IHdlIHdpbGwgcmVtb3ZlIHRoZSBmaXJzdCBsaW5rIGJ5IGRlZmF1bHRcblx0XHRcdGNvbnN0IGxpbmtUb1JlbW92ZSA9IE9iamVjdC52YWx1ZXModGhpcy5saW5rcyQuZ2V0VmFsdWUoKSlbMF07XG5cdFx0XHRsaW5rVG9SZW1vdmUuZGVzdHJveSgpO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG59XG4iXX0=