@ng-web-apis/canvas
Version:
A library for declarative use of Canvas API with Angular
46 lines • 5.11 kB
JavaScript
import { ContentChildren, Directive, inject, Input, QueryList } from '@angular/core';
import { WaDrawService } from '../services/draw.service';
import { CANVAS_METHOD } from '../tokens/canvas-method';
import * as i0 from "@angular/core";
class WaCanvasPath {
pathSteps = new QueryList();
method = inject(WaDrawService);
closed = false;
fillRule;
constructor() {
this.method.call = (context) => {
context.beginPath();
this.pathSteps.forEach((step) => {
step.call(context);
});
if (this.closed) {
context.closePath();
}
context.stroke();
context.fill(this.fillRule);
};
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaCanvasPath, deps: [], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WaCanvasPath, isStandalone: true, selector: "canvas-path:not([path])", inputs: { closed: "closed", fillRule: "fillRule" }, providers: [WaDrawService], queries: [{ propertyName: "pathSteps", predicate: CANVAS_METHOD }], ngImport: i0 });
}
export { WaCanvasPath };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WaCanvasPath, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: 'canvas-path:not([path])',
providers: [WaDrawService],
}]
}], ctorParameters: function () { return []; }, propDecorators: { pathSteps: [{
type: ContentChildren,
args: [CANVAS_METHOD]
}], closed: [{
type: Input
}], fillRule: [{
type: Input
}] } });
/**
* @deprecated: use {@link WaCanvasPath}
*/
export const PathDirective = WaCanvasPath;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvY2FudmFzL3NyYy9tZXRob2RzL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFdEQsTUFLYSxZQUFZO0lBRUosU0FBUyxHQUFHLElBQUksU0FBUyxFQUFnQixDQUFDO0lBRTFDLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFHekMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUdmLFFBQVEsQ0FBa0I7SUFFakM7UUFDSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVwQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUN2QjtZQUVELE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7SUFDTixDQUFDO3dHQTNCUSxZQUFZOzRGQUFaLFlBQVksMEhBRlYsQ0FBQyxhQUFhLENBQUMsb0RBR1QsYUFBYTs7U0FEckIsWUFBWTs0RkFBWixZQUFZO2tCQUx4QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQzdCOzBFQUdvQixTQUFTO3NCQUR6QixlQUFlO3VCQUFDLGFBQWE7Z0JBTXZCLE1BQU07c0JBRFosS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7O0FBcUJWOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIFF1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB0eXBlIHtDYW52YXNNZXRob2R9IGZyb20gJy4uL2ludGVyZmFjZXMvY2FudmFzLW1ldGhvZCc7XG5pbXBvcnQge1dhRHJhd1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2RyYXcuc2VydmljZSc7XG5pbXBvcnQge0NBTlZBU19NRVRIT0R9IGZyb20gJy4uL3Rva2Vucy9jYW52YXMtbWV0aG9kJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2NhbnZhcy1wYXRoOm5vdChbcGF0aF0pJyxcbiAgICBwcm92aWRlcnM6IFtXYURyYXdTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgV2FDYW52YXNQYXRoIHtcbiAgICBAQ29udGVudENoaWxkcmVuKENBTlZBU19NRVRIT0QpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXRoU3RlcHMgPSBuZXcgUXVlcnlMaXN0PENhbnZhc01ldGhvZD4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWV0aG9kID0gaW5qZWN0KFdhRHJhd1NlcnZpY2UpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2xvc2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWxsUnVsZT86IENhbnZhc0ZpbGxSdWxlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubWV0aG9kLmNhbGwgPSAoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcblxuICAgICAgICAgICAgdGhpcy5wYXRoU3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0ZXAuY2FsbChjb250ZXh0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICAgICAgY29udGV4dC5maWxsKHRoaXMuZmlsbFJ1bGUpO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogdXNlIHtAbGluayBXYUNhbnZhc1BhdGh9XG4gKi9cbmV4cG9ydCBjb25zdCBQYXRoRGlyZWN0aXZlID0gV2FDYW52YXNQYXRoO1xuIl19