UNPKG

@ngx-performance-ui/core

Version:
54 lines 4.75 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { forkJoin, pipe, Subject } from 'rxjs'; import { filter, take, takeUntil } from 'rxjs/operators'; import { notNull } from './common-utils'; /** * @param {...?} streams * @return {?} */ export function fromFork(...streams) { return forkJoin(...streams.map((/** * @param {?} stream * @return {?} */ stream => stream.pipe(take(1))))); } /** * @template T * @param {?} destroy$ * @return {?} */ export function takeUntilNotNull(destroy$) { return pipe(filter(notNull), takeUntil(destroy$)); } /** * @template T * @param {?} component * @return {?} */ export function takeUntilDestroy(component) { /** @type {?} */ const proto = Object.getPrototypeOf(component); /** @type {?} */ const onDestroy = proto.ngOnDestroy; if (!(onDestroy && typeof onDestroy === 'function')) { throw new Error((proto.constructor.name || 'Component') + ' must have the "ngOnDestroy" method for takeUntilDestroy operator to work.' + ' You may use XcDestroy decorator on component class for quick implementation.'); } /** @type {?} */ const destroy$ = new Subject(); proto.ngOnDestroy = (/** * @return {?} */ function () { onDestroy.apply(this, arguments); destroy$.next(); destroy$.complete(); }); return takeUntil(destroy$); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtcGVyZm9ybWFuY2UtdWkvY29yZS8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9yeGpzLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF3QyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFekMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFHLE9BQStCO0lBQ3pELE9BQU8sUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUc7Ozs7SUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBSSxRQUFRO0lBQzFDLE9BQU8sSUFBSSxDQUNULE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7QUFDSixDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUksU0FBYzs7VUFDMUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDOztVQUN4QyxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVc7SUFFbkMsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sU0FBUyxLQUFLLFVBQVUsQ0FBQyxFQUFFO1FBQ25ELE1BQU0sSUFBSSxLQUFLLENBQ2IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUM7WUFDckMsNEVBQTRFO1lBQzVFLCtFQUErRSxDQUNsRixDQUFDO0tBQ0g7O1VBRUssUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRO0lBRXBDLEtBQUssQ0FBQyxXQUFXOzs7SUFBRztRQUNsQixTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVqQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUMsQ0FBQSxDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUksUUFBUSxDQUFDLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmtKb2luLCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGUsIHBpcGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbm90TnVsbCB9IGZyb20gJy4vY29tbW9uLXV0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21Gb3JrKC4uLnN0cmVhbXM6IEFycmF5PE9ic2VydmFibGU8YW55Pj4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICByZXR1cm4gZm9ya0pvaW4oLi4uc3RyZWFtcy5tYXAoc3RyZWFtID0+IHN0cmVhbS5waXBlKHRha2UoMSkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWtlVW50aWxOb3ROdWxsPFQ+KGRlc3Ryb3kkKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmlsdGVyKG5vdE51bGwpLFxuICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWtlVW50aWxEZXN0cm95PFQ+KGNvbXBvbmVudDogYW55KTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29tcG9uZW50KTtcbiAgY29uc3Qgb25EZXN0cm95ID0gcHJvdG8ubmdPbkRlc3Ryb3k7XG5cbiAgaWYgKCEob25EZXN0cm95ICYmIHR5cGVvZiBvbkRlc3Ryb3kgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgKHByb3RvLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ0NvbXBvbmVudCcpICtcbiAgICAgICAgJyBtdXN0IGhhdmUgdGhlIFwibmdPbkRlc3Ryb3lcIiBtZXRob2QgZm9yIHRha2VVbnRpbERlc3Ryb3kgb3BlcmF0b3IgdG8gd29yay4nICtcbiAgICAgICAgJyBZb3UgbWF5IHVzZSBYY0Rlc3Ryb3kgZGVjb3JhdG9yIG9uIGNvbXBvbmVudCBjbGFzcyBmb3IgcXVpY2sgaW1wbGVtZW50YXRpb24uJyxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RvLm5nT25EZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgb25EZXN0cm95LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICBkZXN0cm95JC5uZXh0KCk7XG4gICAgZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfTtcblxuICByZXR1cm4gdGFrZVVudGlsPFQ+KGRlc3Ryb3kkKTtcbn1cbiJdfQ==