UNPKG

vulcain-corejs

Version:
47 lines (45 loc) 1.52 kB
"use strict"; const dynamicProperties_1 = require("./dynamicProperties"); const rx = require("rx"); class DynamicProperty { constructor(propertiesManager, name, defaultValue) { this.propertiesManager = propertiesManager; this.name = name; this.defaultValue = defaultValue; this.disposed = false; this._propertyChanged = new rx.Subject(); dynamicProperties_1.DynamicProperties.registerPropertyAsDependency(name, defaultValue); } get propertyChanged() { return this._propertyChanged; } get value() { if (this.disposed) throw new Error("Can not use a disposed property. Do you have call DynamicProperties.reset() ?"); return this.val || this.defaultValue; } set(val) { if (this.disposed) throw new Error("Can not use a disposed property. Do you have call DynamicProperties.reset() ?"); if (this.val !== val) { this.val = val; this.onPropertyChanged(); } } onPropertyChanged() { this._propertyChanged.onNext(this); this.propertiesManager.onPropertyChanged(this, "changed"); } reset() { this.val = undefined; this.onPropertyChanged(); } dispose() { this.disposed = true; this.onPropertyChanged(); this._propertyChanged.dispose(); this._propertyChanged = new rx.Subject(); } } exports.DynamicProperty = DynamicProperty; //# sourceMappingURL=dynamicProperty.js.map