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
JavaScript
/**
* @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