Skip to content
Snippets Groups Projects
module.ts 3.19 KiB
Newer Older
Xiao Gui's avatar
Xiao Gui committed
import { APP_INITIALIZER, NgModule } from "@angular/core";
Xiao Gui's avatar
Xiao Gui committed
import { NehubaViewerContainerDirective } from './nehubaViewerInterface/nehubaViewerInterface.directive'
import { IMPORT_NEHUBA_INJECT_TOKEN, NehubaViewerUnit } from "./nehubaViewer/nehubaViewer.component";
import { CommonModule } from "@angular/common";
import { APPEND_SCRIPT_TOKEN } from "src/util/constants";
Xiao Gui's avatar
Xiao Gui committed
import { importNehubaFactory, NEHUBA_INSTANCE_INJTKN } from "./util";
Xiao Gui's avatar
Xiao Gui committed
import { NehubaViewerTouchDirective } from "./nehubaViewerInterface/nehubaViewerTouch.directive";
import { StoreModule } from "@ngrx/store";
import { NEHUBA_VIEWER_FEATURE_KEY } from "./constants";
import { reducer } from "./store";
Xiao Gui's avatar
Xiao Gui committed
import { NehubaGlueCmp } from "./nehubaViewerGlue/nehubaViewerGlue.component";
import { UtilModule } from "src/util";
import { ComponentsModule } from "src/components";
import { AngularMaterialModule } from "src/sharedModules";
Xiao Gui's avatar
Xiao Gui committed
import { MouseoverModule } from "src/mouseoverModule";
import { StatusCardComponent } from "./statusCard/statusCard.component";
import { ShareModule } from "src/share";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
Xiao Gui's avatar
Xiao Gui committed
import { BehaviorSubject } from "rxjs";
Xiao Gui's avatar
Xiao Gui committed
import { StateModule } from "src/state";
import { AuthModule } from "src/auth";
fsdavid's avatar
fsdavid committed
import {QuickTourModule} from "src/ui/quickTour/module";
Xiao Gui's avatar
Xiao Gui committed
import { WindowResizeModule } from "src/util/windowResize";
Xiao Gui's avatar
Xiao Gui committed
import { EffectsModule } from "@ngrx/effects";
import { MeshEffects } from "./mesh.effects/mesh.effects";
import { NehubaLayoutOverlayModule } from "./layoutOverlay";
import { NgAnnotationService } from "./annotation/service";
import { NgAnnotationEffects } from "./annotation/effects";
import { NehubaViewerContainer } from "./nehubaViewerInterface/nehubaViewerContainer.component";
import { NehubaUserLayerModule } from "./userLayers";
import { DialogModule } from "src/ui/dialogInfo";
Xiao Gui's avatar
Xiao Gui committed

@NgModule({
  imports: [
    CommonModule,
Xiao Gui's avatar
Xiao Gui committed
    FormsModule,
    ReactiveFormsModule,
    UtilModule,
    AngularMaterialModule,
    ComponentsModule,
    MouseoverModule,
    ShareModule,
Xiao Gui's avatar
Xiao Gui committed
    WindowResizeModule,
    NehubaUserLayerModule,
Xiao Gui's avatar
Xiao Gui committed

    /**
     * should probably break this into its own...
     * share url module or something?
     */
    StateModule,
    AuthModule,
Xiao Gui's avatar
Xiao Gui committed
    StoreModule.forFeature(
      NEHUBA_VIEWER_FEATURE_KEY,
      reducer
fsdavid's avatar
fsdavid committed
    ),
Xiao Gui's avatar
Xiao Gui committed
    EffectsModule.forFeature([
      MeshEffects,
      NgAnnotationEffects,
Xiao Gui's avatar
Xiao Gui committed
    ]),
    QuickTourModule,
    NehubaLayoutOverlayModule,
    DialogModule,
Xiao Gui's avatar
Xiao Gui committed
  ],
  declarations: [
    NehubaViewerContainerDirective,
    NehubaViewerUnit,
    NehubaViewerTouchDirective,
Xiao Gui's avatar
Xiao Gui committed
    NehubaGlueCmp,
    StatusCardComponent,
    NehubaViewerContainer,
Xiao Gui's avatar
Xiao Gui committed
  ],
  exports: [
    NehubaViewerUnit,
    NehubaViewerTouchDirective,
Xiao Gui's avatar
Xiao Gui committed
    NehubaGlueCmp,
    StatusCardComponent,
Xiao Gui's avatar
Xiao Gui committed
  ],
  providers: [
Xiao Gui's avatar
Xiao Gui committed
    
Xiao Gui's avatar
Xiao Gui committed
    {
      provide: IMPORT_NEHUBA_INJECT_TOKEN,
      useFactory: importNehubaFactory,
      deps: [ APPEND_SCRIPT_TOKEN ]
Xiao Gui's avatar
Xiao Gui committed
    },
    {
      provide: NEHUBA_INSTANCE_INJTKN,
Xiao Gui's avatar
Xiao Gui committed
      useValue: new BehaviorSubject(null)
    {
      provide: APP_INITIALIZER,
      multi: true,
      useFactory: (_svc: NgAnnotationService) => () => Promise.resolve(),
      deps: [ NgAnnotationService ]
    },
    NgAnnotationService
Xiao Gui's avatar
Xiao Gui committed
  ]
})

export class NehubaModule{}