UNPKG

@ng-web-apis/canvas

Version:
37 lines 5.51 kB
import { inject, Injectable, NgZone } from '@angular/core'; import { WA_ANIMATION_FRAME } from '@ng-web-apis/common'; import { CANVAS_2D_CONTEXT } from '../tokens/canvas-2d-context'; import { CANVAS_PROPERTIES } from '../tokens/canvas-properties'; import * as i0 from "@angular/core"; class WaDrawService { subscription; constructor() { const parent = inject(CANVAS_PROPERTIES, { skipSelf: true }); const properties = inject(CANVAS_PROPERTIES); const context = inject(CANVAS_2D_CONTEXT); const animationFrame$ = inject(WA_ANIMATION_FRAME); const ngZone = inject(NgZone); this.subscription = ngZone.runOutsideAngular(() => animationFrame$.subscribe(() => { context.save(); parent.forEach((property) => property.call(context)); properties.forEach((property) => property.call(context)); this.call(context); context.restore(); })); } call = () => { }; ngOnDestroy() { this.subscription.unsubscribe(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaDrawService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaDrawService }); } export { WaDrawService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaDrawService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); /** * @deprecated: use {@link WaDrawService} */ export const DrawService = WaDrawService; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9jYW52YXMvc3JjL3NlcnZpY2VzL2RyYXcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBRzlELE1BQ2EsYUFBYTtJQUNMLFlBQVksQ0FBZTtJQUU1QztRQUNJLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FDOUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLElBQUksR0FBdUIsR0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRTFDLFdBQVc7UUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7d0dBekJRLGFBQWE7NEdBQWIsYUFBYTs7U0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVU7O0FBNkJYOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dBX0FOSU1BVElPTl9GUkFNRX0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUge0NhbnZhc01ldGhvZH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jYW52YXMtbWV0aG9kJztcbmltcG9ydCB7Q0FOVkFTXzJEX0NPTlRFWFR9IGZyb20gJy4uL3Rva2Vucy9jYW52YXMtMmQtY29udGV4dCc7XG5pbXBvcnQge0NBTlZBU19QUk9QRVJUSUVTfSBmcm9tICcuLi90b2tlbnMvY2FudmFzLXByb3BlcnRpZXMnO1xuaW1wb3J0IHR5cGUge0NvbnRleHQyZFByb2Nlc3Nvcn0gZnJvbSAnLi4vdHlwZXMvY29udGV4dC1wcm9jZXNzb3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2FEcmF3U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ2FudmFzTWV0aG9kIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IGluamVjdChDQU5WQVNfUFJPUEVSVElFUywge3NraXBTZWxmOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBpbmplY3QoQ0FOVkFTX1BST1BFUlRJRVMpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gaW5qZWN0KENBTlZBU18yRF9DT05URVhUKTtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uRnJhbWUkID0gaW5qZWN0KFdBX0FOSU1BVElPTl9GUkFNRSk7XG4gICAgICAgIGNvbnN0IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBhbmltYXRpb25GcmFtZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuZm9yRWFjaCgocHJvcGVydHkpID0+IHByb3BlcnR5LmNhbGwoY29udGV4dCkpO1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHByb3BlcnR5LmNhbGwoY29udGV4dCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsOiBDb250ZXh0MmRQcm9jZXNzb3IgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHVzZSB7QGxpbmsgV2FEcmF3U2VydmljZX1cbiAqL1xuZXhwb3J0IGNvbnN0IERyYXdTZXJ2aWNlID0gV2FEcmF3U2VydmljZTtcbiJdfQ==