ngx-foresight
Version:
<p align="center"> <img src="https://akshykhade.github.io/ngx-foresight/logo.svg" width="305px"> </p> <br/> <p align="center"> <a href="https://www.npmjs.com/package/ngx-foresight"> <img src="https://img.shields.io/npm/v/ngx-foresight.svg?style=fo
53 lines • 6.08 kB
JavaScript
import { Directive, inject, Input } from '@angular/core';
import { Router, RouterPreloader } from '@angular/router';
import { ForesightManager } from 'js.foresight';
import { PrefetchRegistry } from './prefetch-registry.service';
import * as i0 from "@angular/core";
export class ForesightjsDirective {
elementRef;
router = inject(Router);
registry = inject(PrefetchRegistry);
preloader = inject(RouterPreloader);
routerLink = '';
href = '';
name = undefined;
unregisterRef = () => { };
constructor(elementRef) {
this.elementRef = elementRef;
}
ngOnInit() {
const { unregister } = ForesightManager.instance.register({
element: this.elementRef.nativeElement,
name: this.name,
callback: () => {
if (!this.routerLink && !this.href) {
return;
}
const tree = this.router.parseUrl(this.routerLink || this.href);
this.registry.add(tree);
this.preloader.preload().subscribe(() => void 0);
},
});
this.unregisterRef = unregister;
}
ngOnDestroy() {
this.unregisterRef();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForesightjsDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ForesightjsDirective, isStandalone: true, selector: "[foresightjs],[registerForesight]", inputs: { routerLink: "routerLink", href: "href", name: ["registerForesight", "name"] }, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ForesightjsDirective, decorators: [{
type: Directive,
args: [{
selector: '[foresightjs],[registerForesight]',
standalone: true,
}]
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { routerLink: [{
type: Input
}], href: [{
type: Input
}], name: [{
type: Input,
args: ['registerForesight']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXNpZ2h0anMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcmVzaWdodC9zcmMvbGliL2ZvcmVzaWdodGpzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxvQkFBb0I7SUFVWDtJQVRwQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxTQUFTLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNDLElBQUksR0FBdUIsU0FBUyxDQUFDO0lBRXpELGFBQWEsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFN0MsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7SUFFOUMsUUFBUTtRQUNOLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3hELE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkMsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQzt3R0E5QlUsb0JBQW9COzRGQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOytFQUtVLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNzQixJQUFJO3NCQUEvQixLQUFLO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJQcmVsb2FkZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9yZXNpZ2h0TWFuYWdlciB9IGZyb20gJ2pzLmZvcmVzaWdodCc7XG5pbXBvcnQgeyBQcmVmZXRjaFJlZ2lzdHJ5IH0gZnJvbSAnLi9wcmVmZXRjaC1yZWdpc3RyeS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZvcmVzaWdodGpzXSxbcmVnaXN0ZXJGb3Jlc2lnaHRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRm9yZXNpZ2h0anNEaXJlY3RpdmUge1xuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcmVnaXN0cnkgPSBpbmplY3QoUHJlZmV0Y2hSZWdpc3RyeSk7XG4gIHByZWxvYWRlciA9IGluamVjdChSb3V0ZXJQcmVsb2FkZXIpO1xuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaHJlZjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgncmVnaXN0ZXJGb3Jlc2lnaHQnKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyUmVmOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHsgdW5yZWdpc3RlciB9ID0gRm9yZXNpZ2h0TWFuYWdlci5pbnN0YW5jZS5yZWdpc3Rlcih7XG4gICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZXJMaW5rICYmICF0aGlzLmhyZWYpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyTGluayB8fCB0aGlzLmhyZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5LmFkZCh0cmVlKTtcbiAgICAgICAgdGhpcy5wcmVsb2FkZXIucHJlbG9hZCgpLnN1YnNjcmliZSgoKSA9PiB2b2lkIDApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnVucmVnaXN0ZXJSZWYgPSB1bnJlZ2lzdGVyO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bnJlZ2lzdGVyUmVmKCk7XG4gIH1cbn1cbiJdfQ==