ov-components: add OpenViduComponentsUiModule with component and pipe declarations

master
Carlos Santos 2025-03-07 18:43:10 +01:00
parent 288a585809
commit d965e72822
3 changed files with 144 additions and 133 deletions

View File

@ -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 {}

View File

@ -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<OpenViduComponentsModule> {
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,

View File

@ -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';