import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core'; import { OpenViduAngularConfigService } from '../../services/config/openvidu-angular.config.service'; /** * The **screenshareButton** directive allows show/hide the screenshare toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarScreenshareButton], ov-toolbar[screenshareButton]' }) export class ToolbarScreenshareButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarScreenshareButton(value: boolean) { this.screenshareValue = value; this.update(this.screenshareValue); } /** * @ignore */ @Input() set screenshareButton(value: boolean) { this.screenshareValue = value; this.update(this.screenshareValue); } private screenshareValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.screenshareValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.screenshareValue = true; this.update(true); } private update(value: boolean) { if (this.libService.screenshareButton.getValue() !== value) { this.libService.screenshareButton.next(value); } } } /** * The **recordingButton** directive allows show/hide the start/stop recording toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * * * @internal */ @Directive({ selector: 'ov-videoconference[toolbarRecordingButton], ov-toolbar[recordingButton]' }) export class ToolbarRecordingButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarRecordingButton(value: boolean) { this.recordingValue = value; this.update(this.recordingValue); } /** * @ignore */ @Input() set recordingButton(value: boolean) { this.recordingValue = value; this.update(this.recordingValue); } private recordingValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.recordingValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.recordingValue = true; this.update(true); } private update(value: boolean) { if (this.libService.recordingButton.getValue() !== value) { this.libService.recordingButton.next(value); } } } /** * The **fullscreenButton** directive allows show/hide the fullscreen toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarFullscreenButton], ov-toolbar[fullscreenButton]' }) export class ToolbarFullscreenButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarFullscreenButton(value: boolean) { this.fullscreenValue = value; this.update(this.fullscreenValue); } /** * @ignore */ @Input() set fullscreenButton(value: boolean) { this.fullscreenValue = value; this.update(this.fullscreenValue); } private fullscreenValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.fullscreenValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.fullscreenValue = true; this.update(true); } private update(value: boolean) { if (this.libService.fullscreenButton.getValue() !== value) { this.libService.fullscreenButton.next(value); } } } /** * The **backgroundEffectsButton** directive allows show/hide the background effects toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarBackgroundEffectsButton], ov-toolbar[backgroundEffectsButton]' }) export class ToolbarBackgroundEffectsButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarBackgroundEffectsButton(value: boolean) { this.backgroundEffectsValue = value; this.update(this.backgroundEffectsValue); } /** * @ignore */ @Input() set backgroundEffectsButton(value: boolean) { this.backgroundEffectsValue = value; this.update(this.backgroundEffectsValue); } private backgroundEffectsValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.backgroundEffectsValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.backgroundEffectsValue = true; this.update(true); } private update(value: boolean) { if (this.libService.backgroundEffectsButton.getValue() !== value) { this.libService.backgroundEffectsButton.next(value); } } } /** * The **captionsButton** directive allows show/hide the captions toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarCaptionsButton], ov-toolbar[captionsButton]' }) export class ToolbarCaptionsButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarCaptionsButton(value: boolean) { this.captionsButtonValue = value; this.update(this.captionsButtonValue); } /** * @ignore */ @Input() set captionsButton(value: boolean) { this.captionsButtonValue = value; this.update(this.captionsButtonValue); } private captionsButtonValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.captionsButtonValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.captionsButtonValue = true; this.update(true); } private update(value: boolean) { if (this.libService.captionsButton.getValue() !== value) { this.libService.captionsButton.next(value); } } } /** * The **settingsButton** directive allows show/hide the settings toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarSettingsButton], ov-toolbar[settingsButton]' }) export class ToolbarSettingsButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarSettingsButton(value: boolean) { this.settingsValue = value; this.update(this.settingsValue); } /** * @ignore */ @Input() set settingsButton(value: boolean) { this.settingsValue = value; this.update(this.settingsValue); } private settingsValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.settingsValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.settingsValue = true; this.update(true); } private update(value: boolean) { if (this.libService.toolbarSettingsButton.getValue() !== value) { this.libService.toolbarSettingsButton.next(value); } } } /** * The **leaveButton** directive allows show/hide the leave toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarLeaveButton], ov-toolbar[leaveButton]' }) export class ToolbarLeaveButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarLeaveButton(value: boolean) { this.leaveValue = value; this.update(this.leaveValue); } /** * @ignore */ @Input() set leaveButton(value: boolean) { this.leaveValue = value; this.update(this.leaveValue); } private leaveValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.leaveValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.leaveValue = true; this.update(true); } private update(value: boolean) { if (this.libService.leaveButton.getValue() !== value) { this.libService.leaveButton.next(value); } } } /** * The **participantsPanelButton** directive allows show/hide the participants panel toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarParticipantsPanelButton], ov-toolbar[participantsPanelButton]' }) export class ToolbarParticipantsPanelButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarParticipantsPanelButton(value: boolean) { this.participantsPanelValue = value; this.update(this.participantsPanelValue); } /** * @ignore */ @Input() set participantsPanelButton(value: boolean) { this.participantsPanelValue = value; this.update(this.participantsPanelValue); } private participantsPanelValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.participantsPanelValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.participantsPanelValue = true; this.update(true); } private update(value: boolean) { if (this.libService.participantsPanelButton.getValue() !== value) { this.libService.participantsPanelButton.next(value); } } } /** * The **chatPanelButton** directive allows show/hide the chat panel toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarChatPanelButton], ov-toolbar[chatPanelButton]' }) export class ToolbarChatPanelButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarChatPanelButton(value: boolean) { this.toolbarChatPanelValue = value; this.update(this.toolbarChatPanelValue); } /** * @ignore */ @Input() set chatPanelButton(value: boolean) { this.toolbarChatPanelValue = value; this.update(this.toolbarChatPanelValue); } private toolbarChatPanelValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.toolbarChatPanelValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.toolbarChatPanelValue = true; this.update(true); } private update(value: boolean) { if (this.libService.chatPanelButton.getValue() !== value) { this.libService.chatPanelButton.next(value); } } } /** * The **activitiesPanelButton** directive allows show/hide the activities panel toolbar button. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * * * @internal */ @Directive({ selector: 'ov-videoconference[toolbarActivitiesPanelButton], ov-toolbar[activitiesPanelButton]' }) export class ToolbarActivitiesPanelButtonDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarActivitiesPanelButton(value: boolean) { this.toolbarActivitiesPanelValue = value; this.update(this.toolbarActivitiesPanelValue); } /** * @ignore */ @Input() set activitiesPanelButton(value: boolean) { this.toolbarActivitiesPanelValue = value; this.update(this.toolbarActivitiesPanelValue); } private toolbarActivitiesPanelValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.toolbarActivitiesPanelValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.toolbarActivitiesPanelValue = true; this.update(true); } private update(value: boolean) { if (this.libService.activitiesPanelButton.getValue() !== value) { this.libService.activitiesPanelButton.next(value); } } } /** * The **displaySessionName** directive allows show/hide the session name. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarDisplaySessionName], ov-toolbar[displaySessionName]' }) export class ToolbarDisplaySessionNameDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarDisplaySessionName(value: boolean) { this.displaySessionValue = value; this.update(this.displaySessionValue); } /** * @ignore */ @Input() set displaySessionName(value: boolean) { this.displaySessionValue = value; this.update(this.displaySessionValue); } private displaySessionValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.displaySessionValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.displaySessionValue = true; this.update(true); } private update(value: boolean) { if (this.libService.displaySessionName.getValue() !== value) { this.libService.displaySessionName.next(value); } } } /** * The **displayLogo** directive allows show/hide the branding logo. * * Default: `true` * * It can be used in the parent element {@link VideoconferenceComponent} specifying the name of the `toolbar` component: * * @example * * * \ * And it also can be used in the {@link ToolbarComponent}. * @example * */ @Directive({ selector: 'ov-videoconference[toolbarDisplayLogo], ov-toolbar[displayLogo]' }) export class ToolbarDisplayLogoDirective implements AfterViewInit, OnDestroy { /** * @ignore */ @Input() set toolbarDisplayLogo(value: boolean) { this.displayLogoValue = value; this.update(this.displayLogoValue); } /** * @ignore */ @Input() set displayLogo(value: boolean) { this.displayLogoValue = value; this.update(this.displayLogoValue); } private displayLogoValue: boolean = true; /** * @ignore */ constructor(public elementRef: ElementRef, private libService: OpenViduAngularConfigService) {} ngAfterViewInit() { this.update(this.displayLogoValue); } ngOnDestroy(): void { this.clear(); } private clear() { this.displayLogoValue = true; this.update(true); } private update(value: boolean) { if (this.libService.displayLogo.getValue() !== value) { this.libService.displayLogo.next(value); } } }