import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatBadgeModule } from '@angular/material/badge'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatOptionModule } from '@angular/material/core'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatGridListModule } from '@angular/material/grid-list'; import { MatIconModule } from '@angular/material/icon'; import { MatInputModule } from '@angular/material/input'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSelectModule } from '@angular/material/select'; import { MatSidenavModule } from '@angular/material/sidenav'; import { MatSliderModule } from '@angular/material/slider'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { FlexLayoutModule } from '@angular/flex-layout'; import { OverlayContainer } from '@angular/cdk/overlay'; import { MatMenuModule } from '@angular/material/menu'; import { MatListModule } from '@angular/material/list'; import { MatDividerModule } from '@angular/material/divider'; import { RouterModule } from '@angular/router'; import { CommonModule } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { HttpClientModule } from '@angular/common/http'; import { UserSettingsComponent } from './components/user-settings/user-settings.component'; import { ToolbarComponent } from './components/toolbar/toolbar.component'; import { VideoComponent } from './components/video/video.component'; import { ChatPanelComponent } from './components/panel/chat-panel/chat-panel.component'; import { SessionComponent } from './components/session/session.component'; import { LayoutComponent } from './components/layout/layout.component'; import { StreamComponent } from './components/stream/stream.component'; import { DialogTemplateComponent } from './components/material/dialog.component'; import { LinkifyPipe } from './pipes/linkify.pipe'; import { TooltipListPipe } from './pipes/tooltip-list.pipe'; import { StreamsEnabledPipe, NicknamePipe, ParticipantStreamsPipe } from './pipes/participant.pipe'; import { OpenViduAngularConfig } from './config/openvidu-angular.config'; import { CdkOverlayContainer } from './config/custom-cdk-overlay'; import { DeviceService } from './services/device/device.service'; import { LoggerService } from './services/logger/logger.service'; import { PlatformService } from './services/platform/platform.service'; import { StorageService } from './services/storage/storage.service'; import { TokenService } from './services/token/token.service'; import { OpenViduAngularConfigService } from './services/config/openvidu-angular.config.service'; import { OpenViduService } from './services/openvidu/openvidu.service'; import { ActionService } from './services/action/action.service'; import { ChatService } from './services/chat/chat.service'; import { DocumentService } from './services/document/document.service'; import { LayoutService } from './services/layout/layout.service'; import { SidenavMenuService } from './services/sidenav-menu/sidenav-menu.service'; import { ParticipantService } from './services/participant/participant.service'; import { ParticipantPanelItemComponent } from './components/panel/participants-panel/participant-panel-item/participant-panel-item.component'; import { ParticipantsPanelComponent } from './components/panel/participants-panel/participants-panel/participants-panel.component'; import { VideoconferenceComponent } from './components/videoconference/videoconference.component'; import { PanelComponent } from './components/panel/panel.component'; import { StreamDirective } from './directives/stream/stream.directive'; import { AudioWaveComponent } from './components/audio-wave/audio-wave.component'; @NgModule({ declarations: [ StreamDirective, UserSettingsComponent, VideoComponent, ToolbarComponent, ChatPanelComponent, SessionComponent, LayoutComponent, StreamComponent, DialogTemplateComponent, LinkifyPipe, TooltipListPipe, ParticipantStreamsPipe, StreamsEnabledPipe, NicknamePipe, ParticipantPanelItemComponent, ParticipantsPanelComponent, VideoconferenceComponent, AudioWaveComponent, PanelComponent, ], imports: [ CommonModule, HttpClientModule, FormsModule, ReactiveFormsModule, RouterModule.forRoot([]), MatButtonModule, MatCardModule, MatToolbarModule, MatIconModule, MatInputModule, MatFormFieldModule, MatDialogModule, MatTooltipModule, MatBadgeModule, MatGridListModule, MatSelectModule, MatOptionModule, MatProgressSpinnerModule, MatSliderModule, MatSidenavModule, MatSnackBarModule, FlexLayoutModule, MatMenuModule, MatDividerModule, MatListModule ], providers: [ ActionService, CdkOverlayContainer, { provide: OverlayContainer, useClass: CdkOverlayContainer }, ChatService, SidenavMenuService, DeviceService, DocumentService, LayoutService, LoggerService, PlatformService, ParticipantService, StorageService, TokenService, OpenViduService ], exports: [ VideoconferenceComponent, UserSettingsComponent, ToolbarComponent, ChatPanelComponent, SessionComponent, LayoutComponent, StreamComponent, VideoComponent, AudioWaveComponent, ParticipantStreamsPipe, CommonModule, StreamDirective ], entryComponents: [DialogTemplateComponent] }) export class OpenViduAngularModule { static forRoot(config): ModuleWithProviders { // console.log(`${library.name} config: ${environment}`); const libConfig: OpenViduAngularConfig = config; return { ngModule: OpenViduAngularModule, providers: [OpenViduAngularConfigService, { provide: 'OPENVIDU_ANGULAR_CONFIG', useValue: libConfig }] }; } }