UNPKG

ngx-face-api-js

Version:

Angular directives for face detection and face recognition in the browser. It is a wrapper for face-api.js, so it is not dependent on the browser implementation.

132 lines 8.83 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injector } from '@angular/core'; import { OverlayConfig } from '@angular/cdk/overlay'; import { ComponentPortal } from '@angular/cdk/portal'; import { DetectTask } from '../classes/DetectTask'; import { DetectionResultComponent } from '../components/detection-result/detection-result.component'; /** * @abstract */ export class AbstractDetectDirective { /** * @param {?} el * @param {?} overlay * @param {?} injector */ constructor(el, overlay, injector) { this.el = el; this.overlay = overlay; this.injector = injector; this.with = []; } /** * @return {?} */ ngOnInit() { this.task = new DetectTask({ type: this.type, tokens: this.with, realtime: this.stream, }); } /** * @private * @return {?} */ get orverlayPositionStrategy() { return this.overlay .position() .flexibleConnectedTo(this.el) .withPositions([ { overlayX: 'start', overlayY: 'top', originX: 'start', originY: 'top', }, ]) .withFlexibleDimensions(false) .withLockedPosition(true); } /** * @private * @return {?} */ createOverlay() { /** @type {?} */ const scrollStrategy = this.overlay.scrollStrategies.reposition(); /** @type {?} */ const config = new OverlayConfig({ positionStrategy: this.orverlayPositionStrategy, scrollStrategy, hasBackdrop: false, }); return this.overlay.create(config); } /** * @private * @return {?} */ createInjector() { return Injector.create({ parent: this.injector, providers: [ { provide: DetectTask, useValue: this.task, }, ], }); } /** * @return {?} */ ngAfterViewInit() { this.task.resolveTarget(this.el.nativeElement); /** @type {?} */ const overlayRef = this.createOverlay(); /** @type {?} */ const injector = this.createInjector(); /** @type {?} */ const portal = new ComponentPortal(DetectionResultComponent, undefined, injector); overlayRef.attach(portal); } } if (false) { /** * @type {?} * @protected */ AbstractDetectDirective.prototype.with; /** * @type {?} * @protected */ AbstractDetectDirective.prototype.type; /** * @type {?} * @protected */ AbstractDetectDirective.prototype.stream; /** @type {?} */ AbstractDetectDirective.prototype.task; /** * @type {?} * @protected */ AbstractDetectDirective.prototype.el; /** * @type {?} * @protected */ AbstractDetectDirective.prototype.overlay; /** * @type {?} * @protected */ AbstractDetectDirective.prototype.injector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJic3RyYWN0LWRldGVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZmFjZS1hcGktanMvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9hYmJzdHJhY3QtZGV0ZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFjLFFBQVEsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFXLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7QUFFckcsTUFBTSxPQUFnQix1QkFBdUI7Ozs7OztJQUkzQyxZQUNZLEVBQWdDLEVBQ2hDLE9BQWdCLEVBQ2hCLFFBQWtCO1FBRmxCLE9BQUUsR0FBRixFQUFFLENBQThCO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU5YLFNBQUksR0FBbUIsRUFBRSxDQUFDO0lBTzFDLENBQUM7Ozs7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQztZQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsSUFBWSx3QkFBd0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2FBQzVCLGFBQWEsQ0FBQztZQUNiO2dCQUNFLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLEtBQUs7YUFDZjtTQUNGLENBQUM7YUFDRCxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7YUFDN0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7SUFFTyxhQUFhOztjQUNiLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTs7Y0FDM0QsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQy9CLGdCQUFnQixFQUFFLElBQUksQ0FBQyx3QkFBd0I7WUFDL0MsY0FBYztZQUNkLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7O0lBRU8sY0FBYztRQUNwQixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsVUFBVTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDOztjQUN6QyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTs7Y0FDakMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7O2NBQ2hDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FDaEMsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxRQUFRLENBQ1Q7UUFDRCxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjs7Ozs7O0lBbEVDLHVDQUE2Qzs7Ozs7SUFDN0MsdUNBQXVDOzs7OztJQUN2Qyx5Q0FBbUM7O0lBTW5DLHVDQUF3Qjs7Ozs7SUFKdEIscUNBQTBDOzs7OztJQUMxQywwQ0FBMEI7Ozs7O0lBQzFCLDJDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFRhc2tUeXBlVG9rZW4gfSBmcm9tICcuLi90b2tlbnMvVGFza1R5cGVUb2tlbic7XG5pbXBvcnQgeyBGZWF0dXJlVG9rZW4gfSBmcm9tICcuLi90b2tlbnMvRmVhdHVyZVRva2VuJztcbmltcG9ydCB7IERldGVjdFRhc2sgfSBmcm9tICcuLi9jbGFzc2VzL0RldGVjdFRhc2snO1xuaW1wb3J0IHsgRGV0ZWN0aW9uUmVzdWx0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZXRlY3Rpb24tcmVzdWx0L2RldGVjdGlvbi1yZXN1bHQuY29tcG9uZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGV0ZWN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHdpdGg6IEZlYXR1cmVUb2tlbltdID0gW107XG4gIHByb3RlY3RlZCBhYnN0cmFjdCB0eXBlOiBUYXNrVHlwZVRva2VuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc3RyZWFtOiBib29sZWFuO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4sXG4gICAgcHJvdGVjdGVkIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7fVxuICBwdWJsaWMgdGFzazogRGV0ZWN0VGFzaztcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50YXNrID0gbmV3IERldGVjdFRhc2soe1xuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdG9rZW5zOiB0aGlzLndpdGgsXG4gICAgICByZWFsdGltZTogdGhpcy5zdHJlYW0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBvcnZlcmxheVBvc2l0aW9uU3RyYXRlZ3koKSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWwpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgY29uc3QgY29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vcnZlcmxheVBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVJbmplY3RvcigpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IERldGVjdFRhc2ssXG4gICAgICAgICAgdXNlVmFsdWU6IHRoaXMudGFzayxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50YXNrLnJlc29sdmVUYXJnZXQodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZUluamVjdG9yKCk7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIERldGVjdGlvblJlc3VsdENvbXBvbmVudCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGluamVjdG9yLFxuICAgICk7XG4gICAgb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgfVxufVxuIl19