UNPKG

@ng-web-apis/workers

Version:
41 lines 4.49 kB
import { Pipe } from '@angular/core'; import { WebWorker } from '../classes/web-worker'; import { toData } from '../operators/to-data'; import * as i0 from "@angular/core"; class WorkerPipe { fn; worker; observer; transform(value, fn) { if (this.fn !== fn) { this.terminateWorker(); this.initNewWorker(fn); } this.worker.postMessage(value); return this.observer; } ngOnDestroy() { this.terminateWorker(); } terminateWorker() { if (this.worker) { this.worker.terminate(); } } initNewWorker(fn) { this.fn = fn; this.worker = WebWorker.fromFunction(fn); this.observer = this.worker.pipe(toData()); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkerPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: WorkerPipe, isStandalone: true, name: "waWorker" }); } export { WorkerPipe }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkerPipe, decorators: [{ type: Pipe, args: [{ standalone: true, name: 'waWorker', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3dvcmtlcnMvc3JjL3dvcmtlci9waXBlcy93b3JrZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBRzVDLE1BSWEsVUFBVTtJQUNYLEVBQUUsQ0FBa0I7SUFDcEIsTUFBTSxDQUFhO0lBQ25CLFFBQVEsQ0FBbUI7SUFFNUIsU0FBUyxDQUFPLEtBQVEsRUFBRSxFQUF3QjtRQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFPLEVBQXdCO1FBQ2hELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO3dHQTlCUSxVQUFVO3NHQUFWLFVBQVU7O1NBQVYsVUFBVTs0RkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsVUFBVTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7T25EZXN0cm95LCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7V2ViV29ya2VyfSBmcm9tICcuLi9jbGFzc2VzL3dlYi13b3JrZXInO1xuaW1wb3J0IHt0b0RhdGF9IGZyb20gJy4uL29wZXJhdG9ycy90by1kYXRhJztcbmltcG9ydCB0eXBlIHtXb3JrZXJGdW5jdGlvbn0gZnJvbSAnLi4vdHlwZXMvd29ya2VyLWZ1bmN0aW9uJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3dhV29ya2VyJyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2VyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBmbiE6IFdvcmtlckZ1bmN0aW9uO1xuICAgIHByaXZhdGUgd29ya2VyITogV2ViV29ya2VyO1xuICAgIHByaXZhdGUgb2JzZXJ2ZXIhOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtPFQsIFI+KHZhbHVlOiBULCBmbjogV29ya2VyRnVuY3Rpb248VCwgUj4pOiBPYnNlcnZhYmxlPFI+IHtcbiAgICAgICAgaWYgKHRoaXMuZm4gIT09IGZuKSB7XG4gICAgICAgICAgICB0aGlzLnRlcm1pbmF0ZVdvcmtlcigpO1xuICAgICAgICAgICAgdGhpcy5pbml0TmV3V29ya2VyKGZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vYnNlcnZlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVybWluYXRlV29ya2VyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0ZXJtaW5hdGVXb3JrZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLndvcmtlcikge1xuICAgICAgICAgICAgdGhpcy53b3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXROZXdXb3JrZXI8VCwgUj4oZm46IFdvcmtlckZ1bmN0aW9uPFQsIFI+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm4gPSBmbjtcbiAgICAgICAgdGhpcy53b3JrZXIgPSBXZWJXb3JrZXIuZnJvbUZ1bmN0aW9uKGZuKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IHRoaXMud29ya2VyLnBpcGUodG9EYXRhKCkpO1xuICAgIH1cbn1cbiJdfQ==