@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
45 lines • 5.09 kB
JavaScript
import { Pipe } from '@angular/core';
import * as i0 from "@angular/core";
/**
* This pipe filters an array and returns the result.
* Normally we would get an exception if we simply returned the transformed
* array as it causes an additional change detection cycle in dev mode.
*
* To avoid this we always return the same array an merely add remove items from it
* This is not a great option for large arrays, but will work fine for small ones.
*
* See the following stack overflow question for more details
* http://stackoverflow.com/a/34497504/7292792
*/
export class FilterPipe {
constructor() {
this.tmp = [];
}
transform(value, filter, not = false) {
this.tmp.length = 0;
if (value && Array.isArray(value)) {
let filterFunc = filter;
if (typeof filter === 'string') {
const prop = filter;
filterFunc = item => item[prop];
}
if (not) {
const originalFunc = filterFunc;
filterFunc = item => !originalFunc(item);
}
const arr = value.filter(filterFunc);
this.tmp.push(...arr);
}
return this.tmp;
}
}
/** @nocollapse */ FilterPipe.ɵfac = function FilterPipe_Factory(t) { return new (t || FilterPipe)(); };
/** @nocollapse */ FilterPipe.ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "smeFilter", type: FilterPipe, pure: false });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FilterPipe, [{
type: Pipe,
args: [{
name: 'smeFilter',
pure: false
}]
}], null, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9waXBlcy9maWx0ZXItcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBZnZCO1FBZ0JZLFFBQUcsR0FBRyxFQUFFLENBQUM7S0FrQnBCO0lBakJVLFNBQVMsQ0FBQyxLQUFpQixFQUFFLE1BQTRDLEVBQUUsTUFBVyxLQUFLO1FBQzlGLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9CLElBQUksVUFBVSxHQUE2RCxNQUFNLENBQUM7WUFDbEYsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDO2dCQUNoQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QztZQUNELE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDOzt1RkFsQlEsVUFBVTsyR0FBVixVQUFVO3VGQUFWLFVBQVU7Y0FmdEIsSUFBSTtlQUFDO2dCQUNGLElBQUksRUFBRSxXQUFXO2dCQUNqQixJQUFJLEVBQUUsS0FBSzthQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogJ3NtZUZpbHRlcicsXHJcbiAgICBwdXJlOiBmYWxzZVxyXG59KVxyXG4vKipcclxuICogVGhpcyBwaXBlIGZpbHRlcnMgYW4gYXJyYXkgYW5kIHJldHVybnMgdGhlIHJlc3VsdC5cclxuICogTm9ybWFsbHkgd2Ugd291bGQgZ2V0IGFuIGV4Y2VwdGlvbiBpZiB3ZSBzaW1wbHkgcmV0dXJuZWQgdGhlIHRyYW5zZm9ybWVkXHJcbiAqIGFycmF5IGFzIGl0IGNhdXNlcyBhbiBhZGRpdGlvbmFsIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgaW4gZGV2IG1vZGUuXHJcbiAqXHJcbiAqIFRvIGF2b2lkIHRoaXMgd2UgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBhcnJheSBhbiBtZXJlbHkgYWRkIHJlbW92ZSBpdGVtcyBmcm9tIGl0XHJcbiAqIFRoaXMgaXMgbm90IGEgZ3JlYXQgb3B0aW9uIGZvciBsYXJnZSBhcnJheXMsIGJ1dCB3aWxsIHdvcmsgZmluZSBmb3Igc21hbGwgb25lcy5cclxuICpcclxuICogU2VlIHRoZSBmb2xsb3dpbmcgc3RhY2sgb3ZlcmZsb3cgcXVlc3Rpb24gZm9yIG1vcmUgZGV0YWlsc1xyXG4gKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zNDQ5NzUwNC83MjkyNzkyXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgcHJpdmF0ZSB0bXAgPSBbXTtcclxuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IEFycmF5PGFueT4sIGZpbHRlcjogc3RyaW5nIHwgTXNmdFNtZS5GdW5jMTxhbnksIGJvb2xlYW4+LCBub3Q6IGFueSA9IGZhbHNlKTogQXJyYXk8YW55PiB7XHJcbiAgICAgICAgdGhpcy50bXAubGVuZ3RoID0gMDtcclxuICAgICAgICBpZiAodmFsdWUgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlckZ1bmM6IE1zZnRTbWUuRnVuYzE8YW55LCBib29sZWFuPiA9IDxNc2Z0U21lLkZ1bmMxPGFueSwgYm9vbGVhbj4+ZmlsdGVyO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBmaWx0ZXI7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJGdW5jID0gaXRlbSA9PiBpdGVtW3Byb3BdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChub3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRnVuYyA9IGZpbHRlckZ1bmM7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJGdW5jID0gaXRlbSA9PiAhb3JpZ2luYWxGdW5jKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHZhbHVlLmZpbHRlcihmaWx0ZXJGdW5jKTtcclxuICAgICAgICAgICAgdGhpcy50bXAucHVzaCguLi5hcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50bXA7XHJcbiAgICB9XHJcbn1cclxuIl19