diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular-ui.module.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular-ui.module.ts new file mode 100644 index 00000000..3f83cc59 --- /dev/null +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular-ui.module.ts @@ -0,0 +1,114 @@ + +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + +import { DeleteDialogComponent } from './components/dialogs/delete-recording.component'; +import { DialogTemplateComponent } from './components/dialogs/dialog.component'; +import { RecordingDialogComponent } from './components/dialogs/recording-dialog.component'; +import { LayoutComponent } from './components/layout/layout.component'; +import { ChatPanelComponent } from './components/panel/chat-panel/chat-panel.component'; +import { SessionComponent } from './components/session/session.component'; +import { StreamComponent } from './components/stream/stream.component'; +import { ToolbarComponent } from './components/toolbar/toolbar.component'; +import { MediaElementComponent } from './components/media-element/media-element.component'; + +import { LinkifyPipe } from './pipes/linkify.pipe'; +import { RemoteParticipantTracksPipe, TrackPublishedTypesPipe } from './pipes/participant.pipe'; +import { DurationFromSecondsPipe, SearchByStringPropertyPipe, ThumbnailFromUrlPipe } from './pipes/recording.pipe'; +import { TranslatePipe } from './pipes/translate.pipe'; + +import { DragDropModule } from '@angular/cdk/drag-drop'; + +import { AudioWaveComponent } from './components/audio-wave/audio-wave.component'; +import { PanelComponent } from './components/panel/panel.component'; +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 { PreJoinComponent } from './components/pre-join/pre-join.component'; +import { VideoconferenceComponent } from './components/videoconference/videoconference.component'; + +import { AdminDashboardComponent } from './admin/admin-dashboard/admin-dashboard.component'; +import { AdminLoginComponent } from './admin/admin-login/admin-login.component'; +import { AvatarProfileComponent } from './components/avatar-profile/avatar-profile.component'; +// import { CaptionsComponent } from './components/captions/captions.component'; +import { ProFeatureDialogTemplateComponent } from './components/dialogs/pro-feature-dialog.component'; +import { ActivitiesPanelComponent } from './components/panel/activities-panel/activities-panel.component'; +import { BroadcastingActivityComponent } from './components/panel/activities-panel/broadcasting-activity/broadcasting-activity.component'; +import { RecordingActivityComponent } from './components/panel/activities-panel/recording-activity/recording-activity.component'; +import { BackgroundEffectsPanelComponent } from './components/panel/background-effects-panel/background-effects-panel.component'; +import { SettingsPanelComponent } from './components/panel/settings-panel/settings-panel.component'; +import { AudioDevicesComponent } from './components/settings/audio-devices/audio-devices.component'; +// import { CaptionsSettingComponent } from './components/settings/captions/captions.component'; +import { LangSelectorComponent } from './components/settings/lang-selector/lang-selector.component'; +import { ParticipantNameInputComponent } from './components/settings/participant-name-input/participant-name-input.component'; +import { VideoDevicesComponent } from './components/settings/video-devices/video-devices.component'; +import { ApiDirectiveModule } from './directives/api/api.directive.module'; +import { OpenViduComponentsDirectiveModule } from './directives/template/openvidu-components-angular.directive.module'; +import { AppMaterialModule } from './openvidu-components-angular.material.module'; + +// Declaraciones de componentes/pipes (públicos y privados) +const publicComponents = [ + AdminDashboardComponent, + AdminLoginComponent, + VideoconferenceComponent, + ToolbarComponent, + PanelComponent, + ActivitiesPanelComponent, + RecordingActivityComponent, + BroadcastingActivityComponent, + ParticipantsPanelComponent, + ParticipantPanelItemComponent, + ChatPanelComponent, + StreamComponent, + LayoutComponent +]; +const privateComponents = [ + PreJoinComponent, + SessionComponent, + BackgroundEffectsPanelComponent, + SettingsPanelComponent, + AudioWaveComponent, + DialogTemplateComponent, + ProFeatureDialogTemplateComponent, + RecordingDialogComponent, + DeleteDialogComponent, + AvatarProfileComponent, + MediaElementComponent, + VideoDevicesComponent, + AudioDevicesComponent, + ParticipantNameInputComponent, + LangSelectorComponent +]; + +@NgModule({ + declarations: [ + ...publicComponents, + ...privateComponents, + LinkifyPipe, + RemoteParticipantTracksPipe, + DurationFromSecondsPipe, + SearchByStringPropertyPipe, + ThumbnailFromUrlPipe, + TrackPublishedTypesPipe, + TranslatePipe + ], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + AppMaterialModule, + OpenViduComponentsDirectiveModule, + ApiDirectiveModule, + DragDropModule + ], + exports: [ + ...publicComponents, + RemoteParticipantTracksPipe, + DurationFromSecondsPipe, + TrackPublishedTypesPipe, + TranslatePipe, + OpenViduComponentsDirectiveModule, + ApiDirectiveModule + ] +}) +export class OpenViduComponentsUiModule {} diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular.module.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular.module.ts index 108945d8..9bacdcee 100644 --- a/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular.module.ts +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/lib/openvidu-components-angular.module.ts @@ -1,25 +1,6 @@ import { OverlayContainer } from '@angular/cdk/overlay'; -import { CommonModule } from '@angular/common'; import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; -import { ModuleWithProviders, NgModule, Provider } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; - -import { DeleteDialogComponent } from './components/dialogs/delete-recording.component'; -import { DialogTemplateComponent } from './components/dialogs/dialog.component'; -import { RecordingDialogComponent } from './components/dialogs/recording-dialog.component'; -import { LayoutComponent } from './components/layout/layout.component'; -import { ChatPanelComponent } from './components/panel/chat-panel/chat-panel.component'; -import { SessionComponent } from './components/session/session.component'; -import { StreamComponent } from './components/stream/stream.component'; -import { ToolbarComponent } from './components/toolbar/toolbar.component'; -import { MediaElementComponent } from './components/media-element/media-element.component'; - -import { LinkifyPipe } from './pipes/linkify.pipe'; -import { RemoteParticipantTracksPipe, TrackPublishedTypesPipe } from './pipes/participant.pipe'; -import { DurationFromSecondsPipe, SearchByStringPropertyPipe, ThumbnailFromUrlPipe } from './pipes/recording.pipe'; -import { TranslatePipe } from './pipes/translate.pipe'; - -import { DragDropModule } from '@angular/cdk/drag-drop'; +import { ModuleWithProviders, NgModule, Provider, EnvironmentProviders } from '@angular/core'; import { CdkOverlayContainer } from './config/custom-cdk-overlay'; import { OpenViduComponentsConfig } from './config/openvidu-components-angular.config'; @@ -36,127 +17,41 @@ import { PlatformService } from './services/platform/platform.service'; import { RecordingService } from './services/recording/recording.service'; import { StorageService } from './services/storage/storage.service'; -import { AudioWaveComponent } from './components/audio-wave/audio-wave.component'; -import { PanelComponent } from './components/panel/panel.component'; -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 { PreJoinComponent } from './components/pre-join/pre-join.component'; -import { VideoconferenceComponent } from './components/videoconference/videoconference.component'; - -import { AdminDashboardComponent } from './admin/admin-dashboard/admin-dashboard.component'; -import { AdminLoginComponent } from './admin/admin-login/admin-login.component'; -import { AvatarProfileComponent } from './components/avatar-profile/avatar-profile.component'; -// import { CaptionsComponent } from './components/captions/captions.component'; -import { ProFeatureDialogTemplateComponent } from './components/dialogs/pro-feature-dialog.component'; -import { ActivitiesPanelComponent } from './components/panel/activities-panel/activities-panel.component'; -import { BroadcastingActivityComponent } from './components/panel/activities-panel/broadcasting-activity/broadcasting-activity.component'; -import { RecordingActivityComponent } from './components/panel/activities-panel/recording-activity/recording-activity.component'; -import { BackgroundEffectsPanelComponent } from './components/panel/background-effects-panel/background-effects-panel.component'; -import { SettingsPanelComponent } from './components/panel/settings-panel/settings-panel.component'; -import { AudioDevicesComponent } from './components/settings/audio-devices/audio-devices.component'; -// import { CaptionsSettingComponent } from './components/settings/captions/captions.component'; -import { LangSelectorComponent } from './components/settings/lang-selector/lang-selector.component'; -import { ParticipantNameInputComponent } from './components/settings/participant-name-input/participant-name-input.component'; -import { VideoDevicesComponent } from './components/settings/video-devices/video-devices.component'; -import { ApiDirectiveModule } from './directives/api/api.directive.module'; -import { OpenViduComponentsDirectiveModule } from './directives/template/openvidu-components-angular.directive.module'; -import { AppMaterialModule } from './openvidu-components-angular.material.module'; import { VirtualBackgroundService } from './services/virtual-background/virtual-background.service'; import { BroadcastingService } from './services/broadcasting/broadcasting.service'; import { GlobalConfigService } from './services/config/global-config.service'; import { OpenViduComponentsConfigService } from './services/config/directive-config.service'; - -const publicComponents = [ - AdminDashboardComponent, - AdminLoginComponent, - VideoconferenceComponent, - ToolbarComponent, - PanelComponent, - ActivitiesPanelComponent, - RecordingActivityComponent, - BroadcastingActivityComponent, - ParticipantsPanelComponent, - ParticipantPanelItemComponent, - ChatPanelComponent, - StreamComponent, - LayoutComponent -]; -const privateComponents = [ - PreJoinComponent, - SessionComponent, - BackgroundEffectsPanelComponent, - SettingsPanelComponent, - AudioWaveComponent, - // CaptionsComponent, - DialogTemplateComponent, - ProFeatureDialogTemplateComponent, - RecordingDialogComponent, - DeleteDialogComponent, - AvatarProfileComponent, - MediaElementComponent, - VideoDevicesComponent, - AudioDevicesComponent, - ParticipantNameInputComponent, - LangSelectorComponent - // CaptionsSettingComponent -]; +import { OpenViduComponentsUiModule } from './openvidu-components-angular-ui.module'; @NgModule({ - declarations: [ - publicComponents, - privateComponents, - LinkifyPipe, - RemoteParticipantTracksPipe, - DurationFromSecondsPipe, - SearchByStringPropertyPipe, - ThumbnailFromUrlPipe, - TrackPublishedTypesPipe, - TranslatePipe - ], - exports: [ - publicComponents, - RemoteParticipantTracksPipe, - DurationFromSecondsPipe, - TrackPublishedTypesPipe, - TranslatePipe, - OpenViduComponentsDirectiveModule, - ApiDirectiveModule - ], - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - AppMaterialModule, - OpenViduComponentsDirectiveModule, - ApiDirectiveModule, - DragDropModule - ], - providers: [ - GlobalConfigService, - OpenViduComponentsConfigService, - ActionService, - BroadcastingService, - // CaptionService, - CdkOverlayContainer, - { provide: OverlayContainer, useClass: CdkOverlayContainer }, - ChatService, - DeviceService, - DocumentService, - // LayoutService, - LoggerService, - OpenViduService, - PanelService, - ParticipantService, - PlatformService, - RecordingService, - StorageService, - VirtualBackgroundService, - provideHttpClient(withInterceptorsFromDi()) - ] + imports: [OpenViduComponentsUiModule], + exports: [OpenViduComponentsUiModule] }) export class OpenViduComponentsModule { static forRoot(config: OpenViduComponentsConfig): ModuleWithProviders { - const providers: Provider[] = [{ provide: 'OPENVIDU_COMPONENTS_CONFIG', useValue: config }]; + const providers: (Provider | EnvironmentProviders)[] = [ + { provide: 'OPENVIDU_COMPONENTS_CONFIG', useValue: config }, + GlobalConfigService, + OpenViduComponentsConfigService, + ActionService, + BroadcastingService, + // CaptionService, + CdkOverlayContainer, + { provide: OverlayContainer, useClass: CdkOverlayContainer }, + ChatService, + DeviceService, + DocumentService, + // LayoutService, + LoggerService, + OpenViduService, + PanelService, + ParticipantService, + PlatformService, + RecordingService, + StorageService, + VirtualBackgroundService, + provideHttpClient(withInterceptorsFromDi()) + ]; return { ngModule: OpenViduComponentsModule, diff --git a/openvidu-components-angular/projects/openvidu-components-angular/src/public-api.ts b/openvidu-components-angular/projects/openvidu-components-angular/src/public-api.ts index 3ad7bf72..0cb29885 100644 --- a/openvidu-components-angular/projects/openvidu-components-angular/src/public-api.ts +++ b/openvidu-components-angular/projects/openvidu-components-angular/src/public-api.ts @@ -39,7 +39,6 @@ export * from './lib/models/toolbar.model'; export * from './lib/models/logger.model' export * from './lib/models/storage.model'; export * from './lib/models/lang.model'; -export * from './lib/openvidu-components-angular.module'; // Pipes export * from './lib/pipes/participant.pipe'; export * from './lib/pipes/recording.pipe'; @@ -57,5 +56,8 @@ export * from './lib/services/config/global-config.service'; export * from './lib/services/logger/logger.service'; export * from './lib/services/storage/storage.service'; export * from './lib/services/translate/translate.service'; +//Modules +export * from './lib/openvidu-components-angular.module'; +export * from './lib/openvidu-components-angular-ui.module'; export * from 'livekit-client';