UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

35 lines 4.26 kB
import { Injectable } from '@angular/core'; import { AfterAction } from './after-action'; import * as i0 from "@angular/core"; export class CallChainService { constructor() { } /** * Creates a call chain `Subject` that performs an action when a value is emitted into it. * * Useful for creating call chains for methods like [assign Task]{@link AssignTaskService#assign}. * By using this function you don't have to handle the `Subject` logic and can only focus on the callback. * This can make the code easier to understand as the intent is not obscured by the `Subject` handling. * * @param callback the function that should be executed when a value is emitted into the `Subject`. * The emitted value is passed as the argument. * @returns a subscribed `Subject` instance that performs the provided `callback` on the first emission and then completes */ create(callback) { const chain = new AfterAction(); chain.subscribe(result => { callback(result); chain.complete(); }); return chain; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbC1jaGFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91dGlsaXR5L2NhbGwtY2hhaW4vY2FsbC1jaGFpbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCO0lBQ0EsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxNQUFNLENBQUMsUUFBMkI7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQXZCUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBZnRlckFjdGlvbn0gZnJvbSAnLi9hZnRlci1hY3Rpb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENhbGxDaGFpblNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNhbGwgY2hhaW4gYFN1YmplY3RgIHRoYXQgcGVyZm9ybXMgYW4gYWN0aW9uIHdoZW4gYSB2YWx1ZSBpcyBlbWl0dGVkIGludG8gaXQuXG4gICAgICpcbiAgICAgKiBVc2VmdWwgZm9yIGNyZWF0aW5nIGNhbGwgY2hhaW5zIGZvciBtZXRob2RzIGxpa2UgW2Fzc2lnbiBUYXNrXXtAbGluayBBc3NpZ25UYXNrU2VydmljZSNhc3NpZ259LlxuICAgICAqIEJ5IHVzaW5nIHRoaXMgZnVuY3Rpb24geW91IGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoZSBgU3ViamVjdGAgbG9naWMgYW5kIGNhbiBvbmx5IGZvY3VzIG9uIHRoZSBjYWxsYmFjay5cbiAgICAgKiBUaGlzIGNhbiBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kIGFzIHRoZSBpbnRlbnQgaXMgbm90IG9ic2N1cmVkIGJ5IHRoZSBgU3ViamVjdGAgaGFuZGxpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIHdoZW4gYSB2YWx1ZSBpcyBlbWl0dGVkIGludG8gdGhlIGBTdWJqZWN0YC5cbiAgICAgKiBUaGUgZW1pdHRlZCB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGFyZ3VtZW50LlxuICAgICAqIEByZXR1cm5zIGEgc3Vic2NyaWJlZCBgU3ViamVjdGAgaW5zdGFuY2UgdGhhdCBwZXJmb3JtcyB0aGUgcHJvdmlkZWQgYGNhbGxiYWNrYCBvbiB0aGUgZmlyc3QgZW1pc3Npb24gYW5kIHRoZW4gY29tcGxldGVzXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogKGJvb2xlYW4pID0+IHZvaWQpOiBBZnRlckFjdGlvbiB7XG4gICAgICAgIGNvbnN0IGNoYWluID0gbmV3IEFmdGVyQWN0aW9uKCk7XG4gICAgICAgIGNoYWluLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTtcbiAgICAgICAgICAgIGNoYWluLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2hhaW47XG4gICAgfVxufVxuIl19