import { Inject, InjectionToken, ModuleWithProviders, NgModule, Optional } from "@angular/core"; import { ScanditSdkBarcodePickerComponent } from "./scandit-sdk-barcode-picker.component"; import { ScanditSdkServiceConfig } from "./scandit-sdk.service"; /** * Scandit Web SDK Module */ @NgModule({ declarations: [ScanditSdkBarcodePickerComponent], exports: [ScanditSdkBarcodePickerComponent] }) export class ScanditSdkModule { static loaded: boolean = false; constructor(@Inject("ScanditSdkModuleInstance") instance: ScanditSdkModule) { } static factory(): void { if (ScanditSdkModule.loaded) { throw new Error("ScanditSdkModule is already loaded. Import it in the AppModule only"); } ScanditSdkModule.loaded = true; } static forRoot( licenseKey: string, options: { engineLocation: string; preloadEngine?: boolean; preloadBlurryRecognition?: boolean } ): ModuleWithProviders { return { ngModule: ScanditSdkModule, providers: [ { provide: "ScanditSdkModuleInstance", useFactory: ScanditSdkModule.factory }, { provide: ScanditSdkServiceConfig, useValue: { licenseKey, options } } ] }; } static forChild(): ModuleWithProviders { return { ngModule: ScanditSdkModule, providers: [] }; } }