igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
40 lines • 4.45 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { SimpleChange } from '@angular/core';
/**
* @hidden
* @return {?}
*/
export function WatchChanges() {
return function (target, key, propDesc) {
/** @type {?} */
var privateKey = '_' + key.toString();
propDesc = propDesc || {
configurable: true,
enumerable: true,
};
propDesc.get = propDesc.get || (function () { return this[privateKey]; });
/** @type {?} */
var originalSetter = propDesc.set || (function (val) { this[privateKey] = val; });
propDesc.set = function (val) {
var _a;
/** @type {?} */
var oldValue = this[key];
if (val !== oldValue || (typeof val === 'object' && val === oldValue)) {
originalSetter.call(this, val);
if (this.ngOnChanges) {
// in case wacthed prop changes trigger ngOnChanges manually
/** @type {?} */
var changes = (_a = {},
_a[key] = new SimpleChange(oldValue, val, false),
_a);
this.ngOnChanges(changes);
}
}
};
return propDesc;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2gtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvd2F0Y2gtY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBSzVELE1BQU0sVUFBVSxZQUFZO0lBQ3hCLE9BQU8sVUFBQyxNQUFXLEVBQUUsR0FBVyxFQUFFLFFBQTZCOztZQUNyRCxVQUFVLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDdkMsUUFBUSxHQUFHLFFBQVEsSUFBSTtZQUNuQixZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBQ0YsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBdUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7WUFDN0UsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFxQixHQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRyxRQUFRLENBQUMsR0FBRyxHQUFHLFVBQXFCLEdBQVE7OztnQkFDbEMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxRQUFRLENBQUMsRUFBRTtnQkFDbkUsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTs7O3dCQUVaLE9BQU87d0JBQ1QsR0FBQyxHQUFHLElBQUcsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7MkJBQ2hEO29CQUNELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzlCO2FBQ0g7UUFDTCxDQUFDLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2ltcGxlQ2hhbmdlcywgU2ltcGxlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuKiBAaGlkZGVuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIFdhdGNoQ2hhbmdlcygpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcsIHByb3BEZXNjPzogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSAnXycgKyBrZXkudG9TdHJpbmcoKTtcbiAgICAgICAgcHJvcERlc2MgPSBwcm9wRGVzYyB8fCB7XG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICBwcm9wRGVzYy5nZXQgPSBwcm9wRGVzYy5nZXQgfHwgKGZ1bmN0aW9uICh0aGlzOiBhbnkpIHsgcmV0dXJuIHRoaXNbcHJpdmF0ZUtleV07IH0pO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFNldHRlciA9IHByb3BEZXNjLnNldCB8fCAoZnVuY3Rpb24gKHRoaXM6IGFueSwgdmFsOiBhbnkpIHsgdGhpc1twcml2YXRlS2V5XSA9IHZhbDsgfSk7XG5cbiAgICAgICAgcHJvcERlc2Muc2V0ID0gZnVuY3Rpb24gKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpc1trZXldO1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gb2xkVmFsdWUgfHwgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCA9PT0gb2xkVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxTZXR0ZXIuY2FsbCh0aGlzLCB2YWwpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5nT25DaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGNhc2Ugd2FjdGhlZCBwcm9wIGNoYW5nZXMgdHJpZ2dlciBuZ09uQ2hhbmdlcyBtYW51YWxseVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2tleV06IG5ldyBTaW1wbGVDaGFuZ2Uob2xkVmFsdWUsIHZhbCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBwcm9wRGVzYztcbiAgICB9O1xufVxuIl19