ngx-schema-forms
Version:
New features: - Ajv schema validator. - Angular forms compatible: Property tree is created using FormGroup, FormArray and FormControl classes. - Array now properly loads initial data from model. - WidgetTyep: WidgetRegistry now supports WidgetType, now wo
47 lines (46 loc) • 4.84 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @return {?}
*/
export function Unsubscriber() {
return function (target, propertyKey) {
/** @type {?} */
var _propertyKey = '__' + propertyKey;
Object.defineProperty(target, propertyKey, {
get: function () {
return this[_propertyKey];
},
set: function (subs) {
// replace anything the property holds with subscriptions list
if (!this[_propertyKey]) {
this[_propertyKey] = /** @type {?} */ ([]);
}
this[_propertyKey].push(subs);
},
enumerable: true,
configurable: true
});
/** @type {?} */
var componentOnDestroy = target.ngOnDestroy;
target.ngOnDestroy = function ngOnDestroy() {
if (componentOnDestroy) {
componentOnDestroy.call(target);
}
if (this[_propertyKey] && this[_propertyKey].length) {
// unsubscribe to all subscriptions added to unsubscriber
while (this[_propertyKey].length) {
/** @type {?} */
var subscription = this[_propertyKey].pop();
if (subscription && subscription.unsubscribe) {
subscription.unsubscribe();
}
}
this[_propertyKey] = undefined;
}
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdWJzY3JpYmVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNjaGVtYS1mb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi91bnN1YnNjcmliZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBLE1BQU07SUFDSixNQUFNLENBQUMsVUFBVSxNQUFNLEVBQUUsV0FBVzs7UUFFbEMsSUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUV4QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7WUFDekMsR0FBRyxFQUFFO2dCQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDM0I7WUFDRCxHQUFHLEVBQUUsVUFBVSxJQUFrQjs7Z0JBRS9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBbUIsRUFBRSxDQUFBLENBQUM7aUJBQ3pDO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7WUFDRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7O1FBRUgsSUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxXQUFXLEdBQUc7WUFDbkIsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDakM7WUFDRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O2dCQUVwRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs7b0JBQ2pDLElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDOUMsRUFBRSxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUM3QyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7cUJBQzVCO2lCQUNGO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUM7YUFDaEM7U0FDRixDQUFDO0tBRUgsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBVbnN1YnNjcmliZXIoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wZXJ0eUtleSkge1xuXG4gICAgY29uc3QgX3Byb3BlcnR5S2V5ID0gJ19fJyArIHByb3BlcnR5S2V5O1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpc1tfcHJvcGVydHlLZXldO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gKHN1YnM6IFN1YnNjcmlwdGlvbikge1xuICAgICAgICAvLyByZXBsYWNlIGFueXRoaW5nIHRoZSBwcm9wZXJ0eSBob2xkcyB3aXRoIHN1YnNjcmlwdGlvbnMgbGlzdFxuICAgICAgICBpZiAoIXRoaXNbX3Byb3BlcnR5S2V5XSkge1xuICAgICAgICAgIHRoaXNbX3Byb3BlcnR5S2V5XSA9IDxTdWJzY3JpcHRpb25bXT5bXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzW19wcm9wZXJ0eUtleV0ucHVzaChzdWJzKTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRPbkRlc3Ryb3kgPSB0YXJnZXQubmdPbkRlc3Ryb3k7XG4gICAgdGFyZ2V0Lm5nT25EZXN0cm95ID0gZnVuY3Rpb24gbmdPbkRlc3Ryb3koKSB7XG4gICAgICBpZiAoY29tcG9uZW50T25EZXN0cm95KSB7XG4gICAgICAgIGNvbXBvbmVudE9uRGVzdHJveS5jYWxsKHRhcmdldCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpc1tfcHJvcGVydHlLZXldICYmIHRoaXNbX3Byb3BlcnR5S2V5XS5sZW5ndGgpIHtcbiAgICAgICAgLy8gdW5zdWJzY3JpYmUgdG8gYWxsIHN1YnNjcmlwdGlvbnMgYWRkZWQgdG8gdW5zdWJzY3JpYmVyXG4gICAgICAgIHdoaWxlICh0aGlzW19wcm9wZXJ0eUtleV0ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpc1tfcHJvcGVydHlLZXldLnBvcCgpO1xuICAgICAgICAgIGlmIChzdWJzY3JpcHRpb24gJiYgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tfcHJvcGVydHlLZXldID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgfTtcbn1cbiJdfQ==