ngx-diagrams
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
156 lines • 10.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/base.entity.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { log as _log, withLog as _withLog, UID, LOG_LEVEL } from './utils/tool-kit.util';
import { BehaviorSubject, Subject } from 'rxjs';
import { map, mapTo, takeUntil, filter } from 'rxjs/operators';
import { BaseEvent, LockEvent } from './interfaces/event.interface';
export class BaseEntity {
/**
* @param {?=} id
* @param {?=} logPrefix
*/
constructor(id, logPrefix = '') {
this._destroyed = new Subject();
this._destroyed$ = this._destroyed.asObservable();
this._locked = new BehaviorSubject(false);
this._locked$ = this._locked.asObservable();
this._id = id || UID();
this._logPrefix = `${logPrefix}`;
}
/**
* @return {?}
*/
get id() {
return this._id;
}
/**
* @param {?} id
* @return {?}
*/
set id(id) {
this._id = id;
}
/**
* @param {?} message
* @param {...?} args
* @return {?}
*/
log(message, ...args) {
_log(`${this._logPrefix} ${message}: `, LOG_LEVEL.LOG, ...args);
}
/**
* @param {?} message
* @param {...?} args
* @return {?}
*/
withLog(message, ...args) {
return _withLog(`${this._logPrefix} ${message}: `, LOG_LEVEL.LOG, ...args);
}
/**
* @return {?}
*/
getLocked() {
return this._locked.getValue();
}
/**
* @param {?=} locked
* @return {?}
*/
setLocked(locked = true) {
this._locked.next(locked);
}
// tslint:disable-next-line
/**
* @param {?=} lookupTable
* @param {?=} clone
* @return {?}
*/
doClone(lookupTable = {}, clone) {
/*noop*/
}
/**
* @param {?=} lookupTable
* @return {?}
*/
clone(lookupTable = {}) {
// try and use an existing clone first
if (lookupTable[this.id]) {
return lookupTable[this.id];
}
/** @type {?} */
const clone = Object.assign({}, this);
clone.id = UID();
// clone.clearListeners();
lookupTable[this.id] = clone;
this.doClone(lookupTable, clone);
return clone;
}
/**
* @return {?}
*/
lockChanges() {
return this._locked$.pipe(takeUntil(this.onEntityDestroy()), map((/**
* @param {?} locked
* @return {?}
*/
locked => new LockEvent(this, locked))), this.withLog('lockChanges'));
}
/**
* @param {?=} options
* @return {?}
*/
destroy(options) {
/** @type {?} */
const defaultOptions = Object.assign({ emit: true, propagate: true }, options);
this.log('entity destroyed');
this._destroyed.next(defaultOptions);
this._destroyed.complete();
}
/**
* @return {?}
*/
onEntityDestroy() {
return this._destroyed$.pipe(filter((/**
* @param {?} opts
* @return {?}
*/
opts => opts.emit)), mapTo(new BaseEvent(this)));
}
}
if (false) {
/**
* @type {?}
* @private
*/
BaseEntity.prototype._id;
/**
* a prefix to make logs more easier
* @type {?}
* @private
*/
BaseEntity.prototype._logPrefix;
/**
* @type {?}
* @private
*/
BaseEntity.prototype._destroyed;
/**
* @type {?}
* @private
*/
BaseEntity.prototype._destroyed$;
/**
* @type {?}
* @private
*/
BaseEntity.prototype._locked;
/**
* @type {?}
* @private
*/
BaseEntity.prototype._locked$;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5lbnRpdHkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZGlhZ3JhbXMvIiwic291cmNlcyI6WyJsaWIvYmFzZS5lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQU0sR0FBRyxJQUFJLElBQUksRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWtCLE1BQU0sOEJBQThCLENBQUM7QUFJcEYsTUFBTSxPQUFPLFVBQVU7Ozs7O0lBV3RCLFlBQVksRUFBTyxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBTDNCLGVBQVUsR0FBNEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxnQkFBVyxHQUErQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pFLFlBQU8sR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsYUFBUSxHQUF3QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBR25FLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs7O0lBRUQsSUFBVyxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7Ozs7O0lBRUQsSUFBVyxFQUFFLENBQUMsRUFBTTtRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7Ozs7OztJQUVELEdBQUcsQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFTO1FBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7OztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFTO1FBQ3BDLE9BQU8sUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7OztJQUVELFNBQVM7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7Ozs7SUFFRCxTQUFTLENBQUMsU0FBa0IsSUFBSTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDOzs7Ozs7O0lBR0QsT0FBTyxDQUFDLGNBQW9DLEVBQUUsRUFBRSxLQUFVO1FBQ3pELFFBQVE7SUFDVCxDQUFDOzs7OztJQUVELEtBQUssQ0FBQyxjQUFvQyxFQUFFO1FBQzNDLHNDQUFzQztRQUN0QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVCOztjQUNLLEtBQUsscUJBQVEsSUFBSSxDQUFFO1FBQ3pCLEtBQUssQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsMEJBQTBCO1FBQzFCLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRTdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQzs7OztJQUVNLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUNqQyxHQUFHOzs7O1FBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUMsRUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FDM0IsQ0FBQztJQUNILENBQUM7Ozs7O0lBRU0sT0FBTyxDQUFDLE9BQXdCOztjQUNoQyxjQUFjLG1CQUNuQixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxJQUFJLElBQ1osT0FBTyxDQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7OztJQUVNLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDM0IsTUFBTTs7OztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUN6QixLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDMUIsQ0FBQztJQUNILENBQUM7Q0FDRDs7Ozs7O0lBcEZBLHlCQUFnQjs7Ozs7O0lBSWhCLGdDQUEyQjs7Ozs7SUFDM0IsZ0NBQTREOzs7OztJQUM1RCxpQ0FBaUY7Ozs7O0lBQ2pGLDZCQUF1RTs7Ozs7SUFDdkUsOEJBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUQsIGxvZyBhcyBfbG9nLCB3aXRoTG9nIGFzIF93aXRoTG9nLCBVSUQsIExPR19MRVZFTCB9IGZyb20gJy4vdXRpbHMvdG9vbC1raXQudXRpbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWFwVG8sIHRha2VVbnRpbCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZUV2ZW50LCBMb2NrRXZlbnQsIERlc3Ryb3lPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2V2ZW50LmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIEJhc2VFbnRpdHlUeXBlID0gJ25vZGUnIHwgJ2xpbmsnIHwgJ3BvcnQnIHwgJ3BvaW50JztcblxuZXhwb3J0IGNsYXNzIEJhc2VFbnRpdHkge1xuXHRwcml2YXRlIF9pZDogSUQ7XG5cdC8qKlxuXHQgKiBhIHByZWZpeCB0byBtYWtlIGxvZ3MgbW9yZSBlYXNpZXJcblx0ICovXG5cdHByaXZhdGUgX2xvZ1ByZWZpeDogc3RyaW5nO1xuXHRwcml2YXRlIF9kZXN0cm95ZWQ6IFN1YmplY3Q8RGVzdHJveU9wdGlvbnM+ID0gbmV3IFN1YmplY3QoKTtcblx0cHJpdmF0ZSBfZGVzdHJveWVkJDogT2JzZXJ2YWJsZTxEZXN0cm95T3B0aW9ucz4gPSB0aGlzLl9kZXN0cm95ZWQuYXNPYnNlcnZhYmxlKCk7XG5cdHByaXZhdGUgX2xvY2tlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cdHByaXZhdGUgX2xvY2tlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2NrZWQuYXNPYnNlcnZhYmxlKCk7XG5cblx0Y29uc3RydWN0b3IoaWQ/OiBJRCwgbG9nUHJlZml4ID0gJycpIHtcblx0XHR0aGlzLl9pZCA9IGlkIHx8IFVJRCgpO1xuXHRcdHRoaXMuX2xvZ1ByZWZpeCA9IGAke2xvZ1ByZWZpeH1gO1xuXHR9XG5cblx0cHVibGljIGdldCBpZCgpOiBJRCB7XG5cdFx0cmV0dXJuIHRoaXMuX2lkO1xuXHR9XG5cblx0cHVibGljIHNldCBpZChpZDogSUQpIHtcblx0XHR0aGlzLl9pZCA9IGlkO1xuXHR9XG5cblx0bG9nKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55KTogdm9pZCB7XG5cdFx0X2xvZyhgJHt0aGlzLl9sb2dQcmVmaXh9ICR7bWVzc2FnZX06IGAsIExPR19MRVZFTC5MT0csIC4uLmFyZ3MpO1xuXHR9XG5cblx0d2l0aExvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueSk6IGFueSB7XG5cdFx0cmV0dXJuIF93aXRoTG9nKGAke3RoaXMuX2xvZ1ByZWZpeH0gJHttZXNzYWdlfTogYCwgTE9HX0xFVkVMLkxPRywgLi4uYXJncyk7XG5cdH1cblxuXHRnZXRMb2NrZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2xvY2tlZC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0c2V0TG9ja2VkKGxvY2tlZDogYm9vbGVhbiA9IHRydWUpIHtcblx0XHR0aGlzLl9sb2NrZWQubmV4dChsb2NrZWQpO1xuXHR9XG5cblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG5cdGRvQ2xvbmUobG9va3VwVGFibGU6IHsgW3M6IHN0cmluZ106IGFueSB9ID0ge30sIGNsb25lOiBhbnkpIHtcblx0XHQvKm5vb3AqL1xuXHR9XG5cblx0Y2xvbmUobG9va3VwVGFibGU6IHsgW3M6IHN0cmluZ106IGFueSB9ID0ge30pIHtcblx0XHQvLyB0cnkgYW5kIHVzZSBhbiBleGlzdGluZyBjbG9uZSBmaXJzdFxuXHRcdGlmIChsb29rdXBUYWJsZVt0aGlzLmlkXSkge1xuXHRcdFx0cmV0dXJuIGxvb2t1cFRhYmxlW3RoaXMuaWRdO1xuXHRcdH1cblx0XHRjb25zdCBjbG9uZSA9IHsgLi4udGhpcyB9O1xuXHRcdGNsb25lLmlkID0gVUlEKCk7XG5cdFx0Ly8gY2xvbmUuY2xlYXJMaXN0ZW5lcnMoKTtcblx0XHRsb29rdXBUYWJsZVt0aGlzLmlkXSA9IGNsb25lO1xuXG5cdFx0dGhpcy5kb0Nsb25lKGxvb2t1cFRhYmxlLCBjbG9uZSk7XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9XG5cblx0cHVibGljIGxvY2tDaGFuZ2VzKCk6IE9ic2VydmFibGU8TG9ja0V2ZW50PiB7XG5cdFx0cmV0dXJuIHRoaXMuX2xvY2tlZCQucGlwZShcblx0XHRcdHRha2VVbnRpbCh0aGlzLm9uRW50aXR5RGVzdHJveSgpKSxcblx0XHRcdG1hcChsb2NrZWQgPT4gbmV3IExvY2tFdmVudCh0aGlzLCBsb2NrZWQpKSxcblx0XHRcdHRoaXMud2l0aExvZygnbG9ja0NoYW5nZXMnKVxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgZGVzdHJveShvcHRpb25zPzogRGVzdHJveU9wdGlvbnMpIHtcblx0XHRjb25zdCBkZWZhdWx0T3B0aW9uczogRGVzdHJveU9wdGlvbnMgPSB7XG5cdFx0XHRlbWl0OiB0cnVlLFxuXHRcdFx0cHJvcGFnYXRlOiB0cnVlLFxuXHRcdFx0Li4ub3B0aW9uc1xuXHRcdH07XG5cblx0XHR0aGlzLmxvZygnZW50aXR5IGRlc3Ryb3llZCcpO1xuXHRcdHRoaXMuX2Rlc3Ryb3llZC5uZXh0KGRlZmF1bHRPcHRpb25zKTtcblx0XHR0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcblx0fVxuXG5cdHB1YmxpYyBvbkVudGl0eURlc3Ryb3koKTogT2JzZXJ2YWJsZTxCYXNlRXZlbnQ8QmFzZUVudGl0eT4+IHtcblx0XHRyZXR1cm4gdGhpcy5fZGVzdHJveWVkJC5waXBlKFxuXHRcdFx0ZmlsdGVyKG9wdHMgPT4gb3B0cy5lbWl0KSxcblx0XHRcdG1hcFRvKG5ldyBCYXNlRXZlbnQodGhpcykpXG5cdFx0KTtcblx0fVxufVxuIl19