import { MatTooltipModule } from '@angular/material/tooltip'; import { NgModule, ModuleWithProviders } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ReactiveFormsModule } from '@angular/forms'; import { FlexLayoutModule } from '@angular/flex-layout'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatDialogModule } from '@angular/material/dialog'; import { MatIconModule } from '@angular/material/icon'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatSliderModule } from '@angular/material/slider'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatInputModule } from '@angular/material/input'; import { MatFormFieldModule } from '@angular/material/form-field'; import { DragDropModule } from '@angular/cdk/drag-drop'; import { FileUploadQueueComponent } from './components/file-upload-queue.component'; import { FloatActionButtonComponent } from './components/float-action-button.component'; import { FileViewerComponent } from './components/file-viewer.component'; import { ExpansionPanelComponent } from './components/expansion-panel.component'; import { BinaryViewerComponent } from './components/file-viewer/binary-viewer.component'; import { DocumentViewerComponent } from './components/file-viewer/document-viewer.component'; import { ImageViewerComponent } from './components/file-viewer/image-viewer.component'; import { SoundViewerComponent } from './components/file-viewer/sound-viewer.component'; import { VideoViewerComponent } from './components/file-viewer/video-viewer.component'; import { BottomSheetService } from './services/bottom-sheet.service'; import { ClipboardService } from './services/clipboard.service'; import { DialogService } from './services/dialog.service'; import { SnackBarService } from './services/snack-bar.service'; import { SplashScreenService } from './services/splash-screen.service'; import { ClickOutsideDirective } from './directives/click-outside.directive'; import { FileUploadForDirective } from './directives/file-upload-for.directive'; import { ImageDirective } from './directives/image.directive'; import { CdkVirtualScrollViewportPatchDirective } from './directives/cdk-virtual-scroll-viewport-patch.directive'; import { AlertDialogComponent } from './dialogs/alert.dialog.component'; import { ConfirmDialogComponent } from './dialogs/confirm.dialog.component'; import { BytesPipe } from './pipes/bytes.pipe'; import { LinefeedToHtmlPipe, HtmlToLinefeedPipe } from './pipes/linefeed.pipe'; import { DateToStringForChatRoomListPipe, DateToStringFormatPipe } from './pipes/dates.pipe'; import { SecondsToMinutesPipe } from './pipes/seconds-to-minutes.pipe'; import { LinkyPipe } from './pipes/linky.pipe'; import { StickerSelectorComponent } from './components/sticker-selector.component'; import { MessageEditorComponent } from './components/message-editor.component'; import { MatTabsModule } from '@angular/material'; const COMPONENTS = [ FileUploadQueueComponent, FloatActionButtonComponent, FileViewerComponent, ExpansionPanelComponent, StickerSelectorComponent, MessageEditorComponent, BinaryViewerComponent, DocumentViewerComponent, ImageViewerComponent, SoundViewerComponent, VideoViewerComponent ]; const DIALOGS = [AlertDialogComponent, ConfirmDialogComponent]; const DIRECTIVES = [ ClickOutsideDirective, FileUploadForDirective, ImageDirective, CdkVirtualScrollViewportPatchDirective ]; const PIPES = [ BytesPipe, LinefeedToHtmlPipe, HtmlToLinefeedPipe, DateToStringForChatRoomListPipe, DateToStringFormatPipe, SecondsToMinutesPipe, LinkyPipe ]; const SERVICES = [ BottomSheetService, ClipboardService, DialogService, SnackBarService, SplashScreenService ]; @NgModule({ imports: [ CommonModule, ReactiveFormsModule, FlexLayoutModule, MatButtonModule, MatCardModule, MatDialogModule, MatIconModule, MatInputModule, MatProgressBarModule, MatSliderModule, MatSnackBarModule, MatToolbarModule, MatTooltipModule, MatTabsModule, MatFormFieldModule, DragDropModule ], exports: [...COMPONENTS, ...DIRECTIVES, ...PIPES], declarations: [...COMPONENTS, ...DIALOGS, ...DIRECTIVES, ...PIPES], entryComponents: [...DIALOGS] }) export class UCapUiModule { public static forRoot(): ModuleWithProviders { return { ngModule: UCapUiModule, providers: [...SERVICES] }; } }